サル以下でもできた！Redmineの移行(Windows Bitnami Redmine → AWS Bitnami redmine)

# 自宅のWindows Redmine サーバーは色々不安があったのでAWSへ移行した時の覚書です

## 読むに当たっての前提条件
- AWS が何なのかを概ね知っている。
- Bitnami Redmine が何なのかを概ね知っている
- WindowsとAWSに Bitnami Redmine環境がある。
- Tera Termを使ったことがある又は、SSHで接続する方法を知っている。
- FTPソフトが使え、SSH接続方法を知っていて使える。

## パスワードその他必要な情報
**/var/log/syslog**を参照するとパスワードが取得できます。
このパスワードは、共通で使われているので大切です。
こんな感じで入っています。
May  1 02:57:35 ip-172-31-31-77 bitnami[1218]: #########################################################################
May  1 02:57:35 ip-172-31-31-77 bitnami[1218]: #                                                                       #
May  1 02:57:35 ip-172-31-31-77 bitnami[1218]: #        Setting Bitnami application password to 'xxxxxxxxxxxx'         #
May  1 02:57:35 ip-172-31-31-77 bitnami[1218]: #        (the default application username is 'user')                   #
May  1 02:57:35 ip-172-31-31-77 bitnami[1218]: #                                                                       #
May  1 02:57:35 ip-172-31-31-77 bitnami[1218]: #########################################################################
- Tera Termでのログインは bitnami+パスワード
- DBのroot+パスワード
- DBのbitnami+パスワード
- phpmyadminだとroot+パスワード
- データベース名:bitnami_redmine
- DBの設定は/opt/bitnami/apps/redmine/htdocs/config/database.yml
- メールの設定は、/opt/bitnami/apps/redmine/htdocs/config/configuration.yml
- 使いどころはわかりませんが、userというIDもあるみたい。
ポイントになるディレクトリをあげておきます。  
/opt/bitnami/apache2/logs
/opt/bitnami/apps
/opt/bitnami/apps/redmine/htdocs
/opt/bitnami/apps/redmine/htdocs/config
/opt/bitnami/apps/redmine/htdocs/log
/opt/bitnami/apps/phpmyadmin/conf/
/var/log
変だなって思ったらここのログを見る
/opt/bitnami/apps/redmine/htdocs/log/production.log

my.cnfの場所を探す
$ mysql --help | grep my.cnf
ここに実際ありました。
/etc/mysql

## phpMyAdminを使えるようにしておくと便利なので
そのままだと、外部からアクセスできないので設定を変更します。
/opt/bitnami/apps/phpmyadmin/conf/httpd-app.conf　の以下の項目を編集
- Allow from 127.0.0.1 → Allow from all
- ・Require local → Require all granted
apacheを再起動  
sudo /opt/bitnami/ctlscript.sh restart apache
これで起動ができるようになります。  
bitnamiでログインしてもよいですが、root+パスワードログインする方が良いかもです。
★注意！対象のサーバーを一般に公開する場合は、危険なので必要なくなったら元に戻すか、IPを限定するなどしましょう。
## ローカルにWindows側のバックアップを取る
以前のサーバーにもphpmyadminがあると思います。データエクスポートしましょう。
後で、AWSのサーバーに転送してます。
他のサイトにはコマンドで実行する旨がよく書いてあります。
僕はコマンド苦手なのでこうしましたが、どちらでもお好みでどうぞ！
参考はこちら
[Bitnami Redmine Installer]
(https://docs.bitnami.com/installer/apps/redmine/)

## インストール先のバックアップを取る
- 書き込み権限のある場所に移動(そこに取ります)  
cd /var/tmp
- サービスの停止  
sudo installdir/ctlscript.sh stop
- バックアップ  
sudo tar -pczvf bitnami_application-backup.tar.gz /opt/bitnami
```  
念の為、**ls**でファイルができているか確認しましょう。
- 最後に止めておいたサービスをの起動しましょう
sudo /opt/bitnami/ctlscript.sh start
念の為なので終わったら、ローカルにコピーするなり好きにしてください。
失敗談：うっかりして、目的でない別のサーバーで作業してました。

## DBのインポート
phpMyAdmin使っても良いです。
通常は2MBだったと思いますが、80MB位までなら大丈夫に設定されているみたいです。
必要なサービスの停止と開始  
    sudo /opt/bitnami/ctlscript.sh stop apache
    sudo /opt/bitnami/ctlscript.sh stop mysql
    sudo /opt/bitnami/ctlscript.sh start mysql
Windowsからバックアップしたファイルを新サーバーに転送します。
場所はどこでもよいです。とりあえず以下に置きました。
/var/tmp/bitnami_redmine.sql
cd /var/tmp/
mysql -u root -p
Password: XXXX
mysql> drop database bitnami_redmine;
mysql> create database bitnami_redmine;
mysql> grant all privileges on bitnami_redmine.* to 'bn_redmine'@'localhost' identified by 'XXXX';
CTRL+C又はexit;で終了
mysql -u root -p bitnami_redmine < bitnami_redmine.sql
Password: XXXX
rm bitnami_redmine.sql

## ファイルの取り込み
添付ファイルのフォルダーをファイルをコピーします。
プラグインがあればそれも。
場所だけ書いておきます。
/opt/bitnami/apps/redmine/htdocs/files
/opt/bitnami/apps/redmine/htdocs/plugins
Windows側も似たような場所にありますから探してください。
念の為、あるかどうかも確認します。
パーミッション（書き込みできるか）も確認しておきましょう。

## DB接続の編集
redmine構成ファイルを編集してデータベース名（以前に設定したものと同じ）を更新します。
必要ならユーザーIDとパスワードを設定します。
正しく設定しないとマイグレーションでエラーが出る。当然だけど。

## 最後にマイグレーション
cd /opt/bitnami/apps/redmine/htdocs/
ruby bin/rake db:migrate RAILS_ENV=production
うまく行かない場合は、SQL接続してログインできるか試してみるといい。

## サーバーを再起動します。
Apache再起動方法はこれ！！
sudo /opt/bitnami/ctlscript.sh start apache```

## おっと、忘れてた
メールの設定を前のサーバーのをコピーして使いましょう。
/opt/bitnami/apps/redmine/htdocs/config/configuration.yml
を編集して
sudo /opt/bitnami/ctlscript.sh restart apache```

## WEBからの確認
WEBから接続を確認しましょう。
場合によってはメール送信部分の変更は必要かもしれません。

# 超ハマったこと！！

##１． メール設定のエラーで画面に？
このエラー
We're sorry, but something went wrong.
The issue has been logged for investigation. Please try again later.
先輩に教えてもらいました。
これをテストした時に定義の桁位置ずれを起こしていました。
/opt/bitnami/apps/redmine/htdocs/config/configuration.yml
データが始まる位置で入れこができるらしく、それがずれるとダメということです。
ついでに言うと、スペースだけが入った行があっても駄目だそうです。

##２．メールがとばないその１
redmineの個人設定で「自分自身による変更の通知は不要」をチェックしていた。
全然気が付かなかった。先輩ありがと！

##３．メールがとばないその２
メールの設定で、
/opt/bitnami/apps/redmine/htdocs/config
SSLを使っていないのに使う設定にしてました。
以下の様に設定
enable_starttls_auto: false
想像もできなかった。重ねて先輩ありがとう！
持つべきものはいい先輩だなー。
とは言え、その先輩は自分より３０歳以上年下なんだけど。
笑えません。
##４．ファイルのアップロードができない
アップロードできない。/opt/bitnami/apps/redmine/htdocs/logを見たら、パーミッションエラーが出ていた。
Completed 500 Internal Server Error in 13ms (ActiveRecord: 3.3ms)
Errno::EACCES (Permission denied @ dir_s_mkdir - /opt/bitnami/apps/redmine/htdocs/files/2018/05):
パーミッションが775になっていた。これでだめなんだ～。777にして完了。

# 訂正：サルには無理でした。さて、コーヒータイムにしましょうか

# 参考サイト
[RedmineサーバのWindows環境からCentOS環境への移行手順]
(https://qiita.com/GEROMAX/items/2893744ae63250d44e4a)

[MySQLをインストールしたけど起動しないときのデバッグ方法]
(https://qiita.com/karadaharu/items/d96974c0c0141546f565)