Ruby + Apache+ mod_fcigd構成ノート


会社は他のWEBサーバーを使いたくないので、Rubyソースを既存のApacheに公開するしかありません.半日やってやっとできました.メモを取って、参考にしてください.インストール環境Linux CentOs 5,Apache 2.2.2..9,Ruby 1.86,Rails 2.1.0.gem 1.2.0で使用されるモジュールはfast cgi,mod_です.fcgid. なぜmod_を使うのかfcgidはhttp://fastcgi.coremail.cn/index.htmを見てください.必要なファイルソースをダウンロード
         wget  http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz



          wget  http://nchc.dl.sourceforge.net/sourceforge/mod-fcgid/mod_fcgid.2.2.tgz

         2. コンパイルインストールfcgi
        tar -zxvf  fcgi-2.4.0.tar.gz

           cd fcgi-2.4.0

           ./configure

           make

           make install
 
        3. コンパイルインストールmod_fcgidモジュール
tar -zxvf mod_fcgid.2.2.tgz

cd mod_fcgid.2.2

   :   apache       /usr/local/apache2    mod_fcgid.2.2     
 top_dir    apache   ,       apache  src build  ,       ,       ,
      .


make

make install
 
完了後にエラーがなければmod_fcgid.soファイルはapache/modules/ディレクトリに自動的にコピーされます.   4. fcgi gemのインストール
 
gem install fcgi

 
エラーメッセージ:can't find header files for rubyの場合、ruby-develパッケージをインストールする必要があります.  5. apacheはhttpdに配置する.confに次のコードを追加
 
 
LoadModule fcgid_module modules/mod_fcgid.so
           SocketPath /tmp/fcgidsock
           DefaultInitEnv RAILS_ENV production


         <Directory /htdocs/railsproject/public>
               Options ExecCGI FollowSymLinks
               AllowOverride AuthConfig Indexes Limit
               Order allow,deny
               Allow from all

               AddHandler fcgid-script .fcgi


              # You need mod_fcgid version >= 2.1 to support arguments "xxx/dispatch.fcgi" in FCGIWrapper

              FCGIWrapper "/htdocs/railsproject/public/dispatch.fcgi" .fcgi

               RewriteEngine On
               RewriteRule ^$ index.html [QSA]
               RewriteRule ^([^.]+)$ $1.html [QSA]
               RewriteCond %{REQUEST_FILENAME} !-f
               RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
           </Directory>
 
OK、apacheを再起動したらhttp://yourdomain/railsproject/public/の中で訪問して着いて、このようなurlはとてもきれいではありませんが、しかし目的はすでに達成して、必要な学友は自分でvhostを加えることができます.参考資料:H o w t o S e t u p A pacheWithFastCGIAndRubyBindings