さくらのVPSにredmineを移行する

さくらのVPSにredmineに移行する。前々回のさくらのVPSにAPACHE+MYSQLを入れるにてApache、MySQLはインストール済み。基本、FASTCGI でREDMINEが実用レベルになったを踏襲。

redmine 1.0のインストール

ひたすらrootで作業。

1. ポイント

  • rubyはfastcgiにて実行する
  • redmineから入れるrubyとかunstableから入れると今はちょうどいい
  • データはMySQLデータベースに格納
  • redmine本体はsubversionで取得して、適宜更新(svn update)する

2. fastcgiのインストール

aptitude install gcc make build_essential
aptitude groupinstall "Development Tools"
cd /usr/local/src/
wget http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz
tar -zxvf fcgi-2.4.0.tar.gz
cd fcgi-2.4.0
./configure
make
make install
mkdir /tmp/fcgi_ipc
chown -R www-data:www-data /tmp/fcgi_ipc/
chmod -R 777 /tmp/fcgi_ipc/

3. rubyのインストール

unstableからだとちょうど1.8.7が入ったので。

aptitude -t unstable install ruby1.8 ruby-dev rubygems
gem install rails -v=2.3.5
gem install rack -v=1.0.1
gem install i18n -v=0.4.2
gem install mysql fcgi

4. redmineのインストール

適宜更新するためにsubversionから入れる。subversionがなければファイルをダウンロードしておいてもいい。

cd /var/lib
svn co http://redmine.rubyforge.org/svn/branches/1.0-stable redmine

5. データベースの作成

mysql -u root -p
create database db_redmine character set utf8;
create user 'redmineuser'@'localhost' identified by '*********';
grant all privileges on db_redmine.* to 'redmineuser'@'localhost';

6. データベースのリストア

移行元サーバからscpなりでdumpしたものを持ってきて突っ込む。

mysql -u root -p db_redmine < /tmp/redmine.dump.sql

7. 設定ファイルの作成・移行

データベースの設定、作成したデータベース名、ユーザ名に合わせる。
なんかdebianだとdefultのsocketが違ったかなんかで明示的に指定している。

config/database.yml
# mysql
production:
  adapter: mysql
  database: db_redmine
  host: localhost
  username: redmineuser
  password: *********
  encoding: utf8
  socket: /var/run/mysqld/mysqld.sock

メール送信の設定。domainは適宜設定する。(お試し期間でメール送信できてないので未テスト)

config/email.yml
# Outgoing email settings
production:
  delivery_method: :smtp
  smtp_settings:
    address: 127.0.0.1
    port: 25
    domain: example.com

cgi(fsgi)だとRAILS_ENVを設定するタイミングがない。そもそも、使い分ける必要もあんまないのでスクリプトでproductionに固定。

config/environment.rb
# Uncomment below to force Rails into production mode when
# you don't control web/app server and can't set it the proper way
ENV['RAILS_ENV'] ||= 'production'

サブディレクトリのURLにしたせいか以下の設定を追加しないとredmineのルーティングがうまく動かなかった。additional_environment.rbを作成してconfigを追加する。
cp -p config/additional_environment.rb.example config/additional_environment.rb

config/additional_environment.rb
config.action_controller.relative_url_root='/redmine'

VPSの20GBでログは圧迫されたら困るのでログの出力を最小限にする。
参考: http://redmine.jp/faq/system_management/logger-level/

config/environments/production.rb
config.logger = Logger.new(config.log_path)
config.logger.level = Logger::WARN

8. 実行ファイルの作成

fastcgiを使うのでdispatch.fcgiを用意する、中身は変更しなくてよい。
cp -p public/dispatch.fcgi.example public/dispatch.fcgi

dispatch.fcgiを確実に参照させるように。

public/.htaccess
#<IfModule mod_fastcgi.c>
#       RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
#</IfModule>
#<IfModule mod_fcgid.c>
#       RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
#</IfModule>
#<IfModule mod_cgi.c>
#       RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
#</IfModule>
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]

9. データのマイグレーション

gemsのパスが通ってないので

cd /var/lib/redmine
PATH="$PATH:/var/lib/gems/1.8/bin"
rake generate_session_store
RAILS_ENV=production rake db:migrate
mkdir tmp public/plugin_assets
chown -R www-data:www-data files log tmp public/plugin_assets
chmod -R 755 files log tmp public/plugin_assets

これでredmineも使えるようになった。意外と快適。