2014/10/12

bitnami redmine 1.x->2.x 移行メモ

けっ こうはまりましたのでメモ!!

環境:CentOS release 5.11
旧)redmine-1.4.7-2
新)redmine-2.5.2-3




まとめてインストールできてお気楽なbitnami版ですが
それに則ったお作法を学びながらの移行となりました。
下記を参考にさせていただきました。鼻血を吹くような垂涎の情報に感謝。

Redmine Guide日本語訳 > アップグレード
http://redmine.jp/guide/RedmineUpgrade/

BitNamiを使用している時のRedmine1.4系から2.3系へのアップデート [雑多] @ komlog
http://komlog2.blog.so-net.ne.jp/2013-10-21

BitnamiのRedmineを2.5.0に更新した @ Basic
http://d.hatena.ne.jp/rabbit2go/20140309/1394374120

瞳孔が開くほど簡単にredmineを構築できる「Bitnami」 (1)
http://dharry.hatenablog.com/entry/2013/08/29/024019


実作業


まず旧redmineのDBをバックアップします。
bitnami redmineをインストールすると設置される「use_redmine」を使うことで
関連設定もろもろ行なわれた状態の端末が立ち上がります。
これがお作法 1 です。
そしてmysqldump。ファイル名はご随意に。

# cd /opt/redmine-1.4.7-2/
# ./use_redmine 
bash-3.2# mysqldump -u root -p bitnami_redmine > {dumpファイル}.sql
Enter password: 
bash-3.2# exit
exit

mysqlのパスワードを求められますが、これはbitnami redmineをインストールするときに入力したものと同じです。

そしたら旧サービスをストップ。

# /opt/redmine-1.4.7-2/ctlscript.sh stop
/opt/redmine-1.4.7-2/subversion/scripts/ctl.sh : subversion stopped
Syntax OK
/opt/redmine-1.4.7-2/apache2/scripts/ctl.sh : httpd stopped
/opt/redmine-1.4.7-2/mysql/scripts/ctl.sh : mysql stopped

移行先になる新しいredmineをインストールします。

DLしてきたヤーツに実行権限付けて、インストール開始。

# chmod 755 bitnami-redmine-2.5.2-3-linux-x64-installer.run 
# sudo ./bitnami-redmine-2.5.2-3-linux-x64-installer.run 

するといろいろ訊かれますので、順次答えて行きます。
(ちなみにサービスの併設をもくろむ場合は、こちらを参考にmysql_port、subversion_portを指定し分けるのがよい模様です。
瞳孔が開くほど簡単にredmineを構築できる「Bitnami」 (2)
http://dharry.hatenablog.com/entry/2014/03/16/135138
それにしても記事のタイトルが素晴らしい味わいです。)


Language Selection

Please select the installation language

(中略)

----------------------------------------------------------------------------
セットアップウィザードによる  のインストールが完了しました。

Redmine アプリケーション起動 [Y/n]: 
情報:  については、ブラウザで 
http://localhost:80 にアクセスしてください。
続けるには [Enter] キーを押してください : 

↑これが出たら終了。
(このとき、旧redmine等80番ポートをつかうサービスが動いていると、文句を言われます。注意)

そして新しい方を起動。

# /opt/redmine-2.5.2-3/ctlscript.sh start
141011 17:02:45 mysqld_safe Logging to '/opt/redmine-2.5.2-3/mysql/data/mysqld.log'.
141011 17:02:45 mysqld_safe Starting mysqld.bin daemon with databases from /opt/redmine-2.5.2-3/mysql/data
/opt/redmine-2.5.2-3/mysql/scripts/ctl.sh : mysql  started at port 3306
Syntax OK
/opt/redmine-2.5.2-3/apache2/scripts/ctl.sh : httpd started at port 80
/opt/redmine-2.5.2-3/subversion/scripts/ctl.sh : subversion started at port 3690


立ち上がったらDBをレストアします。

# cd /opt/redmine-2.5.2-3/
# ./use_redmine 
bash-3.2# mysql -u root -p bitnami_redmine < {dumpファイル}.sql
Enter password: 

ここまでは拍子抜けするほどカンタンです。
問題はここから。

ひっかかりポイント(migrate失敗とテーブル削除)


redmineのインストールフォルダに降りて、データベースを適用します。
ここで、検索して出てくる主な情報が指す「インストールフォルダ」と
本件でのインストールフォルダの認識のズレに気づきます。
ついつい、bitnamiが設置したフォルダ群をさして「インストールフォルダ」と思いたくなりますが……

bitnamiがインストールしたあれこれの、フォルダ
 > /opt/redmine-2.5.2-3/
(web上のみんなの言う)redmineのインストールフォルダ
 > /opt/redmine-2.5.2-3/apps/redmine/htdocs/

こうなります。
これが、お作法 2 でございます。
……というところを把握した上で、データベースの適用へ。

bash-3.2# cd apps/redmine/htdocs/
bash-3.2# bundle exec rake db:migrate RAILS_ENV='production'

db:migrate って?についてはこちら
http://railsdoc.com/references/rake%20db:migrate

ここでこのようなエラーが

Mysql2::Error: Table 'queries_roles' already exists: CREATE TABLE `queries_roles` (`query_id` int(11) NOT NULL, `role_id` int(11) NOT NULL) ENGINE=InnoDB/opt/redmine-2.5.2-3/apps/redmine/htdocs/vendor/bundle/ruby/2.0.0/gems/activerecord-3.2.19/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:245:in `query'

なんか、作りたいテーブルがすでにあるから困る的な内容です。
(この状態で localhost/redmine/ にアクセスすると、みれるところとみれないところがあって、苦悶に満ち満ちていました)
困るので削除しに行きます。

bash-3.2# cd ../../../
bash-3.2# mysql> drop table queries_roles;

二行目は失敗例ですw
参考サイトに書いてあったのをよく分からずそのまま打ち込みました。
これだと意味が無くて、mysqlにちゃんと入ってから DROP します。

bash-3.2# mysql -u root -p
Enter password: 

これで入れました(▼)

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.5.39 MySQL Community Server (GPL)

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

操作対象のデータベース(ここではbitnami_redmine)を指定して、テーブルをDROPします

mysql> USE bitnami_redmine 
mysql> DROP TABLE queries_roles;
Query OK, 0 rows affected (0.00 sec)

ためしになんかqueries_rolesテーブルについて問い合わせてみると、そんなやつ知らんといわれます。つまり、無事queries_rolesテーブルは亡き者となっていることが確認できました。ので、mysqlから離脱。

mysql> SHOW COLUMNS FROM queries_roles;
ERROR 1146 (42S02): Table 'bitnami_redmine.queries_roles' doesn't exist
mysql> exit
Bye

ふたたびインストールフォルダに降りて、migrateを試みます

bash-3.2# cd apps/redmine/htdocs/
bash-3.2# bundle exec rake generate_secret_token
bash-3.2# bundle exec rake db:migrate RAILS_ENV="production"


またなにか出たクッソ---

Mysql2::Error: Table 'custom_fields_roles' already exists: CREATE TABLE `custom_fields_roles` (`custom_field_id` int(11) NOT NULL, `role_id` int(11) NOT NULL) ENGINE=InnoDB/opt/redmine-2.5.2-3/apps/redmine


今度はcustom_fields_rolesテーブルが要らない子。
やることはさっきと一緒でございます。
(もうphpmyadminから削除しました…w)

これでmigrateが通るようになりました。

掃除して、念のためサービスを再起動

bash-3.2# bundle exec rake tmp:cache:clear
bash-3.2# bundle exec rake tmp:sessions:clear
bash-3.2# /opt/redmine-2.5.2-3/ctlscript.sh restart

これで無事DBの移行は出来ました。
このほかプラグインやファイルの移動などは特にはまりませんでした。

お疲れさまでした。

bash-3.2# exit



(※この記事書き終わった後に見つけたのですが、
http://rowoon520.blogspot.jp/2011/04/bitnami-redminewindows-oscentos-with.html
こちらの「手順10 」のところが、ひょっとして救世主だったかもしれません。
……またの機会があれば……(^^;;; )

0 件のコメント:

コメントを投稿