Skip to content

mt.psgiの起動

aklaswad edited this page Jun 10, 2012 · 1 revision

Table of Contents

必要要件

mt.psgiを動作させるためには、Plack/PSGI関連の多くのモジュールが必要となります。Task::Plack(関連モジュールを一括インストールするためのCPANモジュール)などを利用して、Plackの動作環境を整えてください。

    # cpanm Task::Plack

また、XMLRPCサーバー(mt-xmlrpc.cgi)の動作にはXMLRPC::Transport::HTTP::Plackモジュールが必要になります。

推奨PSGIサーバ

mt.psgiは、Starmanをリファレンス環境として開発がすすめられています。Starman(もしくは同等のprefork型PSGIサーバ)で安定した動作が期待できる一方、plackupのような一部のPSGIサーバでは、未修正の既知の問題が存在します。

内部HTTPリクエストでのデッドロック

plackupはリクエストを順次処理するシンプルなwebサーバ実装であるため、例えば内部のブログ記事に対するトラックバックを送信した場合などに、以下のようにデッドロックが発生します。

  • 送信側のプログラムコードでは、トラックバックのリクエストに対するレスポンスが帰ってくるまで処理がブロッキングされる
  • (同一スレッドで処理待ちとなる)トラックバック受信側は、送信側の処理が完了するまで、リクエストの処理が開始されない
現在のところ、この問題に対処する予定はありません。また、トラックバック以外の機能でも同様の問題が発生する可能性は考えられます。本番環境では、prefork型など、並列処理が可能なサーバの利用を推奨します。

必要な設定

PIDFilePath 環境変数

以下の様なアプリケーション全体の動作に関わるような設定変更を行った場合、mt.psgiはアプリケーションの再起動を試みます。

  • デバッグモードの変更
  • カスタムフィールドの追加/削除
実際には、上記作業が発生した時に、環境変数PIDFilePathで指定されたファイルに記述されているプロセスIDに対してSIGHUPを送出します。この動作を実現するため、Webサーバーのpidオプションを利用して保存先を指定し、かつ、mt-config.cgiにも同ファイルへのパスを追記してください。
 # then run starman
 $ starman --pid /var/run/mt.pid ./mt.psgi
Clone this wiki locally