2006-12-23
■ [catalyst][server]さくらインターネットのCGIでCatalystを動かす設定(完全版?)

さくらインターネットでCatalystを動かす設定 - LAPISLAZULI HILL#Catalyst - Catalystグループの続きです.あれから半分あきらめていたんですが,ようやく思い通りのURLで公開できるようになったのでメモメモ
ぶっちゃけるとCatalyst Advent Calendar - Day 10の方法そのまんまですので,そちらを参考にしてもよし
下準備
- CatalystはCPANでインストール済
参考:レンタルサーバでPlagger #0 CPAN設定 - LAPISLAZULI HILL#diary - アプリケーションの場所はどこでもok
userディレクトリのwww以下でないところをオススメしておきます
CPANモジュールは~/perl/lib(/home/username/perl/lib)がインストール先,アプリケーションは~/MyApp(/home/username/MyApp)に作成したとして書きます
script/myApp_cgi.plの書き換え
apacheの環境変数を書き換えようと思ったんですが,できなかったのでuse libにmoduleの検索パスを追加します
【~/MyApp/script/myapp_cgi.pl】
use lib '/home/username/perl/lib', "$FindBin::Bin/../lib";
書き換えてから,動作を確認してみました
> perl myapp_cgi.pl
@INC関係のエラーが出てなければ成功しているはずです
シンボリックリンクの作成
apache公開ディレクトリにscriptディレクトリのシンボリックリンクを張ります
> cd ~/www > ln -s ~/MyApp/script script
.htaccessの作成
作成するのは~/www/.htaccessです.http://username.sakura.ne.jp/でアクセスできるように設定します.もちろんドメインでアクセスできるように設定されていればそのドメインでok
AddHandler cgi-script .pl RewriteEngine On RewriteCond %{REQUEST_URI} !^/?script/myapp_cgi.pl RewriteRule ^(.*)$ script/myapp_cgi.pl/$1 [PT,L]
http://username.sakura.ne.jp/にアクセスして動作していることを確認します
----
結局mod_rewriteの設定をよくわかってなかったのが敗因ですね.今後の課題としては複数のアプリケーションの稼働とサブドメインでの運用でしょうか
(追記)
こんなふうにするとディレクトリを分けてやれば2つでもいけました
それぞれ~/www/myappと~/www/myapp2の下にscriptディレクトリのシンボリックリンク張ってます
AddHandler cgi-script .pl RewriteEngine On RewriteCond %{REQUEST_URI} !^/myapp2/?script/myapp2_cgi.pl RewriteRule ^myapp2/(.*)$ myapp2/script/myapp2_cgi.pl/$1 [PT,L] RewriteCond %{REQUEST_URI} !^/myapp/?script/myapp_cgi.pl RewriteRule ^myapp/(.*)$ myapp/script/myapp_cgi.pl/$1 [PT,L]
2006-11-21
■ [catalyst][server]DBIC系のPurePerlでのインストールに挫折気味

すべてDLしてコピー.その際MANIFESTを見てXSモジュールじゃないか確認.最悪ビルドしたのをコピーするのも手だが…
入れたのはこのあたり…
- DBIx::Class
- Class::C3
- Algorithm::C3
- Carp::Clan
- Class::Data::Accessor
- DBIx::Class::Loader(::mysql or ::SQLite)
- Lingua::EN::Inflect
- DBI
- DBD::mysql
- SQL::Abstract
- SQL::Abstract::Limit
- Data::Page
- Class::Accessor::Chained
- DBIx::Class::Schema::Loader
- Catalyst::Model::DBIC
- Catalyst::Model::DBIC::Schema
DBI::Pureperl
http://search.cpan.org/~timb/DBI-1.53/lib/DBI/PurePerl.pm
myapp_server.plのbegin節に$ENV{DBI_PUREPERL}=2を書いておく
DBI::HogeHogeが入らない
DBI自体はokだったんだけど,DBI::mysqlとかがxsじゃないとムリっぽい.なんにせよこのあたりがPurePerlで入ったとしても使い物にならない速度の可能性が
■ [catalyst][server]CatInABoxを試す#1

仕事でPerlができると喜んだのもつかの間,CPANとか自由にインストールできなさそう.かなり面倒.それでもCatalystでやりたいのでCatInABoxを試すことにする
環境
debian on coLinux
事前にsudo apt-get install perl5でperlをアップデート.そのままだとモジュールがかなり入ってない.UNIVERSALすらなかった…
ダウンロード&設置
下記からダウンロード
http://handelframework.com/downloads/CatInABox.tar.gz
Linux環境なのでextlib-win32と.batファイルを除いて設置.ユーザディレクトリにそのまま置いた
- ~
- bin
- extlib
catalyst.pl実行
このあたりは普段どおり
% PERL5LIB=~/extlib bin/catalyst.pl MyApp
ひとまずアプリケーション作成成功
script/myapp_server.pl書き換え
毎度のごとくuse libの書き換え.
さくらインターネットでCatalystを動かす設定 - LAPISLAZULI HILL#Catalyst - Catalystグループ
構成さえあわせれば動くようにちょっとだけアレンジ
use lib "$FindBin::Bin/../../extlib", "$FindBin::Bin/../lib";
む.動かないmyapp_server.plのソースを見ると
BEGIN { $ENV{CATALYST_ENGINE} ||= 'HTTP'; $ENV{CATALYST_SCRIPT_GEN} = 29; require Catalyst::Engine::HTTP; }
とかなってる.BEGIN節のrequireをひとまずコメントアウトして実行.動いた
BEGIN { $ENV{CATALYST_ENGINE} ||= 'HTTP'; $ENV{CATALYST_SCRIPT_GEN} = 29; # require Catalyst::Engine::HTTP; }
問題があるかもしれないけど,ひとまずよしとする
このrequire行はhttp://dev.catalystframework.org/changeset/4748で追加されてる.うーん,なんで追加されたんだろ
2006-10-27
■ [catalyst][server]さくらインターネットでCatalystを動かす設定

(追記)
さらに改良した方法をhttp://catalyst.g.hatena.ne.jp/lapis25/20061223/p1に
http://catalyst.g.hatena.ne.jp/lapis25/20060902/p1のやり直しです
結局ドキュメントルートで動かすときには使えないんですが…
myAppはwww直下に作られていて
CPANでCatalystはインストール済みです
CPAN: http://d.hatena.ne.jp/lapis25/20060605/1149487765
script/myApp_cgi.plの書き換え
apacheの環境変数を書き換えようと思ったんですが,できなかったのでuse libにmoduleの検索パスを追加します./home/your/perl/libがCPANモジュールのインストール先です
【script/myApp_cgi.pl】
use lib '/home/your/perl/lib', "$FindBin::Bin/../lib";
書き換えてから,動作を確認してみました
> perl myApp_cgi.pl
@INC関係のエラーが出てなければ成功しているはずです
.htaccessの書き換え
http://example/memoでアクセスするように設定します
AddHandler cgi-script .pl RewriteEngine On RewriteRule ^memo/(.*)$ /myApp/script/myApp_cgi.pl/$1 [L]
http://example/memoにアクセスして動作いることを確認します
パーミッションの設定
wwwディレクトリの中に設置しているので,実行するscript(script/myApp_cgi.pl)とrootフォルダ以外のファイルのオーナ以外の権限を削りました.フォルダ700,ファイルなら600とかで.
前より少しはシンプルにできた気がします.apacheの環境変数さえ設定できたらごく普通の設定なんだけども.http://faq.sakura.ne.jp/にあったSetEnvIfでもうまくいかないし
LuisThat really captures the spirit of it. Thanks for psotnig.
exexqoawbsazO7SeF <a href="http://jwylgqfwuqlm.com/">jwylgqfwuqlm</a>
rgintqetp6pdE8n , [url=http://hgpgalwxfxzc.com/]hgpgalwxfxzc[/url], [link=http://weuoautyjcnb.com/]weuoautyjcnb[/link], http://tlbructurbvi.com/
boanjjoumnsyvQ2 , [url=http://ubebvftzmbfs.com/]ubebvftzmbfs[/url], [link=http://zueulzhwavbt.com/]zueulzhwavbt[/link], http://xjrgfbupxcoe.com/
2006-09-02
■ [catalyst][server]CatalystをレンタルサーバのCGIで動かすときの設定

http://catalyst.g.hatena.ne.jp/lapis25/20061223/p1に他の方法を
さくらインターネットスタンダードプランで設定してます.
結論を書くと
- script/hoge_cgi.plを公開されているサーバに名前を変えてコピーする
- use libを書き換える
の2点で動きました
作ったアプリケーションのディレクトリ,をここではhogeとします.その直下のscriptディレクトリにhoge_cgi.plを使うとCatalystをCGIとして動かします.現在Catalystの演習に使っている資料「まるごとPerl! Vol.1のつかってわかるCatlyst」には記述がありません.CGIのためのソースが載っているのでそれに従ってファイルを作ってもいいと思います
このファイルをWebとして公開されているフォルダにコピーします.このさい拡張子を.plから.cgiに変えておくと設定がいりません.私の使っているサーバでは.cgiがデフォルトで設定されているCGIの拡張子だからです.ついでに名前も変えました.パーミッションも変更します
> cp hoge/script/hoge_cgi.pl www/hoge.cgi > cd www/ > chmod 705 hoge.cgi
さらにlibプラグマを書き換えました.hoge.cgiのlibプラグマ付近にはこのように書かれています
use FindBin; use lib "$FindBin::Bin/../lib"; use hoge;
ここではFindBinモジュールを使ってlibプラグマを設定しています.FindBin::binで現在実行しているスクリプトのパスが検索できるのでこの記述だと/home/your-user/www/../libが設定されています.これを書き換えます
use lib qw( /home/your-usr/hoge/lib /home/your-user/perl/lib );
追加するのは,アプリケーションのlibディレクトリ(/home/your-user/hoge/lib)と,CPANモジュールをインストールしたディレクトリ(/home/your-user/perl/lib)です
これでひとまず動作しました..cgiが省略できるのでhogeでアクセスできます.ドメインがhttp://your-site/だとすると,http://your-site/hoge/で動作が確認できます.まだstaticファイルの設定ができていないので画像が表示されませんが動作は確認できました.Root.pmに追加したメソッドなども動いているのでひとまず問題はないと思います
もっとスマートな方法があるのかもしれませんがひとまずよしとします
参考:
EmmlyIt's like you're on a misosin to save me time and money!
hdenbrsTc05i <a href="http://diijiqtaviaz.com/">diijiqtaviaz</a>
keuspyBELZL7 , [url=http://szcytofzwske.com/]szcytofzwske[/url], [link=http://uqcpnzowprkh.com/]uqcpnzowprkh[/link], http://pdlicdtcexch.com/
hjjfqlxfYOnPu <a href="http://oexcntdvzncj.com/">oexcntdvzncj</a>
jltslel1G0M0t , [url=http://oewrtylgieiy.com/]oewrtylgieiy[/url], [link=http://qzdktowyjkmh.com/]qzdktowyjkmh[/link], http://vqyshlyutlau.com/
http://subwaysurfershacks.hatenablog.com - subway surfers free keys