FreeBSD10でRedmine2.5をApache2.4+FastCGIで動かす[追記あり]

2016年6月18日FreeBSD,パソコン・インターネット

自宅でRedmine動かしてます。備忘録付きのチェックリスト代わりです。

なのですが、FreeBSDでpkg upgrade -fするたびに、Redmineが動かなくなって困っていました。

格闘の末、解決方法がわかりました。結局、Redmine公式ウェブサイトに書かれている事をちゃんとやれば、動くと言う事です。

Redmine

必要な事は以下の通りです。

  1. Redmineのインストール
  2. mod_fcgiのアンインストールとmod_fastcgiのインストール
    • 上記のやり方だった場合
  3. Apache24の設定
    • FastCgiServerの設定

順を追って説明します。パッケージ管理は、pkgngに移行済みとします。

[amazonjs asin="488337968X" locale="JP"]

1. Redmineのインストール

次の記事をご覧下さい。

このページ次の事をすれば良いと思います。掲載の順番が前後していますが、こちらの方が自然と思います。。

  1. Apache 2.4のインストール
  2. MySQLのインストール
  3. PHP5のインストール
  4. phpMyAdminのインストール
  5. Redmineのインストール
  6. rubygem-mysql2のインストール
  7. Redmine用データベース作成
  8. Redmineの設定
  9. 初期データの作成

ちょっと不親切なので、要点だけ書いて行きます。

1.1 Apache 2.4のインストール

Webサーバです。次のパッケージです。

# pkg install apache24

1.4 MySQLのインストール

Redmineのデーバベースとして必要です。

# pkg install mysql56-server mysql56-client

(追記 2015-02-21 13:05 Redmineをインストールすると、自動的にインストールされます。FreeBSDの最新pkgでバージョンが変更になっていました。

1.5 PHP5のインストール

Redmineではなく、次に説明するphpMyAdminに必要です。

# pkg install php5

PHPのインストールは、これだけでは済まないのですが、省略します。最初に紹介した記事だと、PHP5.5を使っていますが、この方法だとPHP5.4がインストールされます。

1.6 phpMyAdminのインストール

GUIでMySQLのデータベースを作るために使っています。MySQLに慣れている人は、直接コマンドラインで操作しても大丈夫です。

# pkg install phpMyAdmin

上記のPHPのインストールで足りない物は、この過程でインストールされると思います。

1.7 Redmineのインストール

Redmineの本体です。

# pkg install redmine

足りないパッケージがあれば、追加インストールされると思います。

1.3 rubygem-mysql2のインストール

Redmineを日本語設定で使う時に、rubygem-mysql2が必要な様です。

# pkg install rubygem-mysql2

ちゃんと確かめてないですが、RubyGemの必要なパッケージもインストールされると思います。

1.8 Redmine用データベース作成

先に紹介した記事だと、次のデータベースを作っています。

  • ユーザ名: redmine
  • データベース名: redmine_db

phpMyAdminの操作画面付きで説明してあるので、次の記事をご参照下さい。

1.9 Redmineの設定

次の記事の通りに設定します。

以下の五つのファイルです。

  • /usr/local/www/redmine/config/database.yml
  • /usr/local/www/redmine/config/configuration.yml
  • /usr/local/www/redmine/public/dispatch.fcgi
  • /usr/local/www/redmine/public/.htaccess
  • /usr/local/www/redmine/Gemfile.local

1.10 初期データの作成

当時は、意味が良くわかりませんでした。今も、ちゃんとはわかっていませんが。今の理解だと、Gemパッケージのインストールと環境のビルドをしている様です。pkg upgrade -fをする度に、必要な様です。

# cd /usr/local/www/redmine
# bundle install
# rake generate_secret_token
# rake db:migrate RAILS_ENV=production
# rake redmine:load_default_data RAILS_ENV=production

Select language: ar, az, bg, bs, ca, cs, da, de, el, en, en-GB, es, et, eu, fa, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sq, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] ja
====================================
Default configuration data loaded.

2. mod_fastcgiのインストール

最初は、mod_fcgidを使っていたのですが、mod_fastcgiの方がPHP-FPMと言うパッケージと相性が良さそうなので、乗り換えました。

もし、fcgidをインストールしていたら、次の方法でアンインストールします。

# pkg remove ap24-mod_fcgid

その後、mod_fastcgiをインストールします。

# pkg install ap24-mod_fastcgi

たしか、自動で/usr/local/etc/apache24/httpd.confも書き変わったと思います。もし、コメント(行頭の#)があったら、消しておいて下さい。

LoadModule fastcgi_module libexec/apache24/mod_fastcgi.so

3. Apache24の設定

いよいよ、核心部分です。

まずは、/usr/local/etc/apache24/httpd.confに次の2行を追加します。URLのrewriteとphpMyAdmin用です。

LoadModule rewrite_module libexec/apache24/mod_rewrite.so
LoadModule php5_module libexec/apache24/libphp5.so

私の場合、redmineはVirtual Hostとして利用しています。/usr/local/etc/apache24/httpd.confの修正が必要です。

Include etc/apache24/extra/httpd-vhosts.conf

コメント行になっているはずなので、行頭の#を消します。

Ruby on Railsアプリの設定です。/usr/local/etc/apache24/Includes/Passenger.confと言うファイルに、次の設定をします。以前は、redmine.confに記載していましたが、Passenger.confの方が自然だと思いますので、名前を付け替えました。先の記事の通りに、redmine.confを作られている方は、ファイル名を変更しておいて下さい。

LoadModule passenger_module /usr/local/lib/ruby/gems/2.0/gems/passenger-4.0.58/buildout/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/2.0/gems/passenger-4.0.58
PassengerRuby /usr/local/bin/ruby20

今まで、このファイルの記述内容を手探りしていたのですが、pkg upgradeの際に、ターミナルに表示されている事に気が付きました。

Message for rubygem-passenger-4.0.58:
 #####################################################################

Please edit your Apache configuration file, and add these lines:

   LoadModule passenger_module /usr/local/lib/ruby/gems/2.0/gems/passenger-4.0.58/buildout/apache2/mod_passenger.so
   PassengerRoot /usr/local/lib/ruby/gems/2.0/gems/passenger-4.0.58
   PassengerRuby /usr/local/bin/ruby20

After you restart Apache, you are ready to deploy any number of Ruby on Rails
applications on Apache, without any further Ruby on Rails-specific
configuration!

#####################################################################

Virtual Hostとして使うためには、/usr/local/etc/apache24/extra/httpd-vhosts.confに、次の設定を追加します。ホスト名などは、必要に合わせて書き換えて下さい。また、/etc/hostsなどで、ホスト名を引ける様になっている必要があります。

ServerAdmin webmaster@example.com
ErrorLog "/var/log/redmine.example.com-error_log"
CustomLog "/var/log/redmine.example.com-access_log" common
DocumentRoot /usr/local/www/redmine/public
ServerName redmine.example.com
FastCgiServer /usr/local/www/redmine/public/dispatch.fcgi -idle-timeout 120 -initial-env RAILS_ENV=production -initial-env PATH=/usr/local/bin -processes 2
# default charset UTF-8
AddDefaultCharset utf-8

# .htaccess setting
AllowOverride All

# SSI OK
# SymbolicLink OK
Options +Includes +FollowSymLinks +ExecCGI
# MultiViews must be turned off.
Options -MultiViews

# aapche 2.4 change config
Require all granted

6行目の"FastCgiServer"の設定が肝です。次の記事のFreeBSDの所に記載されています。

この設定をするまで、本文は表示される物の、Style Sheetが設定されていない状態になりました。CSSが無効な状態です。かなり悩みました。

CSSが効かないRedmine

次の様なログが残っていました。

FastCGI: comm with (dynamic) server "/usr/local/www/redmine/public/dispatch.fcgi" aborted: (first read) idle timeout (30 sec)
FastCGI: incomplete headers (0 bytes) received from server "/usr/local/www/redmine/public/dispatch.fcgi"

それと、Style Sheetを開こうとすると、次のメッセージが出ていました。

<h2>Application error</h2>Rails application failed to start properly

原因は、Apacheの再起動を忘れていたためでした。Railsの設定が終わったら、次のコマンドで、Apacheを再起動して下さい。

# apachectl restart

きちんと表示されるか、ご確認下さい。

ふぅ〜。あ〜、疲れた。問題の解決とこの記事を書くので、丸一日つぶれました。

(追記 2015-02-09 22:06)

CSSが無効な状態の時にログに出ていたエラーメッセージを載せました。

[amazonjs asin="4798042471" locale="JP"]

Posted by お市のかた