2016年12月9日金曜日

Redmineのバージョンアップ 2.5 → 3.3 その2

オフィス狛 技術部です。

前回(Redmineのバージョンアップ 2.5 → 3.3 その1)でようやく前準備が出来たので、
今回は Redmine 自体のバージョンアップを進めて行きます。

1)Redmine の本体をダウンロード・配置

まず、本家サイトから、 redmine-3.3.1.tar.gz をダウンロードします。

Redmineのインストールディレクトリ( /var/lib )に展開します。
$ tar xvf redmine-3.3.1.tar.gz
$ sudo mv redmine-3.3.1 /var/lib/

ディレクトリを /var/lib へ移動します。
$ cd /var/lib

前バージョンの設定ファイルを新バージョンの config ディレクトリにコピーします。
$ cp -p redmine/config/configuration.yml redmine-3.3.1/config
$ cp -p redmine/config/database.yml redmine-3.3.1/config

前バージョンに添付したファイルを新バージョンへコピーします。
$ cp -pr redmine/files redmine-3.3.1

※今回はプラグインを前もって全て削除しているので必要ありませんが、
削除していない場合は、プラグインも新バージョンへコピーする必要があります。

※自分で追加したテーマも新バージョンでも使いたい場合はコピーする必要があります。
今回は、アップグレード後に改めてテーマを入れる予定なので、旧バージョンからの移行はしていません。

2)アップグレード

新バージョンのディレクトリに移動します。
$ cd /var/lib/redmine-3.3.1

インストールを実施します。
$ bundle install --without development test

ここでエラーが出ました。
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
(中略)
/usr/bin/ld: -lmysqlclient が見つかりません
collect2: error: ld returned 1 exit status
make: *** [mysql2.so] エラー 1
(中略)
An error occurred while installing mysql2 (0.3.21), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.3.21'` succeeds before bundling.

共有ライブラリが見つからない、と怒られています。
というわけで、共有ライブラリへのリンクを作ります。
$ sudo ln -s /usr/lib64/mysql/libmysqlclient.so.18.0.0 /usr/lib64/libmysqlclient.so

再度インストールを実行します。
$ bundle install --without development test
Your bundle is complete!
Gems in the groups development and test were not installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.
今度は成功しました。

続いて鍵の生成を行います。
$ bundle exec rake generate_secret_token
rake aborted!
LoadError: incompatible library version - /home/ofkomamanage/.gem/ruby/2.0/gems/nokogiri-1.6.8.1/lib/nokogiri/nokogiri.so
またエラーになりました。

足りないライブラリがあるようなので、
ここで一度、必要なライブラリをインストールします。(パスの指定が必要です)
$ bundle install --path=vendor/bundle

再度、コマンド(鍵の生成)を実行します。
$ bundle exec rake generate_secret_token

3)データベースの更新

マイグレーションを行います。
$ bundle exec rake db:migrate RAILS_ENV=production

※今回はプラグインを前もって全て削除しているので必要ありませんが、
削除していない場合、以下のコマンドにてプラグイン分のマイグレーションも行う必要があります。
$ bundle exec rake redmine:plugins:migrate RAILS_ENV=production

4)クリーン

キャッシュとセッションのクリアを行います。
$ bundle exec rake tmp:cache:clear tmp:sessions:clear

5)Passenger のセットアップ

Passenger は、Rails を使って作られたWebアプリケーションをApacheで動かす為のモジュールです。
では、早速 Passenger をインストールします。
$ rbenv exec gem install passenger --no-rdoc --no-ri

セットアップを続けます。
$ passenger-install-apache2-module

Please edit your Apache configuration file, and add these lines:

   LoadModule passenger_module /home/officekoma/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/passenger-5.0.30/buildout/apache2/mod_passenger.so
   
     PassengerRoot /home/officekoma/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/passenger-5.0.30
     PassengerDefaultRuby /home/officekoma/.rbenv/versions/2.3.1/bin/ruby
   

Apacheの「conf.d」ディレクトリ内に、「passenger.conf」というファイルを作成し、
上記の「LoadModule passenger_module」以降の部分をそのまま貼り付けます。

6)Webサーバー(Apache)の設定変更と再起動

この辺は、各環境によって設定方法は変わってくると思いますが、
弊社の場合、Redmineが動いているサーバーでは、他のWebシステムは動いていません。
なので、DocumentRoot を「/var/lib/redmine/public」から、
「/var/lib/redmine-3.3.1/public」に直接変更し、再起動します。
$ sudo /etc/init.d/httpd restart

いざ接続してみると、「Internal Server Error」に・・・。
ログを確認してみます。
DEPRECATION WARNING: You didn't set `secret_key_base`. Read the upgrade documentation to learn more about this new config option. (called from validate_secret_key_config! at /home/officekoma/.gem/ruby/2.0/gems/railties-4.2.7.1/lib/rails/application.rb:530)

Secret Key を設定しなくてはいけないようです。
$ rake secret
上記コマンドを実行すると、長い文字列が表示されるので、それをコピーしておきます。
そして、下記コマンドで Secret Key 設定ファイルを開きます。
$ vi /var/lib/redmine-3.3.1/config/initializers/secret_token.rb

下記「xxxxxxxxx」の部分を先程コピーした Secret Key で置き換えます。
RedmineApp::Application.config.secret_key_base = 'xxxxxxxxx'
これでエラーは出なくなりました。

長い道のりでしたが、これでRedmineのバージョンアップは完了です。
(これでも思ったよりはスムーズに行きました。)
後はしばらく稼働させて様子見です。

0 件のコメント:

コメントを投稿