会社の開発用サーバに入れているRedMineのバージョンアップを試みたが失敗したので、その軌跡を書いておく。
まず、RedMine 0.8.4 にしようとして、svn updateをしてRedMineのソースを最新版にした後に、rubyのバージョンが1.8.7でないといけないことに気付いた。CentOS5.3でyumを使ってrubyをインストールすると1.8.5が入ってしまい、バージョンアップが必要となった。そこで、rubyのバージョンアップを行った。
参考にしたサイト:http://d.hatena.ne.jp/amacou/20090409/1239245934
まず、yumで必要なものをインストール
yum install gcc yum install zlib-devel yum install rpm-build yum install openssl-devel yum install readline-devel yum install nkf yum install mysql-devel
次に、今まで使っていたrubyとおさらばする。
yum remove ruby
次に、ruby-1.8.7をインストールする
wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p174.tar.bz2 tar xfj ruby-1.8.7-p174.tar.bz2 cd ruby-1.8.7-p174 ./configure --prefix=/usr --with-install-readline make checkinstall --fstrans=no
バージョン違いのものが残っていたらいけないからだと思うが、rubyにまつわるものを消しとく。
rm -rf /usr/bin/ruby rm -rf /usr/lib/ruby
で、さっき作ったrubyのRPMをインストールする。
rpm -ivh /usr/src/redhat/RPMS/i386/ruby-1.8.7-p174-1.i386.rpm
次に、RubyGemsをインストール。最新版の1.3.5にした。
wget http://rubyforge.org/frs/download.php/45905/rubygems-1.3.5.tgz tar xfz rubygems-1.3.5.tgz cd rubygems-1.3.5 checkinstall -R "ruby setup.rb" rpm -ivh /usr/src/redhat/RPMS/i386/rubygems-1.3.5-1.i386.rpm
ここで、Railsのインストール。バージョンを指定しないと、最新版が入ってしまうので注意。RedMine 0.8.4は、2.2.2が指定されているので、とりあえずそれを入れてみた。
gem install rails -v=2.2.2
ここで、ようやくRedMineのアップグレードを行う。
データベースのバックアップは必須!!私は毎日自動でバックアップをするシェルスクリプトを組んでたので、今回は助かった。
svnからチェックアウトしている前提です。
参考にしたのは、RedMine.JPのアップグレード方法です。
svn update rake db:migrate RAILS_ENV=“production” rake tmp:cache:clear rake tmp:sessions:clear
アプリケーションを再起動後、権限のあたりを修正ということだったので、Apacheを再起動したら、RedMineがInternal Server Errorになった…。ここからが悲劇の始まりだった。(いろいろやって記憶が曖昧なので、情報が違う可能性がありますがご容赦ください)
まず、何が悪いのかわからない。.htaccessを見る限り、俺がRedMineをインストールしたのはFastCGIを使っている状態で、Passengerを使ってなかったので、それが原因かなぁと思った。入門RedMineに、よほどのことがない限りはPassengerのほうがいいよと書いてあったので、Passengerに変更しようとした。
Passengerをインストールした。
gem install passenger
その後、Passengerモジュールをインストール。
passenger-install-apache2-module
Passenger用にApacheのconfファイルを作成しておく。
/etc/httpd/conf.d/passenger.confを作成。conf.dにある*.confは自動的に読み込まれるようにしてあるのが前提。
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.4/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.4
PassengerRuby /usr/bin/ruby
RedMineはサブディレクトリで運用していたので、/etc/httpd/conf.d/redmine.confに以下を追加した(redmine.confは私が作成しただけで、普通にあるわけではない。しかも、FastCGI用の設定を書いていた)。
# PassengerでサブディレクトリのRedMineを動かすため
RailsBaseURI /redmine
# その後、FastCGIで設定していたものなどをコメントアウト
# ただし、それらがあっていたかはわからない。
Apacheを再起動したが、駄目。RedMineのpublicディレクトリの.htaccessを修正しても、駄目。1日かけて作業をしたのだが、RedMineのアップグレードができなかったので、元に戻すことにした…。
まず、既存のRedMineディレクトリをバックアップしておく。
その後、svnで自分が使っていたRedMineのバージョンをチェックアウトする。自分が使ってたのは、RedMine-0.7.0。
バックアップしていたRedMineから設定ファイル(database.yml, email.ymlなど)をコピーする。
データベースからテーブルを削除して、バックアップデータから復元する。(phpmyadmin経由で)
ruby-1.8.7, RubyGems-1.3.5を削除する。
rpm -e rubygems rpm -e ruby-1.8.7 rm -rf /usr/lib/ruby
yumで、ruby-1.8.5を再インストールする。
yum -y install ruby ruby-devel ruby-irb ruby-rdoc ruby-ri
RubyGems-1.3.5を再インストールする。
cd rubygems-1.3.5 checkinstall -R "ruby setup.rb" rpm -ivh /usr/src/redhat/RPMS/i386/rubygems-1.3.5-1.i386.rpm
Railsのインストール。0.7.0では、Rails 2.0.2を指定する。
あと、fcgiも入れとく。
gem install rails -v=2.0.2 gem install fcgi
以前のredmine.confとpublicディレクトリ以下の.htaccessを以前のものに戻して、Apacheの再起動をしたら、見事に復旧した。とりあえず、ほっとした。ただ、1日何やってたんだろうという徒労感だけは半端なかったけど、データのバックアップって大事だなぁと痛感されられた。アップグレードできなかった原因はまた後日、余裕があるときにやろうと思う。