開発時のサーバーとして今までは、 EC2 を使って、Subversion+Redmineを立ち上げていました。構築時の記事はこちらをご覧ください。
でも、最近はソースコード管理は Git (Bitbucket) ばかりだし、運用していた EC2 は t1.micro で、そろそろいろいろ新しくしたいなと思っておりました。 このサーバーは t1.micro のリザーブドインスタンスで運用していたのですが、昨年、無事にリザーブドインスタンスの期間が満了したので、新しいサーバーへ移行することにしました。
目をつけていたのは、運用費用を抑えられそうな t2.nano のインスタンス。自分の開発用のredmine動かすぐらいなら、これで十分じゃないかな?という目論見です。
ということで、 t1.micro 上の Redmine 2.4.1 を t2.nano 上の Redmine 3.3.2 へ移行したので、その際の作業を自分用のメモとしてまとめておきます。
一応、移行前後の情報をまとめておきます。
移行前 | 移行後 | |
---|---|---|
EC2インスタンス | t1.micro | t2.nano |
仮想化種類 | PV | HVM |
OS, Ubuntu 64bit | 12.04 | 14.04 |
Redmine | 2.4.1 | 3.3.2 |
※ 両方とも、Bitnamiのスタックを利用して立ち上げ
なお、移行前は Subversion のリポジトリも運用していましたが、最近は使ってないので、新サーバーでは Subversion は使わないことにします。
EC2 インスタンスの立ち上げ
というわけで、まずは t2.nano のインスタンスを立ち上げます。といっても、目的は Redmine を動かすことなので、前と同じく、 Bitnami を利用したいと思います。 リンク先ページで東京リージョンを選択して、amiのリンクをクリックするか、AWS のコンソールにログインして、インスタンスの立ち上げを選択して、コミュニティAMIで検索すれば、立ち上げたいAMIを見つけることができます。インスタンスは、財布にやさしい t2.nano を選択しておきます。
あとは、デフォルト設定で起動すれば、新しい環境が出来上がりです。 さて、ここからが、面倒そうなデータのマイグレーションになります。
Redmine 3.3.2 へマイグレーション
さて、新しいサーバー(とRedmine)が立ち上がったので、古いサーバー上の Redmine のデータを移行したいと思います。 幸い、Redmineのプラグインとかは一切入れていなかったので、比較的簡単に移行できると思います。
移行データの取得
古いサーバーにログインして、移行に必要なデータを取得しておきます。下記などに、データのバックアップ方法が載っているので、その通りにします。
Bitnami のRedmineスタックの場合、 /opt/bitnami/apps/redmine/htdocs/ にファイルなどがあります。
bitnami@ip-10-134-200-227:~$ cd /opt/bitnami/apps/redmine/htdocs/ bitnami@ip-10-134-200-227:/opt/bitnami/apps/redmine/htdocs$ tar zcvf ~/files.tgz files/ bitnami@ip-10-134-200-227:/opt/bitnami/apps/redmine/htdocs$ cd bitnami@ip-10-134-200-227:~$ bitnami@ip-10-134-200-227:~$ mysqldump -u bitnami -pxxxxxx bitnami_redmine > redmine.dump
こんな感じですね。mysqlへの接続時のユーザー名・パスワード・データベース名などは、
bitnami@ip-10-134-200-227:~$ cat /opt/bitnami/apps/htdocs/config/database.yml
で確認できます。
データのリストア
ネットを調べると、いろいろと移行手順が見つかりますが、最終的に、下記のドキュメントを参考に作業を行いました。
Bitnami Redmine Stack for AWS Cloud
準備として、先ほど取得したredmineのデータを新しいサーバーにアップロードしておきます。 次に、mysqlにログインします。
bitnami@ip-172-30-0-93:~$ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. (略) mysql>
このときのパスワードが何かがちょっとわからなかったのですが、下記ページのデフォルトのアプリケーションパスワードと同じでした。
既存のredmineのデータベースを削除して、もう一度作り直します。
mysql> drop database bitnami_redmine; Query OK, 55 rows affected (2.01 sec) mysql> create database bitnami_redmine; Query OK, 1 row affected (0.00 sec) mysql> grant all privileges on bitnami_redmine.* to 'bitnami'@'localhost' identified by 'データベースのパスワードを指定'; Query OK, 0 rows affected (0.00 sec) mysql>
ここで、パスワードは、 /opt/bitnami/apps/redmine/htdocs/config/database.yml 記載のものと一致させています。 自分で、パスワードを設定した場合は、 database.yml 側のパスワードを変更することになると思います(未確認)。
次に、データのインポートを行います。
bitnami@ip-172-30-0-93:~$ mysql -u root -p bitnami_redmine < redmine.dump Enter password: bitnami@ip-172-30-0-93:~$
上記のredmine.dumpが既存サーバーから落としたデータです。
bitnami@ip-172-30-0-93:~$ cd /opt/bitnami/apps/redmine/htdocs/ bitnami@ip-172-30-0-93:/opt/bitnami/apps/redmine/htdocs$ bitnami@ip-172-30-0-93:/opt/bitnami/apps/redmine/htdocs$ mv files/ files.org bitnami@ip-172-30-0-93:/opt/bitnami/apps/redmine/htdocs$ sudo tar zxvf ~/files.tgz bitnami@ip-172-30-0-93:/opt/bitnami/apps/redmine/htdocs$
次にマイグレーションを行うのですが、その前に、ログファイルの所有者を変更しておきます。というのも、デフォルトのままマイグレーションを行ったら、ログファイルへの書き込み権限がないというエラーで、マイグレーションが失敗したためです。
bitnami@ip-172-30-0-93:~$ cd /opt/bitnami/apps/redmine/htdocs/ bitnami@ip-172-30-0-93:/opt/bitnami/apps/redmine/htdocs$ cd log bitnami@ip-172-30-0-93:/opt/bitnami/apps/redmine/htdocs/log$ ls -l total 4 -rw-r--r-- 1 daemon daemon 2253 Apr 3 15:23 production.log bitnami@ip-172-30-0-93:/opt/bitnami/apps/redmine/htdocs/log$ cp -p production.log production.log.org bitnami@ip-172-30-0-93:/opt/bitnami/apps/redmine/htdocs/log$ sudo chown bitnami production.log bitnami@ip-172-30-0-93:/opt/bitnami/apps/redmine/htdocs/log$ ls -l total 8 -rw-r--r-- 1 bitnami daemon 2253 Apr 3 15:23 production.log -rw-r--r-- 1 bitnami bitnami 2253 Apr 3 15:23 production.log.org bitnami@ip-172-30-0-93:/opt/bitnami/apps/redmine/htdocs/log$
ここまで来たら、マイグレーションを行います。
bitnami@ip-172-30-0-93:~$ cd /opt/bitnami/apps/redmine/htdocs/ bitnami@ip-172-30-0-93:/opt/bitnami/apps/redmine/htdocs$ ruby bin/rake db:migrate RAILS_ENV=production
エラーが表示されなければOKだと思います。
あとは、キャッシュのクリアをして、
bitnami@ip-172-30-0-93:/opt/bitnami/apps/redmine/htdocs$ ruby bin/rake tmp:cache:clear bitnami@ip-172-30-0-93:/opt/bitnami/apps/redmine/htdocs$ ruby bin/rake tmp:sessions:clear
Redmineをリスタートさせます。
bitnami@ip-172-30-0-93:/opt/bitnami/apps/redmine/htdocs$ cd ../../.. bitnami@ip-172-30-0-93:/opt/bitnami$ sudo ./ctlscript.sh restart
新サーバーへアクセスすると、既存のRedmineのユーザーでログインしたり、プロジェクトやチケットが見れればOKだと思います。
あとは、サーバーとしていろいろ設定を行いたいと思います。