RedMine:アップグレードに失敗したのちに復旧

会社の開発用サーバに入れている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日何やってたんだろうという徒労感だけは半端なかったけど、データのバックアップって大事だなぁと痛感されられた。アップグレードできなかった原因はまた後日、余裕があるときにやろうと思う。


タグ Backup, Linux, RedMine, システム開発 | パーマリンク.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です