LoginSignup
11
11

More than 5 years have passed since last update.

Redmine3.1をCentOS7.1にインストールし、既存のRedmine1.2のデータの移行を行う手順

Posted at

古いサーバ上でRedmine1.2が動いていたのですが、サーバのリプレースとともにRedmineの移行+Redmine3.1へのアップグレードを行ったので、その手順をメモ。

環境

移行先サーバ

  • OS: CentOS7.1
  • DB: MariaDB 5.5.44

移行元サーバ

  • OS: CentOS5.6
  • DB: MySQL 5.0.77
  • Redmine 1.2

既存のデータの抽出

ファイルのバックアップ

(Redmineホーム)/files 配下にファイルが格納されているため、ディレクトリごとコピーする。
※以下ではRedmineホームを/var/lib配下としている

$ sudo cp -r /var/lib/redmine-1.2.1/files ~/files_bak

DBのダンプ

$ sudo mysqldump -u {user} -p{password} {db} > ~/mysql.dump

これらのデータを一旦ローカルなどに退避しておく。

新サーバへRedmineをインストール

基本的には下記のスクリプトを利用し、インストールを行う。
https://github.com/farend/redmine-centos7-mariadb-ansible

※2015/12/16現在、新しいバージョンも公開されているが、新バージョンはDBとしてPostgreSQLを利用している。今回はMySQL(MariaDB)を使いたいため、上記のバージョンを用いる。

スクリプト実行準備

GitHubのREADMEに従い、スクリプト実行準備を行う。

$ sudo yum install -y epel-release
$ sudo yum install -y ansible git
$ git clone https://github.com/farend/redmine-centos7-mariadb-ansible.git

DBのパスワードを設定。

$ sudo vi redmine-centos7-mariadb-ansible/group_vars/redmine-servers

db_passwd_rootと、db_passwd_redmineを適当な内容に変更する。

スクリプト実行

スクリプトを実行する。

$ cd redmine-centos7-mariadb-ansible
$ sudo ansible-playbook -i hosts site.yml

当方の環境では、passengerの設定を取得する部分が正常に動作しなかった。
そこで、その部分のみ手動で設定する。

$ passenger-install-apache2-module --snippet

下記のように表示されるので、コピーしておく。
※環境により記述が変化するので、この通りとは限らない。

LoadModule passenger_module /usr/local/lib/ruby/gems/2.2.0/gems/passenger-5.0.21/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/lib/ruby/gems/2.2.0/gems/passenger-5.0.21
  PassengerDefaultRuby /usr/local/bin/ruby
</IfModule>

コピーした記述およびその他の設定の記述をApacheのコンフィグに記述する。

$ sudo vi /etc/httpd/conf.d/redmine.conf

<Directory "/var/lib/redmine/public">
  Require all granted
</Directory>

LoadModule passenger_module /usr/local/lib/ruby/gems/2.2.0/gems/passenger-5.0.21/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/lib/ruby/gems/2.2.0/gems/passenger-5.0.21
  PassengerDefaultRuby /usr/local/bin/ruby
</IfModule>

Header always unset "X-Powered-By"
Header always unset "X-Runtime"

PassengerMaxPoolSize 20
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 864000
PassengerHighPerformance on
PassengerStatThrottleRate 10
PassengerSpawnMethod smart
PassengerFriendlyErrorPages off

アクセスURLの設定

今回はサブディレクトリ/redmineでアクセスできるようにしたい。
Apacheのドキュメントルートに指定されているディレクトリにシンボリックリックを貼る。

$ sudo ln -s /var/lib/redmine/public /var/www/html/redmine

Apacheのコンフィグを変更する。先ほど作成したredmine.confに記述を追加する。

$ sudo vi /etc/httpd/conf.d/redmine.conf
# 省略

RackBaseURI /redmine

# 省略

Apacheを再起動する。

$ sudo systemctl restart httpd.service

動作確認

(サーバのIPアドレス)/redmineにブラウザからアクセスし、Redmineのトップが表示されることを確認する。

データの復旧

ファイルの復旧

退避しておいたfilesディレクトリとMySQLのダンプファイルを新サーバにSCPなどで転送し、redmine配下へ移動する。

$ sudo rm -rf /var/lib/redmine/files
$ sudo mv ~/files_bak /var/lib/redmine/files

DBの復旧

ダンプしたMySQLのデータを流し込む。

$ mysql -u {user} -p{password} {db} < ~/mysql.dump

DBのマイグレーションを行う必要があるが、そのままのテーブル構成だとエラーが発生するため、手動で不要な(マイグレーションにより作成されるはずの)テーブルの削除を行う。

$ mysql -u {user} -p{password} {db}

mysql> drop table changeset_parents;
mysql> drop table queries_roles;
mysql> drop table custom_fields_roles;
mysql> drop table email_addresses;
mysql> drop table roles_managed_roles;

DBのマイグレーションを行う。

$ cd /var/lib/redmine
$ sudo rake db:migrate RAILS_ENV=production

その他

一部のページへのリクエストで文字コードに起因するエラーが発生するため、アプリケーションコードの修正を行う。

$ sudo vi var/lib/redmine/app/helpers/application_helper.rb
# Helper to render JSON in views
  def raw_json(arg)
    arg = force_utf8_strings(arg) #add
    arg.to_json.to_s.gsub('/', '\/').html_safe
  end

# (中略)

private

# (中略)

# add
  def force_utf8_strings(arg)
    if arg.is_a?(String)
      arg.dup.force_encoding('UTF-8')
    elsif arg.is_a?(Array)
      arg.map do |a|
        force_utf8_strings(a)
      end
    elsif arg.is_a?(Hash)
      arg = arg.dup
      arg.each do |k,v|
        arg[k] = force_utf8_strings(v)
      end
      arg
    else
      arg
    end
  end

参考:Redmine カスタムクエリが500 ActionView::Template::Error ("XXX" from ASCII-8BIT to UTF-8) になるときの対処方法

11
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
11