なるべくカンタンに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]