新しいサーバの整備(6日目)

SuSE11.1で、Apache2.2 + fastCGI2.4.2 + RoR2.2.2 (Ruby1.8.7)

この話題、ありそうでなかなか手順が載っていない。試行錯誤です。
(参考URL)http://fumajimemo.blog62.fc2.com/blog-entry-6.html
(参考URL)http://pools.jp/2007/03/15/ruby-rails-apache-fastcgi-setup/
(参考URL)http://www.maruko2.com/mw/RT_Request_Tracker_%E3%82%92_CentOS_5_%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B
(参考URL)http://lanavi.net/free/93

  • Apache2.2系ではmod_fastcgi_2.4.*で、2.0系は2.4.2だそう。
  • YaSTで、gcc, apache2-devel, readline-devel, zlib-develはインストールしておく。

gem install --version=2.2.2 rails
gem install fcgi

参考URLの記述によると以下のパッチを充てることが、2.2でfastcgiするための肝らしい。

tar xzvf mod_fastcgi-2.4.2.tar.gz  #最新は2.4.6ですがpatchが2.4.2対応なので。。。
cd mod_fastcgi-2.4.2
wget http://kokogiko.net/fastcgi-apache22-patch
patch -p1 < fastcgi-apache22-patch
cp Makefile.AP2 Makefile
make top_dir=/usr/share/apache2
#ここで、「mpm.hがない」と怒られる。同列ディレクトリに*-event,-prefork,-workerがあり、その中にはそれぞれのmpm.hが含まれている(少しずつインクルードファイルが違ったり)。最新のApache2.4-alphaではデフォルトがpreforkからsimpleに変わった、との記述があった。ということは、preforkのmpm.hを使えばよいのかな?ここらの動作は正直よくわかりません。mpm.hとそこから呼んでいるmpm_default.hをコピーして使うことにする。
#後日追記:ApachetomcatPHPを別の要因で再インストールするタイミングがあり、その後、このmakeを行ったらエラーは出なかった。理由不明。
make top_dir=/usr/share/apache2 install
#インストールの確認
ll /usr/lib64/apache2 | grep fastcgi

ファイル/etc/apache2/httpd.confに下記を追記する。


 FastCgiIpcDir /tmp/fcgi_ipc/     #FcCGIが起動したプロセスと通信するための情報を入れておくディレクトリ名
 AddHandler fastcgi-script.fcgi   #拡張子がfcgiのものを対象とする


確認のためRailsプロジェクトをWebデプロイ(未完)

Ruby on Railsで簡単Webアプリケーション開発」p363からの手順を参考に行おうとしたが、rakeで失敗して何もできない。移してきた元のプロジェクトがrake-0.8.4で、新しい環境がrake-0.8.7なことに関係しているのだろうか?わからん、いったん保留。
とりあえず、FastCGIの動作確認だけをする。

環境移行の備忘録

  • MySQLはデータべーすディレクトリごとtarballを別マシンからコピー。serviceを一旦切ってから/var/lib/mysqlごと入れ替えた。v5.0→5.1だったが、問題なく動作。
  • RoRは、動作確認が未完。この環境で新しいプロジェクトを試しにrakeすること。
  • fastCGIの動作確認。参考はfyamaさんのページ

# /etc/apache2/default-server.confを編集
DocumentRoot /srv/www/htdocs #ここはオリジナルのまま

ここを上記のfyamaさんのに倣って変更

/var/www/htdocs/index.fcgiも倣って作成。ブラウザからhttp://xxx.xxx.xxx.xxx/をみると、index.fcgiがベタで表示されてしまう。Apachecgiファイルをcgiとして認識してくれていない。これを何とかするために、またしても検索かけまくる。指導員日記さんのページにて、ASddHandlerの設定が必要と書かれてあったので、/etc/apache2/httpd.confに追記する。さらに、cgiファイルを簡単なものに変更し、パーミッションをa+xへ変更。サービス再起動で、別マシンのブラウザから表示できました!
/etc/apache2/httpd.conf ・・・AddHandler の追記
/etc/apache2/default-server.conf(httpd.confにincludeされている) ・・・ CGIを動かすディレクトリの定義