• このエントリーをはてなブックマークに追加

ss-1346509793

はじめに

これまで Ubuntu の apt で入れた Redmine-1.2.0 を使ってきてましたが,1プロジェクトで複数リポジトリを扱える最近のバージョンのものに置き換えたい衝動が大きくなってきたので,本日,思い立って作業してました,6時間ほどw

現時点での最新 2.0.3 を,apt で入れられるかどうかがよくわからなかったので,マニュアルでインストールすることに.また,せかっくなので,Ruby-1.9.3 とそれをバージョン切り換えとかできる RVM をベースに構築してみました.

1.2.0 → 2.0.3 と一気に上げるのはなんだかおっかない気がしたので,1.2.0 → 1.4.41.4.4 → 2.0.3 の2段階でアップグレードしましたw

以下,その終始の記録です.Ruby関連に無知なのと記憶を頼りに書いているのとが相まって,間違った箇所がありそうです.パーミッションとかの安全性もあまり考えていないので,そのあたり適宜脳内変換していただければ幸いです.

主な構成

OS Ubuntu 10.04
Webサーバ Apache 2.2.14 (aptで)
データベース MySQL 5.1.63 (aptで)
apt で入っていた Redmine のバージョン 1.2.0
apt で入っていた Redmine の(実質の)アプリケーションルート /usr/share/redmine
自分で入れる Redmine のアプリケーションルート /var/www/vhosts/redmine

参考

ほとんど次を参考にしています:

RVM をインストールする

% curl -L https://get.rvm.io | bash -s stable
...
 
Upgrade of RVM in /home/issm/.rvm/ is complete.
 
# issm,
#
#   Thank you for using RVM!
#   I sincerely hope that RVM helps to make your life easier and more enjoyable!!!
#
# ~Wayne
 
 
rvm 1.15.8 (stable) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]

Ruby をインストールする

Redmine の 1.4.4,2.0.3,いずれも Ruby-1.9.3 に対応しているので,このバージョンを入れることにします:

% rvm install 1.9.3
...
 
% rvm use 1.9.3
Using /home/issm/.rvm/gems/ruby-1.9.3-p194
Running /home/issm/.rvm/hooks/after_use
% which ruby
/home/issm/.rvm/rubies/ruby-1.9.3-p194/bin/ruby

入りました.

“global” gemset に 切り替える

(もしかしてデフォルト?)

% rvm use 1.9.3@global
Using /home/issm/.rvm/gems/ruby-1.9.3-p194 with gemset global
Running /home/issm/.rvm/hooks/after_use
% rvm gemset list
 
gemsets for ruby-1.9.3-p194 (found in /home/issm/.rvm/gems/ruby-1.9.3-p194)
=> global

gem “passenger” とか mod_passenger とか

gem “passenger”

file-tail という gem が必要らしいので、予め入れておく。
tmaeda hiki – Passenger と RVM で複数 gemset でのアプリケーション運用

よくわかっていないので,これもあわせて.

% gem install file-tail
...
% gem install passenger
...

mod_passenger をビルドする

Webサーバは Apache なので,これ向けのモジュールをビルドします.(Nginx 向けのモジュールもビルドできますが,ここでは省略.)

% passenger-install-apache2-module
...

必要なライブラリが足りない場合怒られますが,親切にも「何を準備すべきか」も教えてくれるので安心です.

Apache の設定を修正する

libapache2-mod-passenger が apt でインストールされていることを前提とします.また,有効でなければ,sudo a2enmod passenger しておきます.

この状態で,次の2ファイルを修正します:

# /etc/apache2/mods-aveilable/passenger.load
 
#LoadModule passenger_module /usr/lib/apache2/modules/mod_passenger.so
LoadModule passenger_module /home/issm/.rvm/gems/ruby-1.9.3-p194@global/gems/passenger-3.0.17/ext/apache2/mod_passenger.so
# /etc/apache2/mods-aveilable/passenger.conf
 
<IfModule mod_passenger.c>
  #PassengerRoot /usr
  #PassengerRuby /usr/bin/ruby
  PassengerRoot /home/issm/.rvm/gems/ruby-1.9.3-p194@global/gems/passenger-3.0.17
  PassengerRuby /home/issm/.rvm/wrappers/ruby-1.9.3-p194@global/ruby
 
  #PassengerDefaultUser redmine
  PassengerDefaultUser issm
 
  ...
</IfModule>

また,サイト側の設定も修正しておきます.もともと http://redmine.example.com/ で利用していたものとします.

#
# http
#
<VirtualHost *:80>
    ServerName redmine.example.com:80
    ServerAdmin webmaster@example.com
    DocumentRoot /var/www/vhosts/redmine/public/
 
    <Directory /var/www/vhosts/redmine/public/>
        Options Indexes FollowSymLinks -MultiViews -ExecCGI
        AllowOverride All
        PassengerResolveSymlinksInDocumentRoot on
    </Directory>
</VirtualHost>

gem “mysql2″ をインストールする

MySQLのC bindingをインストールしてください。劇的にパフォーマンスが改善します。 gem install mysql2 を実行すればインストールできます。
Redmineのインストール | Redmine.JP

% gem install mysql2

gem “bundler” をインストールする

% gem install bundler

Redmine-1.4.4 にアップグレードする

アプリケーションをダウンロードするなど

# /var/www/vhosts is writable by user "issm"
% cd /var/www/vhosts
% curl -LO "http://rubyforge.org/frs/download.php/76255/redmine-1.4.4.tar.gz"
% tar xf redmine-1.4.4.tar.gz
% ln -s redmine-1.4.4 redmine
% cd redmine-1.4.4

コンフィグを引き継ぐ

コンフィグ系は 1.2.0 のものを引き継げると思います.触った記憶のあるファイルだけ移せばよいでしょうw:

% cp /usr/share/redmine/config/database.yml ./config/
% cp /usr/share/redmine/config/configuration.yml ./config/

なお,データベースアダプタに関する箇所だけ,mysqlmysql2 に変更する必要があります.

# /var/www/vhosts/redmine-1.4.4/config/database.yml
...
 
production:
  adapter: mysql2  # <- here!
  database: redmine
  host: localhost
  username: dbuser
  password: password
  encoding: utf8
 
...

Redmine-1.4.4 向けの gemset を準備する

Redmine-1.4.4 のアプリケーションでは, gemset “redmine-1.4.4″ が使われるようにするための準備.

% rvm --rvmrc --create 1.9.3-p194@redmine-1.4.4
# created ".rvmrc" file
% rvm current
ruby-1.9.3-p194@redmine-1.4.4

もろもろ

依存 gem をインストールしたりセッションストア秘密鍵を生成したりデータベースを migrate したり添付ファイルを引き継いだり:

% bundle install --without development test rmagick
% rake generate_session_store
% RAILS_ENV=production rake db:migrate
% cp -r /usr/share/redmine/files/* ./files/

mod_passenger がロードされたときに,.rvmrc のとおりに Ruby が使われる(?)ようにする

config/setup_load_paths.rb というファイルを,次の内容で準備します:

if ENV['MY_RUBY_HOME'] && ENV['MY_RUBY_HOME'].include?('rvm')
  begin
    gems_path = ENV['MY_RUBY_HOME'].split(/@/)[0].sub(/rubies/,'gems')
    ENV['GEM_PATH'] = "#{gems_path}:#{gems_path}@global"
    require 'rvm'
    RVM.use_from_path! File.dirname(File.dirname(__FILE__))
  rescue LoadError
    raise "RVM gem is currently unavailable."
  end
end
 
ENV['BUNDLE_GEMFILE'] = File.expand_path('../Gemfile', File.dirname(__FILE__))
require 'bundler/setup'

詳しくは次を参照ください:

その他

プラグインとかテーマとか,別途入れていたものがあれば引き継ぎましょう.そのままで動作するかどうかはわかりませんが...

Apache を再起動する

% sudo /etc/init.d/apache2 configtest
...
% sudo /etc/init.d/apache2 restart

たぶんこれで動くのではないかなと思います.

Redmine-2.0.3 にアップグレードする

1.2.0 → 1.4.4 における手順とほぼ同様ですが,セッションストア秘密鍵生成など,異なる箇所もありますのでご注意を.

また,このバージョン向けの gemset も準備しています.

% cd /var/www/vhosts
% curl -LO "http://rubyforge.org/frs/download.php/76255/redmine-2.0.3.tar.gz"
% tar xf redmine-2.0.3.tar.gz
% rm redmine
% ln -s redmine-2.0.3 redmine
% cd redmine-2.0.3
% cp ../redmine-1.4.4/config/database.yml ./config/
% cp ../redmine-1.4.4/config/configuration.yml ./config/
% rvm --rvmrc --create 1.9.3-p194@redmine-2.0.3
% bundle install --without development test rmagick
% rake generate_secret_token
% RAILS_ENV=production rake db:migrate
% cp -r ../redmine-1.4.4/files/* ./files/
% cp ../redmine-1.4.4/config/setup_load_paths.rb ./config/
% sudo /etc/init.d/apache2 restart

おわりに

以上,apt で入っていた Redmine をアップグレードするついでに,RVM 管理下の Ruby + mod_passenger で動作するようにしてみたお話でした.

データベース接続が mysql2 経由になったことで,数年前の低スペック自宅サーバでも,パフォーマンスがよくなった感じを受けます.

これでちょっとは Redmine に記録するモチベーションが上がったかな?

おまけ:Redmine のテーマ 2点

1年ぶりくらいに 「Redmine テーマ」 でググってみた ところ,2012年ものっぽいテーマがあったのでメモ.

Farend Fancy

ss-1346517447

「Farend Basic」を踏襲しつつ,アイコンとかが追加されたテーマみたいです.

Gitmike

ss-1346517499

Github な雰囲気を Redmine で.現在,このテーマを試してみてます.