makoto_fujimotoのblog

株式会社進角
代表 藤本信のブログです
どうぞよろしくお願いします

みんな大好きな()WordPressのインストールですが、非エンジニアやセキュリティに詳しくない人が設定することが多い傾向にあり、ファイルのパーミションやオーナー・グループが不適切な状態になっていることがよくあります。特にWebから更新するファイルやフォルダ設定が777になっていたり、1つのアカウントを複数人で共有して運用していることも多いようです。

以下は不必要なパーミションを与えず、複数人がそれぞれのアカウントで共同作業ができるようにWordPressをインストールする例です。ユーザーをすべて同じグループに所属させ、新規でファイルをアップロードする際には自動的にグループとパーミション(664)が設定されます。そうすることで別のメンバーが作成したファイルを共同編集することが可能になります。

■サブドメインのパーミション設定
$ su
# mkdir /var/www/vhosts
# mkdir /var/www/vhosts/hoge.jp
# mkdir /var/www/vhosts/hoge.jp/html
# cd /var/www/vhosts/hoge.jp
# chmod 2775 .
# chmod 2775 html
# groupadd hoge-dev
# chgrp hoge-dev .
# chgrp hoge-dev html
# vi /etc/group
 関係者をhoge-devに追加(apacheユーザも)
# vi /home/User/.bashrc
 umask 002を追加 (各ユーザに)
FTPを使用する場合もumaskが002になるようにしておきます。

ここらでApacheの設定をしておきましょう

■Wordpressのインストール
/var/www/vhosts/hoge.jp/html直下に展開する方法
$ cd
$ mkdir wp
$ cd wp
 最新パッケージをダウンロード http://ja.wordpress.org/
$ gzip -d *.gz
$ tar xvf *.tar
$ cd wordpress
$ chgrp -R hoge-dev *
$ chmod -R g+w .
$ cp -pr * /var/www/vhosts/hoge.jp/html

■その他
/wp-adminには無慈悲なくらいアクセス制限を掛けましょう!

みんな大好き()Wordpressですが、Webサイトのエンタープライズ運用で必須とされているステージング(テスト)環境から本番環境へ正確にコンテンツ同期するスマートな方法があまり存在しないようです。

え!?公開予約機能を使って購読者アカウントでクライアントに事前確認させればいいって?
でも全体的なデザインやレイアウト改修を事前確認してもらうにはどうしたらいいんですかね?みなさんどうやって運用しているんでしょうか?

いろいろ調べていたらwordmoveというツールを見つけたので検証してみたところ、まあまあ問題なく使えそうなことがわかりましたので設定メモを残しておきます。wordmoveをざっと説明するとWordpress関連ファイルの物理コピーとデータベースのダンプ、変換、リストアを行ってくれるコマンドベースのユーティリティで、サーバの引っ越しにも用いられているようです。ちなみにrubyで作られています。

通常であればステージングサーバと本番サーバは別々の構成になると思いますが、このケースでは同一サーバ内でステージング用のサブドメインを同居させる方法としました。Wordpressはドキュメントルート直下にすでにインストール済みの状態を想定しています。

OS:CentOS 6.7
本番サイト
 www.test-wordmove.jp  /var/www/vhosts/www.test-wordmove.jp/html
 DB:www_wordmove
ステージングサイト
 stg.test-wordmove.jp  /var/www/vhosts/stg.test-wordmove.jp/html
 DB:stg_wordmove

以下設定手順

# yum install openssl-devel
# yum install rdoc

rubyの構築
CentOS6.xに標準のRubyはバージョンが古いようなのでソースから構築します。
$ cd
$ mkdir ruby
$ cd ruby
$ wget http://ftp.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0.tar.gz
$ gzip -d ruby-2.3.0.tar.gz
$ tar xvf ruby-2.3.0.tar
$ cd ruby-2.3.0
$ ./configure
$ make

rubyの動作確認
$ ./ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]

rubyのインストール
$ su
# make install

wordmoveのインストール
# gem install wordmove
動作確認
# wordmove --help

環境変数LANG=ja_JP.UTF-8を設定
# vi /etc/sysconfig/i18n

wordmoveの設定
$ cd
$ mkdir wordmove
$ cd wordmove/
$ wordmove init
  Movefileが生成されます。

Movefileの編集
$ vi Movefile
インシデントがとてもデリケートなので編集注意
-------------------------------------------------
local:  #こちらがステージングサイト
  vhost: "http://stg.test-wordmove.jp"
  wordpress_path: "/var/www/vhosts/stg.test-wordmove.jp/html" # use an absolute path here

  database:
    name: "stg_wordmove"
    user: "DBユーザー名"
    password: "DBパスワード"
    host: "127.0.0.1"

staging:  #こちらが本番サイト
  vhost: "http://www.test-wordmove.jp"
  wordpress_path: "/var/www/vhosts/www.test-wordmove.jp/html" # use an absolute path here

  database:
    name: "www_wordmove"
    user: "DBユーザー名"
    password: "DBパスワード"
    host: "127.0.0.1"
    # port: "3308" # Use just in case you have exotic server config

  exclude: #同期しないリスト
    - ".git/"
    - ".gitignore"
    - ".sass-cache/"
    - "node_modules/"
    - "bin/"
    - "tmp/*"
    - "Gemfile*"
    - "Movefile"
    - "wp-config.php"
    - "wp-content/*.sql"
    - ".htaccess"

  # paths: # you can customize wordpress internal paths
  #   wp_content: "wp-content"
  #   uploads: "wp-content/uploads"
  #   plugins: "wp-content/plugins"
  #   themes: "wp-content/themes"
  #   languages: "wp-content/languages"
  #   themes: "wp-content/themes"

  ssh:  #本番側のアカウント
    host: "localhost"
    user: "wordmoveを実行するユーザー"
  #   password: "password" # password is optional, will use public keys if available.
  #   port: 22 # Port is optional
    rsync_options: "--verbose" # Additional rsync options, optional
  #   gateway: # Gateway is optional
  #     host: "host"
  #     user: "user"
  #     password: "password" # password is optional, will use public keys if available.

  # ftp:
  #   user: "user"
  #   password: "password"
  #   host: "host"
  #   passive: true

# production: # multiple environments can be specified
#   [...]
-------------------------------------------------
この例ではlocalhostからlocalhostへsshのパスワード問合せが無いように設定されていることを前提としています。

実行テスト
ステージング側のWordpressに何らかの記事を更新
$ wordmove push --all -s (シミュレーションモード)
$ wordmove push --all
本番サイトで更新が反映されていれば成功です。

注意点
ステージング側のhtml/wp-content/にsqlのダンプファイルが残存してしまうので、セキュリティ的には消すような運用をしたほうがよさそうです。

運用課題
wordmoveはあくまでコマンドベースのユーティリティですので、cronで定期実行したりワンショットでスケジューリング行う必要があります。また同期したいタイミングで手動にて実行する必要があります。

ネットワーク制御が可能な動画デジタルサイネージを構築する場合に、C#などでがりがりWindowsネイティブコードを書いたり、レガシーなFlashで制作するのは少し荷が重いので既成品ソフトで対応できそうなモノを検証してみました。

まずWindows標準のメディアプレイヤーにもいくつかコマンドラインオプションが有るようですが、ローカル再生かつファイル指定程度しか対応していないので、そもそもリモート操作が出来ないということが分かりました。少し調べたところVLC media playerという、フリーの動画再生ソフトが豊富なコマンドラインオプションを実装していることが分かりましたのでこちらの方法をご紹介します。
VLC

(1) ソフトウェアパッケージの入手
http://www.videolan.org/vlc/

(2) VLCメディアプレーヤーのリモートコントロール設定
VLCを起動します
ツール>設定>設定の表示[すべて]>インターフェース
 メインインターフェース>
  拡張インターフェースモジュール
   WebとTelnetにチェック
 メインインターフェース>Lua
  Lua HTTP
   パスワード:*****(必須)
   ソースディレクトリ:
   ディレクトリインデックス:非チェック
  Lua Telnet
   ホスト  :localhost→192.168.123.10 (固定かDHCPで割り当てられているアドレス)
   ポート番号:4212(デフォルト)
   パスワード:*****(必須)

設定を行ったらVLCを再起動します。
 コマンドプロンプトのnetstatコマンドで8080と4212ポートがListenされていることを確認します。
 ファイアウォールで閉じられている場合は解放する必要があります。またリモート操作で応答が無い場合などは制御側PCからもからもポートチェックをしたほうがよいでしょう。


(3) 別マシンから動作確認
リモートマシンはPCでもLinuxでも可能です。
ブラウザにて操作する場合
 http://192.168.123.10:8080:/

TeratermによるTelnet接続の設定
VLC Teraterm 端末の設定
 送信時の改行:CR+LF
 エコーバックする

VLC Teraterm 新しい接続
 ポート:4212
 サービス:Telnet

VLC Teraterm ログイン

VLMコマンドの操作方法
 事前に再生PCに動画ファイルを用意する
  Telnetにログイン
  すぐに再生
  > add c:\movie\sample.mp4
  再生リストを作った後に再生
  > enqueue c:\movie\sample.mp4
  > play
  フルスクリーンにする
  > f
  コマンド一覧(help)
  > help

この様にtelnetプロトコルを使用して映像制御するスクリプトを組めば、簡易的なデジタルサイネージのリモート制御が可能となります。

(4) その他VLCの商用向け設定

再生ファイル名の非表示
ツール>設定>設定の表示[すべて]
 ビデオ>ビデオの一般的な設定
  ビデオにメディアタイトルを表示:非チェック


起動時にコントローラーを表示しない
ツール>設定>
 最小表示で起動:チェック


ファイルエラー等を表示しない
ツール>設定>設定の表示[すべて]>インターフェース
 対話的なインターフェース:非チェック

起動時にスタート画面を表示しないでデスクトップを表示する
タスクバー(右ボタン)>プロパティ>[タブ]ナビゲーション
 スタート画面
  サイン時または画面上~スタート画面ではなくデスクトップに移動する

待機中のカラーコーンを表示しない
ツール>設定>設定の表示[すべて]>インターフェース>メインインターフェース>Qt
 バックグラントコーン、またはアートの表示:非チェック

自動ログイン設定
netplwizを起動する
http://pc-karuma.net/windows-8-auto-sign-in/

プログラムの自動起動(win8.1)
C:\Users\ユーザーID\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
にアプリ(VLC)のショートカットをコピーする

このページのトップヘ