ラベル WEBアプリ の投稿を表示しています。 すべての投稿を表示
ラベル WEBアプリ の投稿を表示しています。 すべての投稿を表示

2009年2月13日金曜日

php5をyumでいれたCentOS5でphp4も使わせる(CGI版)

php4を使っているサーバは結構ある。
そこで動かしているものを新規に作ったサーバに移そうとするといろいろ弊害、phpもその1つ。
 

CentOS5.2では php を楽なパッケージ管理で導入すると php5 が入る。そこでphp4を動かす情報が沢山あったので好みのやつを試してみた。
 
 

ということで、こちらで紹介されている方法ですんなりできた。
PHP4とPHP5を安全に共存させる方法 < < ぎじゅっやさん
 

サイトの例とは逆なんだけどね。
PHP4をApacheのモジュールとして、
PHP5をCGIとしてインストールする仕様で考える。
自身がメインで使用する方をモジュールにするといいだろう。
PHP4のインストールは特別変わらないので割愛。
引用:ぎじゅっやさん

 

じゃあちょっと php4.4.9 を入れてみる。オプションはとりあえず最低限で。
./configure --prefix=/data/php4 --exec-prefix=/data/php4 --enable-force-cgi-redirect
他のサイトで "/data/" と切っているのがあったから、実験という事もあってまねてみた。
 

こういうとき実際は"/usr/local/php4.4.9" に入れて、"/usr/local/php4" というリンクを張るのが好きだったりする。
 
 

後も同じ、ScriptAlias の指定があるところ (ScriptAlias /cgi-bin/ "/var/www/cgi-bin/") にphpのバイナリ (/data/php4/bin/php) をコピーして、apacheのコンフィグを下記のように。
 

Actionは何処かに1つ。php.conf に書いちゃってもいいかな。
あとは お好きなディレクティブで AddHandler を指定すればOK.

Action php4-script /cgi-bin/php4
<Directory "/var/www/html/php4">
Options ExecCGI
AddHandler php4-script .php
</Directory>

 

結果...
 

http://{サーバ}/phpinfo.php
コレはphp5 で動いて (Server API Apache 2.0 Handler )
http://{サーバ}/php4/phpinfo.php
コレはphp4 で動く (Server API CGI )
 
 


phpinfo.php の中身は言うまでもないけどこんな感じ。
<?php phpinfo() ?>
 

ところでCGIってことは、Perlみたいにphpスクリプトの一行目に "#!/data/php4/bin/php" で、phpのバイナリコピーしておかなくても動くかな?
 

とやってみたらエラーが出た。
Security Alert!
The PHP CGI cannot be accessed directly.
 
This PHP CGI binary was compiled with force-cgi-redirect enabled. This
means that a page will only be served up if the REDIRECT_STATUS CGI variable is
set, e.g. via an Apache Action directive.

 

あ、駄目だった。しかもあのオプションのせいなのね。
オプションつけなかったら出来るかもね、危なっかしそうだからやめたほうがよさげだが。

2009年2月6日金曜日

9arrows導入でつまづいた点をメモる

プロジェクト管理ツール 9arrows というのがあるという記事を見て興味を持ったが、手近に有効なメモがなかったので忘れないようにインストールしてみた。
 

CentOS5.2 に RubyGEMS が入ってる環境でつまづいた点をメモっておく。
 

rake でこけた


環境にもよるんだけどRubyからPostgres接続用のアダプタが入ってないので怒られた。
"Please install the postgresql adapter: `gem install activerecord-postgresql-adapter` (no such file to load -- pg)"
で、言う通りに"gem install activerecord-postgresql-adapter" とすると失敗する。
”gem install pg” でOK、これはメッセージで一応案内されているが。
 
 

Readmeに不備


"rake db:fixture:load" fixturesのsが抜けとる
Railsマスターならつまづかないんだろうけどさあ。
 
 

デフォルトユーザーに不備


これもReadmeの内容と言えるんだけど、 まずは"id:ninearrows , password:ninarrows" でログインできるとなってるけど入れない。新規ユーザを作ろう。
追記:DBを参照したところ、サンプルユーザは "9arrows@example.com" / "9arrows" だと思うんだ。
 
 

ユーザ名はメールアドレス


これは使用上の注意だけど、ユーザ登録の際にアカウントとメアドを入力するけど、次からログインはメアド+パスワード。
 
 
 

なんだかのう。推奨されている?(チェックアウト先)ディレクトリ名も "9arrows-read-only" と妙な感じ。
 
とまあやっと使えるようになったが、標準のWebrick起動スクリプトを指示どおりに実行すると、デーモンでも何でもなく3000番街受けのWEBサーバアプリが動く、ログは標準出力へ。
 

…しかたない、apache2.2 + Phusion Passenger(mod_rails) で動かそう。

Apache上でサブディレクトリを切って使うときの設定


サブディレクトリ"/9arrows" で動かすために マニュアル4.3のとおり "/usr/local/9arrows-read-only/public" のリンクをつくって RailsBaseURI で "/9arrows" 指定と。所有者 root ではPassengerは動かないから変えて。
バーチャルホストはしなかった。
 

Apacheコンフィグにひと工夫


9arrows の実行ファイルが"*.cgi" だからなのか? 500番エラーで止まる。
ディレクトリのディレクティブを切って、.cgi を removehandler, OptionsをNone にしたらよくなった。どっちかというとハンドラかな?
 

development と production


database.yml の設定なんだけど、9arrows はデフォルトで development を使う、READMEの設定指示もそこまで。
Passenger は production を使う、Apache側で RAILS_ENV をdevelopmentにするか、database.yml の設定を両方同じにするか。
というか何でdevelopment なんだろう?
 
 
ともかく完了、Passengerのデバッグ出力がなかったらもっと解決に時間がかかったかもしれない。
 
 
 

しかし似たようなところで、Redmineのインストール手順なんてやたら手厚い感じがしたなあ。
9arrowsも中身よさそうなのに、導入支援が添付のREADMEだけなのはいただけないんじゃないのかな。