なるべくカンタンにMovable Type 5.2の新しい高速な管理画面を試す方法(Apache+mod_proxy+PSGI)

今回はすでにMTが動作している環境をベースに、なるべく簡単にPSGIを導入して新しい高速な管理画面を試そうと思います。

nginxとか真新しいことはありませんが、今までのことはそのまま不自由なく出来つつ、新しく良い物を取り入れる方向で進めていきます。

まだPSGIに切り替えたばかりですが、管理画面のレスポンスはPHPのようにサクサク動きます。 再構築も18秒→6秒になりました。少し準備が大変ですがとてもオススメです。

で始まる記述はLinuxコマンド、他のものは設定ファイルの内容です。

環境

  • さくらVPS 2G
  • ドキュメントルート(/home/studiowd/public_html)
  • Movable Type 5.2(/home/studiowd/public_html/mt/以下)
  • Apache2(port: 80)

環境構築

cpanmの準備

必要なPerlモジュールを追加します。
今回はcpanmを使用してインストールをします。

	# curl -L http://cpanmin.us/ | perl - App::cpanminus

Plack/PSGI関連モジュールのインストール

Movable Typeが動作する環境に、下記のモジュールを追加でインストールしました。

  • Plack
  • CGI::PSGI
  • CGI::Emulate::PSGI
  • CGI::Compile
  • SOAP::Transport::HTTP::Plack
  • Starman
	# cpanm (上記CPANモジュール名)

PSGIの起動ファイルを作成

	# mkdir /home/studiowd/public_html/mt/psgi
	# vi /home/studiowd/public_html/mt/psgi/mt.run

	//mt.run
	#!/bin/sh

	ROOT=/home/studiowd
	MTDIR=$ROOT/public_html/mt
	PID=$MTDIR/psgi/mt.pid
	PSGI=./mt.psgi
	cd $MTDIR
	/usr/local/bin/starman -l 127.0.0.1:5000 --pid $PID $PSGI	

SuperVisorのインストール

StarmanをSuperVisor経由で起動します。

	# sudo yum install supervisor
	# sudo vi /etc/supervisord.conf

	[program:mt]
	user=studiowd
	command=/home/studiowd/public_html/mt/psgi/mt.run
	autostart=true
	autorestart=true
	stopsignal=QUIT
	log_stdout=true
	log_stderr=true
	logfile=/home/studiowd/public_html/mt/psgi/psgi.log

	# sudo service supervisord start

mt-config.cgiの設定

mt-configにpidの記述を追記します。 pidファイルの場所は、[PSGIの起動ファイルを作成]のものと合わせます。

	# vi /home/studiowd/public_html/mt/mt-config.cgi
	
	//mt-config.cgi
	PIDFilePath /home/studiowd/public_html/mt/psgi/mt.pid

リバースプロキシの設定

今回はApacheへのアクセスのうちMTの管理画面へのアクセスのみ、Starmanで処理をします。そのため振り分けにmod_proxyを使用します。httpd.confの最下部に以下の記述を追加します。追加が終わりましたら、httpdを再起動します。

	# vi /etc/httpd/conf/httpd.conf
	
	
		ProxyPass /mt/mt-static/ !
		ProxyPass /mt/ http://localhost:5000/mt/
		ProxyPassReverse /mt/ http://localhost:5000/mt/
	

	# service httpd restart

MTにアクセスして、PSGIで動作しているかの確認をする

システム→ツール→システム情報のサーバモデルがPSGIになっていれば完了です。

参考サイト

読む順番は上から順がオススメです。

  • さくらのVPS+Apache+PSGIサーバーでMT5.2のmt.psgiを動かす(環境構築編)[http://www.skyward-design.net/blog/archives/000140.html]
  • MT5.2へのアップグレードとPSGIでの運用開始[http://www.skyward-design.net/blog/archives/000144.html]
  • MovableType 5.2β で nginx + PSGIを試す(Starman+Supervisorでデーモン化[http://blog.takeyu-web.com/entry/2012/07/06/175950]
  • Apache+mod_proxy+PSGIでMovable Type 5.2を動かす[http://www.h-fj.com/blog/archives/2012/08/22-110737.php]
  • FastCGIと比べて約1.4倍のスピード! 開発中のmt.psgiを使ってみた[http://www.skyarc.co.jp/engineerblog/entry/mt_psgi.html]
  • Ja dev bootstrap mt psgi ※PIDの設定が必要な理由[https://github.com/movabletype/Documentation/wiki/Ja-dev-bootstrap-mt-psgi]