Edited at

bitnamiで構築されたRedmineを別サーバに引っ越し(bitnami解除 , mysql5.5 -> 5.6, CentOS6.7 -> 7.5)

More than 1 year has passed since last update.


作業方針・内容

タイトルのとおりです。

bitnamiで構築したRedmineを他のサービス(webサイトやjava系webアプリ)が稼働するサーバに移動します。

bitnamiは redmineを実行するのに必要なミドルウェア(*)が統合されていますが移行先では使わずに以下のようにします。

[*]bitnamiのredmineに統合されている主なミドルウェア


  • webサーバ : 移行先のサーバですでに稼働している apache 2.4.6 を共有

  • databaseサーバ : 外部データベース(RDS for MySQL)を利用 (バージョンは5.6.34

  • Ruby : 移行先サーバに新規インストールする。バージョン2.0.0は揃える


結果

ネットには同様の情報がなく(見つけられず)、移行元と移行先でOSやMySQLのバージョンも違っているので、本当にできるか確信を持てないままの作業でした。

結果、なんとかうまくいきました。

Passengerのビルドエラー、Rakeコマンドエラーを解消するのに苦労しました。一部は移行元のパッケージバージョンをいくつか変更する必要がありました。「途中、やっぱり無理かもしれない。(T_T)」とも思いましたが、移行すれば月額1000円の節約になる動作が早くなることをモチベーションに頑張りました。


サーバ基本情報(移行元、移行先)


移行元


  • さくらVPS 1GB

  • Centos 6.7 $ cat /opt/redhat-release

  • redmine専用

  • bitnamiで構築

  • redmine 3.1.0.stable

  • ruby 2.0.0-p645 $ /opt/redmine-3.1.0-0/ruby/bin/ruby -v

  • rails 4.2.3

  • database apapter : mysql2

  • plugin : redmine_github_hook(bitbucketと連動)

  • mysql 5.5.42 $ /opt/redmine-3.1.0-0/mysql/bin/mysql --version

  • apache 2.4.16 $ /opt/redmine-3.1.0-0/apache2/bin/apachectl -v

  • passenger-5.0.6

[参考1]テーマはカスタマイズしていますが今回は意識することはありませんでした。(Redmineディレクトリをまるごと移動した場合、最初から移行前の状態が復元できます。)

[参考2]上記の情報の一部はRedmineから取得できます。(メニュー > 管理 > 情報)


移行先(移行前の状態)


  • 某VPS(3core / 6GB)

  • Centos 7.5

  • apache 2.4.6

  • mysql なし

  • ruby, rails, passenger なし


作業手順

おおざっぱに書くと以下のような流れです。


  • データベース移行

  • Redmine本体移行

  • 移行先での環境構築


データベース移行

まずはデータベースを移行します。

redmine公式サイトのサポートするデータベースの補足にmysql5.6以上は既知のissueが3つあることが記載されている。


一つはMariaDB対応、一つは5.7対応なので今回は無関係。


残りのissueを読むと並行処理系のテストが常に失敗するということのようでした。

ヘビーな使い方をするわけではないので許容できそうな気がしますが全く動かないのでは困るし引っ越し作業が無駄になってしまうので、まずはデータベースだけ切り替えて試してみます。

手順は以下の通りです。


  • 現行のDBサーバからバックアップを取得

  • RDSへの接続許可

  • MySQLへの接続許可(ユーザ作成と権限付与)

  • 取得したバックアップを移行先DBサーバにリストア

  • redmineのデータベース定義を移行先DBに変更

  • Redmine再起動


データベースバックアップ

バックアップは、mysqldump(これもbitnamiに含まれている) を使って簡単に取得できます。

以下のコマンドを実行すると、sqlファイルが作成されます。

接続情報は、 config/database.yml に記載されています。

/opt/redmine-3.1.0-0/mysql/bin/mysqldump -u bitnami -p<your password> -h localhost bitnami_redmine > /usr/local/src/redmine_bk_`date +%Y-%m-%d`.sql


RDS接続許可

AWSコンソールからRDSへの接続許可を設定します。(これをやらないとMySQLの前で接続拒否されるので接続できません)

具体的には 当該インスタンスに紐付いているSecurityGroupのインバウンドで、Redmineが動作しているサーバのIPアドレスを追加します。

RDSインバウンド許可設定


RDS上にRedmine用データベースの作成

mysql > create database redmine;


ユーザ作成・権限付与

作成したデータベースへへのフルアクセス権限を持つユーザ作成します。

具体的な方法は、ネット上にたくさん掲載されているので参照してください。


redmine接続設定変更

database.ymlの host , username , password を更新します。

vi /opt/redmine-3.1.0-0/apps/redmine/htdocs/config/database.yml


redmine再起動

/opt/redmine-3.1.0-0/ctlscript.sh restart


動作確認

チケットを追加して意図した移行先のデータベースに登録されているか確認します。

以下は issue テーブルで確認するクエリです。

 select id, subject from issues order by id desc LIMIT 1\G

ちゃんと追加されている。なんとかなりそうなので引っ越しを実行。


Redmine本体の引っ越し

バックアップリスト手順だと files フォルダをバックアップするだけだが今回はrsyncを使ってごっそり引っ越しました。

redmineが格納されているのはhtdocsディレクトリです。

rsync -av /opt/redmine-3.1.0-0/apps/redmine/htdocs  <server ipaddress or domain>:/home/<your user>/


移行先での作業


/opt下にredmine-3.1.0として配置

mv /home/<your user>/htdocs /opt/redmine-3.1.0


Redmineディレクトリのオーナ変更

いろいろやる時に権限エラーが出たので作業するユーザを所有者とする。(最後にapacheに所有者を変更します)

sudo chown -R <your user>  /opt/redmine-3.1.0


config/database.yml の設定

移行前に設定していればそのまま利用。


CentOSパッケージインストール

実際には本節と次節以降(gemパッケージインストールとpassengerビルド)で実行エラー、インストールエラーが多発していったりきたりしました。

本節と次節の記載は最終的な状態とコマンド履歴を突き合わせて、こうすればうまくいくだろうと思われるものを整理しました。

$ yum -y groupinstall "Development Tools"

$ yum -y install openssl-devel readline-devel zlib-devel curl-devel libyaml-devel libffi-devel
$ yum -y install httpd httpd-devel
$ yum -y install ImageMagick ImageMagick-devel ipa-pgothic-fonts
$ yum install ruby ruby-devel
$ rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
$ yum install mysql-community-server


サービス起動(および再起動時の自動起動)

$ sudo systemctl start  mysqld

$ sudo systemctl enable mysqld


Gemパッケージインストール

$ gem install bundler -v '1.16.6' --no-rdoc --no-ri

$ gem install rack -v=1.6.4 --no-rdoc --no-ri
$ gem install passenger -v=5.0.30 --conservative --no-rdoc --no-ri
$ gem install rake -v '12.3.1' --no-doc --no-ri
$ gem install libmysqlclient-dev
$ gem install mysql2 -v '0.3.21' --no-rdoc --no-ri
$ gem install ruby-mysql -v '2.9.14' --no-rdoc --no-ri


Passengerインストール

./passenger-install-apache2-module --auto --languages ruby


bundle実行

bundle install --without development test --path vendor/bundle


apache設定


redmine用のconfig追加


/etc/httpd/conf.d/redmine.conf

# Redmineの画像ファイル・CSSファイル等へのアクセスを許可する設定。

# Apache 2.4のデフォルトではサーバ上の全ファイルへのアクセスが禁止されている。
<Directory "/opt/redmine-3.1.0/public">
Require all granted
</Directory>

# Passengerの基本設定。
# passenger-install-apache2-module --snippet で表示された設定を記述。
# 環境によって設定値が異なるため以下の5行はそのまま転記せず、必ず
# passenger-install-apache2-module --snippet で表示されたものを使用すること。
#
LoadModule passenger_module /opt/redmine-3.1.0/vendor/bundle/ruby/2.0.0/gems/passenger-5.0.6/buildout/apache2/mod_passenger.so

<IfModule mod_passenger.c>
PassengerRoot /opt/redmine-3.1.0/vendor/bundle/ruby/2.0.0/gems/passenger-5.0.6
PassengerDefaultRuby /usr/bin/ruby
</IfModule>

# 必要に応じてPassengerのチューニングのための設定を追加(任意)。
# 詳しくはPhusion Passenger users guide(https://www.phusionpassenger.com/library/config/apache/reference/)参照。
PassengerMaxPoolSize 20
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 864000
PassengerStatThrottleRate 10

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



仮想ホスト設定


/etc/httpd/conf/httpd.conf

<VirtualHost *:80>

ServerName redmine-travel.nyango.com
DocumentRoot /opt/redmine-3.1.0/public
</VirtualHost>


Redmineディレクトリのオーナ変更(WEBサーバに)

chown -R apache:apache /opt/redmine-3.1.0


その他の設定


Gitコミット時に実行する処理定義の更新(webhooks)

bitbucketの当該リポジトリの設定からwebhooks設定を更新する。


参考URL

RedmineInstall - Redmine

RedmineBackupRestore - Redmine

Redmine 3.4をCentOS 7.3にインストールする手順