確認した環境は以下のとおりです:
Gfdnavi 2.1 には Rails 2.3.8 が同梱されていますので, 別途インストールする必要はありません.
ここでは RDBMS として MySQL を使用します. MySQL の設定については,MySQLのインストールを参照してください. また, Gfdnavi は productionモードで動かします.
依存ライブラリの導入
以下については Gfdnavi ver. 2.1 インストールガイド も参照してください.
Gfdnavi本体のインストール
詳しくは Gfdnavi ver.2.1 インストールガイド を参照してください. ここでは 以下のように install.rb を実行し, /var/www/rails に Gfdnavi をインストールします.
インストールを実行して聞かれる選択肢と,その回答例は以下のとおり:
以下のコマンドでインストール:
# apt-get install apache2
ここでは設定の詳細は説明しないが, ちょっとだけ補足:
Debian のapache2のお作法は少し特殊で, /etc/apache2/apache2.conf はいじらない.
サイトの定義ファイルは /etc/apache2/sites-available/ 以下に作成し, a2ensite コマンドを使って /etc/apache2/sites-enabled/ 以下にシンボリックリンクをはって有効にする. (無効にするときは a2dissite コマンド)
/etc/apache2/sites-available/default を別の名前(たとえば hoge) でコピーし, 適切に編集して
# a2dissite default # a2ensite hoge # /etc/init.d/apache2 restart
とするのがよいだろう.
なお, モジュールも同様に a2enmod, a2dismod コマンドを使って有効/無効を制御する.
※ Debian では libapache2-mod-fcgid と libapache2-mod-fastcgi の2種類の FastCGI があるが, ここでは libapache2-mod-fcgid を使う.
以下のコマンドでインストール:
# apt-get install libapache2-mod-fcgid libfcgi-ruby1.8
/etc/apache2/mods-available/fcgid.conf を以下のように編集:
<IfModule mod_fcgid.c> AddHandler fcgid-script .fcgi SocketPath /var/lib/apache2/fcgid/sock IPCCommTimeout 300 # <- この行を追加 IPCConnectTimeout 60 # <- この行を追加 </IfModule>
以下のコマンドでモジュールを有効化:
# a2enmod fcgid # a2enmod rewrite
以下の内容で設定ファイル /etc/apache2/sites-available/rails を新規作成:
(ここではlocalhostのみアクセスを許可している. 外部に公開するときは Order, Deny, Allow の各行を適切に変更すればよい. 詳しくは apache の設定方法を別途参照のこと)
<IfModule mod_fcgid.c> Alias /hoge/gfdnavi "/var/www/rails/gfdnavi/public" <Directory /var/www/rails/gfdnavi/public/> Options ExecCGI FollowSymLinks AllowOverride all Order deny,allow Deny from all Allow from 127.0.0.1 </Directory> </IfModule>
以下のコマンドで設定ファイルを有効化:
# a2ensite rails
以下のコマンドで apache を再起動:
# /etc/init.d/apache2 restart
以下のコマンドでインストール:
# apt-get install xvfb
以下のようにして Apache の実行ユーザ(www-dataなど)で Xvfbサーバを立ち上げる:
# su - www-data $ Xvfb :99 -screen 0 640x480x8 -nolisten tcp >/dev/null 2>&1 &
※ 上記コマンドがブート時に自動的に実行されるように cron の設定をするとよい.
# crontab -u www-data -e
とするとエディタが立ち上がるので,
@reboot /usr/bin/X11/Xvfb :99 -screen 0 640x480x8 -nolisten tcp >/dev/null 2>&1
と一行書いてセーブ, 終了.
env: DISPLAY: ":99.0"のコメントを外す (以下に示すように, 行頭のスペースは2つなので注意)
env: DISPLAY: ":99.0" RAILS_ENV: production
dispatch の作成 rails2.3以上ではfcgi系のファイルが自動生成されません
$ cd /var/www/rails/gfdnavi/gfdnavi/ $ rake rails:update:generate_dispatchers
relative_url_root の指定 config/environment.rb に以下の行を先頭に追加して, apacheをrestartする
ENV['RAILS_RELATIVE_URL_ROOT']="/hoge/gfdnavi" # <- apache の Alias と同じにする (ここでは"/hoge/gfdnavi")
/var/www/rails/gfdnavi/public/.htaccessの作成: ※ Rails2.1.0からpublic/.htaccessが自動作成されなくなっています.
Railsのディレクトリ直下のREADMEに.htaccessのサンプルがある.これをコピーする:
$ cat /var/lib/gems/1.8/gems/rails-2.1.0/README > /var/www/rails/gfdnavi/public/.htaccess
不要な行を削除する:
== Apache .htaccess example
の下の行から,
ErrorDocument 500 "<h2>Application error</h2>Rails application failed to start properly"
の行までを残し,他の行は削除.
さらに,/var/www/rails/gfdnavi/public/.htaccessに以下の変更・追加をする:
#AddHandler fastcgi-script .fcgi # <- コメントアウトする AddHandler fcgid-script .fcgi RewriteBase /hoge/gfdnavi # <- apache の Alias と同じにする (ここでは"/hoge/gfdnavi") #RewriteRule ^(.*)$ dispatch.cgi [QSA,L] # <- コメントアウトする RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
www-data による書き込み権限が必要なディレクトリがいくつかあるので, パーミッションの変更をする:
# chgrp -R www-data /var/www/rails/gfdnavi/tmp # chmod -R g+w /var/www/rails/gfdnavi/tmp # chgrp -R www-data /var/www/rails/gfdnavi/log # chmod -R g+w /var/www/rails/gfdnavi/log # chmod 660 /var/www/rails/gfdnavi/log/*.log # chgrp -R www-data /var/www/rails/gfdnavi/usr # chmod -R g+w /var/www/rails/gfdnavi/usr # chgrp -R www-data /var/www/rails/gfdnavi/db # chmod -R g+w /var/www/rails/gfdnavi/db
ブラウザで http://localhost/gfdnavi/ にアクセスして動作を確認する.
うまく動作しない場合は, 以下のファイルを見ること:
たいていはこれらのファイルにエラーメッセージが吐かれているので, 手がかりになる.
また、URL 中の "/" が "%2F" に URL エンコードされるために 知見文書に含まれる画像等が表示されない(404 Not Found になってしまう)場合がある. この問題は,httpd.conf 等の設定ファイルに
AllowEncodedSlashes on
という記述を加えることで回避できる(バージョン2.0.46以降の場合).
ruby や gem などの環境変数が apacheを実行するユーザ(www-dataなど)に適用されているか確認する. 自分のユーザアカウントのみにしか適用されていないことがよくある.