ちなみに僕はPlack/PSGIをまともに触ったことがありません。「バカでもわかるPlack/PSGI - JPerl Advent Calendar 2009」を読んで、
「へえ、そういうものがあるんだねえ(棒読み)」
などと曰う程度にしか知らないという状態です。
まあでも今のところ、オレオレWAFをこさえるつもりなど毛頭ありません。
よって、この辺は概念だけ知ってれば良いかな、と高を括っている訳です。
前提条件
これ以降は以下のソフトウェアがインストール済みである前提で書いていきます。また、既にCatalyst 5.8.xに対応したCatalystアプリが用意できているものとします。
もしなければ、今すぐ作って下さい。NOW!!
# catalyst.pl YellowCat以降、このCatalystアプリの事をYellowCatと呼びます。
モジュールのインストール
cpanmで以下のモジュールをインストールします。- Plack (本当に必要か分かりませんが)
- Catalyst::Engine::PSGI
- Starman
- Server::Starter
- Net::Server::SS::PreFork
- Module::Install::ReadmeMarkdownFromPod
# cpanm Module::Install::ReadmeMarkdownFromPod Plack Catalyst::Engine::PSGI Starman Server::Starter Net::Server::SS::PreForkこれらのインストールができればOKです。
2010/11/1 追記
Module::Install::ReadmeMarkdownFromPodも必要になった(か、元々必要だった?)様ですね。
一緒にインストールしないと、Starmanのインストール時にコケてしまいます。
Fetching http://search.cpan.org/CPAN/authors/id/M/MI/MIYAGAWA/Starman-0.2007.tar.gz ... OK Configuring Starman-0.2007 ... OK ==> Found dependencies: HTTP::Parser::XS Fetching http://search.cpan.org/CPAN/authors/id/K/KA/KAZUHO/HTTP-Parser-XS-0.10.tar.gz ... OK Configuring HTTP-Parser-XS-0.10 ... N/A ! Configure failed for HTTP-Parser-XS-0.10. See /root/.cpanm/build.log for details. ! Bailing out the installation for Starman-0.2007. Retry with --prompt or --force.
起動ファイル「./script/yellowcat.psgi」を作る
いきなりpsgiという拡張子のファイルが出てきますが、これはPSGI用の起動ファイルというところでしょうか。まあ今はあまり気にせず、「起動に必要なファイル」とだけ覚えておけば良いと思います。
# cd YellowCat # ./script/yellowcat_create.pl PSGIこれで./script/yellowcat.psgiができました。
YellowCatをStarmanで起動する
Server::Starterに付属のスクリプトstart_serverを使ってstarmanを起動します。起動には、「./script/yellowcat.psgi」が必要になります。
# start_server --port 4000 -- starman --workers 8 ./script/yellowcat.psgi
あとはブラウザで4000番ポートにアクセスすれば、YellowCatからのレスポンスを得ることができます。
2010-07-05 追記 うまく動かない時
こんなエラーが出てうまく起動出来ない場合があるようでして。Error while loading ./script/myapp.psgi: Can't locate YellowCat.pm in @INC (@INC contains: /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/5.8.8 .) at ./script/yellowcat.psgi line 4. BEGIN failed--compilation aborted at ./script/yellowcat.psgi line 4.要するに、目の前にあるYellowCat.pmが見つけられない、そんなド近眼系女子のような振る舞いをしているんですね。
そんな時は一手間かけて./script/yellowcat.psgiを編集し、YellowCat.pmの在り処を教えてあげましょう。
#!/usr/bin/env perl
use strict;
use warnings;
use lib ( "/path/to/YellowCat/lib" );
use YellowCat;
YellowCat->setup_engine('PSGI');
my $app = sub { YellowCat->run(@_) };
ちなみに、FindBinを使って以下の様に書こうとしたところ、FindBinに怒られました。#!/usr/bin/env perl use strict; use warnings; use FindBin; use lib ( "$FindBin::Bin/../lib" ); use YellowCat; YellowCat->setup_engine('PSGI'); my $app = sub { YellowCat->run(@_) };たぶん、指定先パスが異なるためと思われますが、深くツッこんで調べていないので、今のところ原因は不明です。
0 件のコメント:
コメントを投稿