Windows Server 2008 の IIS7 で Catalyst (Perl On Rails) を動かす

概要

Perl On Rails といわれる Perl のフレームワーク Catalyst、アプリケーションを作成すると自動で雛形ができ、fastcgi 用のサーバも作成されています。apache や lighttpd の例は多いと思いますが、IIS6 や IIS7 でも利用することができたので手順を記載しておきます。本投稿は IIS7 の例です。

手順

まず、あらかじめ足りないモジュールなどがないか確認しておきます。問題なければ、OK と返されます。@INC ~のようなメッセージが表示されたならば足りないモジュールがあるので適時インストールします。ここで問題があるとうまく動かないので実施しておくことをおすすめします。


C:\Users\administrator.NEOFLOW> perl -wc C:\inetpub\wwwroot\neoflow.jp\Neoflow-Web\script\neoflow_web_fastcgi.pl

次に、inetsrv フォルダへ移動して appcmd.exe による fastCgi の設定を行います。たったの 2 行ですが、GUI からやると結構面倒だと思います。perl のパスやスクリプトの名前を環境に合わせるだけで使えるかと思います。


C:\Users\administrator.NEOFLOW>cd %windir%\system32\inetsrv

C:\Windows\System32\inetsrv>appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='c:\perl\bin\perl.exe',arguments='C:\inetpub\wwwroot\neoflow.jp\Neoflow-Web\script\neoflow_web_fastcgi.pl -e',maxInstances='4',idleTimeout='300',activityTimeout='30',requestTimeout='90',instanceMaxRequests='1000',protocol='NamedPipe',flushNamedPipe='False']" /commit:apphost
構成変更を構成コミット パス "MACHINE/WEBROOT/APPHOST" の "MACHINE/WEBROOT/APPHOST" のセクション "system.webServer/fastCgi" に適用しました

C:\Windows\System32\inetsrv>appcmd.exe set config "neoflow.jp" -section:system.webServer/handlers /+"[name='CatalystFastCGI',path='*',verb='GET,HEAD,POST',modules='FastCgiModule',scriptProcessor='c:\perl\bin\perl.exe|C:\inetpub\wwwroot\neoflow.jp\Neoflow-Web\script\neoflow_web_fastcgi.pl -e',resourceType='Unspecified',requireAccess='Script']" /commit:apphost
構成変更を構成コミット パス "MACHINE/WEBROOT/APPHOST" の "MACHINE/WEBROOT/APPHOS
T/www.neoflow.jp" のセクション "system.webServer/handlers" に適用しました

あとは、同じように登録していくだけです。


appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='c:\perl\bin\perl.exe',arguments='C:\inetpub\wwwroot\neoflow.jp\Neoflow-AtomPub\script\neoflow_atompub_fastcgi.pl -e',maxInstances='4',idleTimeout='300',activityTimeout='30',requestTimeout='90',instanceMaxRequests='1000',protocol='NamedPipe',flushNamedPipe='False']" /commit:apphost

appcmd.exe set config "atompub.neoflow.jp" -section:system.webServer/handlers /+"[name='CatalystFastCGI',path='*',verb='GET,HEAD,POST',modules='FastCgiModule',scriptProcessor='c:\perl\bin\perl.exe|C:\inetpub\wwwroot\neoflow.jp\Neoflow-AtomPub\script\neoflow_atompub_fastcgi.pl -e',resourceType='Unspecified',requireAccess='Script']" /commit:apphost

In english locale


cd %windir%system32inetsrv

appcmd.exe set config -section:system.webServer/fastCgi /+”[fullPath=’c:perlbinperl.exe’,arguments=’C:inetpubwwwrootneoflow.jpNeoflow-Webscriptneoflow_web_fastcgi.pl -e’,maxInstances=’4′,idleTimeout=’300′,activityTimeout=’30’,requestTimeout=’90’,instanceMaxRequests=’1000′,protocol=’NamedPipe’,flushNamedPipe=’False’]” /commit:apphost
Applied configuration changes to section “system.webServer/fastCgi” for “MACHINE
/WEBROOT/APPHOST” at configuration commit path “MACHINE/WEBROOT/APPHOST”

appcmd.exe set config “neoflow.jp” -section:system.webServer/handlers /+”[name=’CatalystFastCGI’,path=’*’,verb=’GET,HEAD,POST’,modules=’FastCgiModule’,scriptProcessor=’c:perlbinperl.exe|C:inetpubwwwrootneoflow.jpNeoflow-Webscriptneoflow_web_fastcgi.pl -e’,resourceType=’Unspecified’,requireAccess=’Script’]” /commit:apphost
Applied configuration changes to section “system.webServer/handlers” for “MACHIN
E/WEBROOT/APPHOST/neoflow.jp” at configuration commit path “MACHINE/WEBROOT/APPHOST”

参考

Catalyst Contributors. “Catalyst::Manual::Deployment::IIS::FastCGI – search.cpan.org”. CPAN. 更新日付. http://search.cpan.org/~bobtfish/Catalyst-Manual-5.9003/lib/Catalyst/Manual/Deployment/IIS/FastCGI.pod,(accessed 2014-08-02).
Microsoft. “Appcmd.exe を起動する (IIS 7)”. TechNet. 更新日付. http://technet.microsoft.com/ja-jp/library/cc730918(v=ws.10).aspx, (参照 2014-08-02).

スポンサーリンク