MT5.2へのバージョンアップおよびPSGI対応

| コメント(0) | トラックバック(0)

サイト引っ越しと同時に行ったMTのバージョンアップおよびPSGI化に関する個人的なメモ。

公式おすすめはnginx+Starmanと言う構成だったが、(現状使っていないが)ダイナミックパブリッシング対応していない等の制約があるようなので、とりあえず以下のような構成にしてみた。

  • apache (フロントエンドサーバ兼リバースプロキシ)
  • Starman (MT実行用バックエンドサーバ)
  • Supervisor (Starman実行制御)

正直Perl関連には全く疎いので以下のサイトなどを参考にさせていただいた。

ちなみにnginx+Starman押しの割にまともなドキュメントが用意されていないのはどうかと思わないでもない。もっともFastCGIの時も(mod_perlの時も?)ドキュメントが整備されたのはかなり後になってからなので、今後に期待と言うこと感じか。

前提としてMT5.2が導入済みとなっていること。当たり前だが作業はroot権限で実施する。

Starmanを含むPSGI環境は、cpanmと言うコマンドで導入するらしいのだがそもそもこのコマンド自体入っていないので導入。色々調べたがソースビルドは避けたかったので、確か以下のコマンドで導入したはず。

cpan App::cpanminus

後は以下のようにすれば導入できるのだが、ログファイルにモジュール不足が通知されるため、内容を確認しつつログファイルが出力されなくなるまで不足モジュールを追加していく。

cpanm Task::Plack
cpanm Starman    (もしかすると不要かも?)

導入が終わったらStarmanでMTを動かすため以下の設定を行う。

  • MT実行用スクリプト作成
  • mt-config.cgi修正
  • pidファイル格納ディレクトリ作成

MT実行用スクリプト(mtrun.sh(何でもいい))は、MTインストール先やこのスクリプト自身の格納場所にもよるが今回は以下のようにしてみた(他のサイトにある物の切り貼り)。

#!/bin/sh
ROOT=/var/www/html
MTDIR=$ROOT/mt PID=$ROOT/psgi/mt.pid PSGI=./mt.psgi cd $MTDIR /usr/local/bin/starman -l 127.0.0.1:5000 --pid $PID $PSGI

mt.pidはプラグインなどの変更を検知したMTがStarmanの停止を試みるためにプロセスIDを受け渡すファイルなので、mt-config.cgiにこのファイルの設定「PIDFilePath」を追加。

PIDFilePath /var/www/html/psgi/mt.pid

指定したpidファイルを格納するためのディレクトリ(この場合は/var/www/html/psgi)を作成。ちなみにWeb経由でこのファイルをのぞかれるのはセキュリティ的に余り好ましくないと思われるので、本当は別のところに作ればいいのだが、今回は面倒なので見えないようパーミッションや.htaccessを仕掛けて逃げた。

なお、後のSuperverの設定も含め、MTの実行ユーザについては意識しておく必要がある。実際、MTの実行ユーザはapacheでなくStarmanを実行するユーザになる事に気づかず、エントリ投稿時にはまった。

Supservisorのインストールは普通にyumで実行。SupervisorはStarmanに対する起動時の実行とStarmanのプロセスが落ちたときの再実行処理をやってくれる。

yum install supervisor

Supervisorの設定ファイル/etc/supervisord.confにStarman実行設定を追加。

[program:mt]
user=apache
command=/var/www/html/psgi/mtrun.sh
autostart=true
autorestart=true
stopsignal=QUIT

上にも書いたが、userに設定したユーザがStarmanの実行ユーザになるため、再構築などでMTがファイルを生成したりアップロードしたりするディレクトリに対して、このユーザの書き込み権限が必要となる。

Supervisor実行。

service supervisord start

自動実行設定も行っておく。

chkconfig supervisord on

httpd.confにリバースプロキシ設定を追加。

<IfModule mod_proxy.c>
ProxyPass /mt/mt-static/ !
ProxyPass /mt/ http://localhost:5000/mt/
ProxyPassReverse /mt/ http://localhost:5000/mt/
</IfModule>

apacheを再起動して完了。

トラックバック(0)

トラックバックURL: http://orima.jp/mt/mt-tb.cgi/7667

コメントする

月別 アーカイブ

ウェブページ

Powered by Movable Type 6.0.3

このブログ記事について

このページは、orimaが2012年10月 1日 01:11に書いたブログ記事です。

ひとつ前のブログ記事は「MT5.2はモジュールキャッシュの動作がおかしい?」です。

次のブログ記事は「Starman再起動設定追加」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。