はじめに
これまで 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.4
,1.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 |
参考
ほとんど次を参考にしています:
- tmaeda hiki – Passenger と RVM で複数 gemset でのアプリケーション運用
- アップグレード | Redmine.JP
- Redmineのインストール | Redmine.JP
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/ |
なお,データベースアダプタに関する箇所だけ,mysql
を mysql2
に変更する必要があります.
# /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
「Farend Basic」を踏襲しつつ,アイコンとかが追加されたテーマみたいです.
Gitmike
Github な雰囲気を Redmine で.現在,このテーマを試してみてます.
こちらもあわせてどうぞ
最近の閲覧数
- None Found