アーカイブ2008年7月11日Win32版Apache+FastCGIでMT環境を構築する前回に引き続きWin32版Apache関係のTipsを書いていきたいと思います。4.2が正式版になる予定ですが、MT4.2において進化した機能のひとつがFastCGI対応です。これまでもFastCGI上で動作させることは可能だったのですが、安定性など不安要素があり、簡単にお勧めできる手法ではありませんでした。今回MTOSでの成果が取り込まれたことにより、いくつかの既知の制限事項は残しているものの、安定性の問題はクリアされたようです。そのため今回のバージョンアップを機に、FastCGI環境を試したいという方もいるかと思います。Typeを動作させる方法について、いくつか書いておきたいと思います。Apache2.xにおいて、FastCGIのモジュールは2種類(mod_fastcgi/mod_fcgid)あり、そのどちらでも動作します。Wikiに書かれている方法をはじめ、Web上に多数の事例がありますが、ここでは、私がいつも使っている環境、つまり前回紹介した方法2の環境を、mod_fastcgiを使った環境へ移行させる方法を書きたいと思います。前提として、すでに前回の方法2、つまりperl.exeの位置を変えることでMTのshebang行を変えることなく動作するAapche2.x環境が稼動しているものとします。PerlモジュールをインストールするFastCGIでPerlスクリプトを動作させるためにはCGI::FastFCGI以上2つのモジュールが必要となります。CGI::FastはActivePerlには最初から導入されていますので、ここではFCGIをインストールします。「ファイル名を指定して実行」で次のコマンドラインを実行してください。FCGIこれでPerl環境の準備は完了です。mod_fastcgiをインストールする次にApacheのモジュールであるmod_fastcgiをインストールします。mod_fastcgiは公式サイトからダウンロードできます。mod_fastcgi-2.4.6-AP22.dllが現在(2008年7月時点)での最新であるようです。ダウンロードしたmod_fastcgi-2.4.6-AP22.dllをそのままApacheのmodulesフォルダに移動します。次にこのモジュールを読み込むようhttpd.confに設定を追加します。modules/mod_fastcgi-2.4.6-AP22.dllあわせてmod_fastcgiの動作設定を行っておきます。.fcgi</IfModule>この4行を追加します。FastCGIConfigディレクティブの部分が長くなっていますが、mod_fastcgiの動作を決める部分となりますので、多少解説します。PERL5LIB=C:/Perl/lib;C:/Perl/site/lib前回の方法2ではPerlにライブラリパスを指定するためにSetEnvディレクティブを用いていましたが、mod_fastcgiは、この設定を引き継ぎませんので、再度指定する必要があります。-autoUpdatemod_fastcgiを使う理由のひとつでもあるのですが、FastCGIで起動したスクリプトが更新された場合に現在のインスタンスを終了し、新しいインスタンスを生成します。Typeでは、プラグインの入れ替えを行った場合や、設定を変更した場合に、再起動の必要があるため、根本的な解決ではないものの、この機能が大変有効です。120通信待ちを行う秒数を設定します。再構築の際など、長時間待つ恐れがあるので、デフォルトの30秒では短すぎる場合があります。3600processSlackやmaxProcessesなどのポリシーにしたがってインスタンスの整理を行う間隔を秒数で指定します。デフォルトは300秒です。31つのFastCGIサーバー(スクリプト)から生成されるインスタンスの最大数。デフォルトは10なのですが、MTはかなり大きいスクリプトで、1インスタンスのメモリ使用量もかなりありますので、最初は少なめにしておき、適宜増減するのがよいかと思います。15全体で存在できるインスタンスの最大数。デフォルトは50なのですが、maxClassProcessesと同様の理由で少なくしています。増減するのがよいかと思います。autoUpdateオプションについて:上に書いたとおり、便利なautoUpdateオプションではあるのですが、タイムスタンプを比較するという動作のため(?)、FastCGIServerディレクティブを用いてプロセスを起動するためのコマンドラインを定義した場合には、この機能が無効となります。ドキュメントにも記載がないため、autoUpdateオプションとFastCGIServerディレクティブを併用している設定例をみかけますが、この場合FastCGIServerディレクティブが優先されます。fastcgi-script</FilesMatch></IfModule></Directory>この7行を追加します。「/path/to/mt」の部分は、MTのアプリケーションディレクトリとなるよう適宜書き換えてください。.htaccessに設定を記述する場合には、前後各1行(Directoryディレクティブ)は不要です。これで設定は完了です。Typeのもうひとつの制限事項として、mod_perl/FastCGI環境下において、バックグラウンドでのビルドを行うことができません。この機能はLaunchBackgroundTasksという環境変数で有効・無効の切り替えができるようになっているのですが、MT4ではmod_perl/FastCGI環境であれば無条件に無効となります。この制限を解消するためにMT-Dispatchプラグインという便利なプラグインが公開されているのですが、残念なことにActivePerl環境下では動作しません。動作あとはApacheを起動すれば、FastCGI環境で動くようになっているはずです。タスクマネージャなどを起動してMTへのアクセス時にperl.exeが起動されているかを確認してください。起動に失敗した場合やCGIの動作に問題があった場合、その多くはApacheのエラーログに出力されますので、これを参考に対処するとよいでしょう。メモリ使用量が増え続けるなど、動作に不安がある場合には、定期的にスクリプトのタイムスタンプを更新する仕組みを用意して、定期的にFastCGIサーバーの再起動を行うようにすれば安心です。modules/mod_fastcgi-2.4.6-AP22.dllあとはApacheを再起動すれば元の環境に戻ります。私自身は、ローカルにmt.cgiだけをFastCGI化した環境を作って、MTテンプレートの編集環境にしています。管理画面がさくさく動くので大変快適です。調子にのって複数の環境を作っていくとメモリ圧迫の原因にもなりますので、タスクマネージャなどでメモリの使用量を確認するとよいでしょう。Typeによるサイト構築やプラグイン開発、iPhone・Windows等のアプリケーション開発業務を行っています。お問い合わせはこちらまで。2008年7月23日MacOSX用のアプリケーションを簡単に作るワザMac用のアプリケーションは開発するのが難しいとよく言われます。実際、難しいですし、MacOSXでの開発で使うObjective-Cも非常に変態的個性的で習得の壁も高いような気がします。最近では少し事情も変わってきてさくさくっと開発できるようにもなってきています(もちろん、その先には大きな壁が立ちはだかってはいるのですけど)。今回は、CoreDataというフレームワークを使って、コードを書かずに(一行も!)アプリケーションを作ってみます。魔法のようにアプリケーションが完成するので、ぜひ、実際に手を動かしてみてください。Xcodeを起動するまず、開発環境であるXcodeを起動します。HDD内のDeveloper/Applicationsの中に入っています。Xcodeをインストールしていない場合は再度インストールを行う必要があります。以下のリンク先のドキュメントを参考にして、インストールしてください。Xcodeインストールガイドについてプロジェクトの作成プロジェクトを作成します。ファイルメニューから、「新規プロジェクト」を選択します。新規プロジェクトアシスタントのダイアログが表示されます。Application」を選択して、「次へ」をクリックします。今回はプロジェクト名を「IDMemo」とします。IDとパスワードの管理アプリケーションを作ろうと思っています。最後に「完了」をクリックします。モデルを作るこれで、プロジェクトが作成できたので、さっそく、このアプリケーションのデータ構造を作ります。ID管理アプリケーションなので、とりあえず、IDとパスワードを保存できるようにしましょう。プロジェクトウインドウから、「IDMemo_DataModel.xcdatamodel」を選択して、ダブルクリックします。左上のエンティティのリストの下の「+」をクリックして、エンティティを追加します。追加したら、名前を「Item」としてください。続いて、プロパティを追加します。プロパティのリストの下の「+」をクリックするとポップアップメニューが出てくるので、「属性を追加」を選択します。名前を「id」に、データ型を「文字列」にします。同様にパスワードも追加しましょう。名前を「password」に、データ型を「文字列」にします。これで、データ構造が定義できました。ユーザインタフェースを作る続いて、このデータ構造に基づいて、データ入力およびデータ一覧の画面を作って行きます。ここからが、「魔法」です。プロジェクトウインドウから、「MainMenu.nib(Xcodeのバージョンによっては、MainMenu.xibとなっている場合もあります)」を選択してダブルクリックします。Builderで開かれます。この中から、「Window」を選択して、ダブルクリックします。何も部品のない空のウインドウが開かれます。ここに、先ほど作った「Item」モデルを「Option」キーを「押しながら」、このウインドウにドラッグ&ドロップします。このようなダイアログが表示されるので、いくつか、質問に答えます。Fields」、「Add/Remove」の全てにチェックをつけます。「Next」をクリックします。次の画面では何も変更せずに、「Finish」をクリックします。これで、ユーザインタフェースが完成してしまいます!実行してみるでは、実際にアプリケーションを動作させて見ましょう。プロジェクトウインドウが、モデルデザインウインドウの上部にある「ビルドして進行」ボタンをクリックします。ファイルを保存するか聞かれるので、「すべてを保存」ボタンをクリックしてください。これで、ビルドが始まり、アプリケーションが作られます。実際にデータを追加できますし、検索もできます。これだけの操作でひとつのアプリケーションが完成してしまうのは驚きです。使いやすくUIを修正したり、属性として「タイトル」を追加してみたりなど、自分なりの改造も試してみてください。v1.0.0お気楽メッセージングハブWassrに、エントリーのタイトルとパーマリンクのTinyURLを投稿するプラグインを作ってみました。エントリーを編集、保存すると、Wassrに投稿されます。よろしければ、お試しください。Typeによるサイト構築やプラグイン開発、iPhone・Windows等のアプリケーション開発業務を行っています。お問い合わせはこちらまで。