前回、新環境のOSセットアップができたようなので、ALMiniumをインストールします。

新環境構築(ALMinium)

ここからはadminで作業します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
admin@vagrant:~$ mkdir ~/src
admin@vagrant:~$ cd ~/src
admin@vagrant:~/src$ git clone https://github.com/ayapapa/alminium.git
admin@vagrant:~/src$ cd alminium
admin@vagrant:~/src/alminium$ sudo bash ./smelt

# ホスト名に暫定IPを入れる。
# あとはぜんぶ既定値(リターン連打)
#結構時間かかります。↓の表示が出たら(たぶん)成功
ALMiniumのインストールが終了しました。ブラウザーで、
http://192.168.33.18
をアクセスしてください。
10秒程度の初期化が行われた後、最初の画面が表示されます。

http://192.168.33.18にアクセスすると。。。出た!

旧環境のバックアップとコピー

最近のALMiniumにはバックアップスクリプトが付いてきているのでそちらを利用します。

作業はもちろん旧環境で!

1
2
3
4
5
6
7
#適当な作業ディレクトリ作って
[admin@~]$ mkdir migration
[admin@~]$ cd migration/
#最新版ALMiniumをget
[admin@~/migration]$ git clone https://github.com/ayapapa/alminium.git
[admin@~/migration]$ cd alminium/
[admin@~/migration/alminium]$ sudo ./backup ~/migration/backup localhost dbpassword

設定ファイルもバックアップしときます。

1
2
[admin@~]$ cd /opt/alminium/config
[admin@/opt/alminium/config]$ sudo tar czf ~/migration/backup/config.tar.gz .

~/migration/backup以下に日付-alm-backup.tar.gz が作られるので、こいつを何とかして新環境から参照できるようにします。

今回はsftpでホストOSのVagrantフォルダ以下(C:\var\alm\migration)にダウンロードしました。

新環境からは/vagrant/migration/でアクセス可能。

新環境に復元

こちらもrestoreスクリプトが用意されているのでそちらを使用します。

1
admin@vagrant:~/src/alminium$ sudo ./restore /vagrant/migration/2018-MM-DD-HH-MM-SS-alm-backup.tar.gz

migrationエラー

データベースマイグレーションでいろいろエラーが出るので一つずつつぶします。

1
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

queries_rolesは空だったのでdrop table

1
2
3
4
mysql> select * from `queries_roles`;
Empty set (0.00 sec)
mysql> drop table `queries_roles`;
Query OK, 0 rows affected (0.03 sec)

同じようなエラーが出るので都度削除。

最終的にはかなりテーブル消しました。

— db:migrate
1
2
3
4
5
6
7
8
drop table IF EXISTS
    `queries_roles`
    ,`custom_fields_roles`
    ,`roles_managed_roles`
    ,`imports`
    ,`import_items`
    ,`custom_field_enumerations`
    ,`email_addresses`
— redmine:plugins:migrate
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
drop table IF EXISTS
    `rb_release_burnchart_day_caches`
    , `rb_releases_multiview`
    , `dmsf_folders`
    , `dmsf_files`
    , `dmsf_file_revisions`
    , `dmsf_file_revision_accesses`
    , `dmsf_file_locks`
    , `dmsf_workflows`
    , `dmsf_locks`
    , `dmsf_workflow_steps`
    , `dmsf_workflow_step_assignments`
    , `dmsf_workflow_step_actions`
    , `dmsf_links`
    , `dmsf_public_urls`
    , `jenkins_settings`
    , `jenkins_jobs`
    , `jenkins_builds`
    , `jenkins_test_results`
    , `changesets_jenkins_builds`
    , `client_applications`
    , `oauth_tokens`
    , `oauth_nonces`
    , `wiki_extensions_comments`
    , `wiki_extensions_tags`
    , `wiki_extensions_tag_relations`
    , `wiki_extensions_settings`
    , `wiki_extensions_menus`
    , `wiki_extensions_counts`
    , `wiki_extensions_votes`

`email_addresses`にはデータが乗ってたけど、admin@example.netつー意味なさげなデータだったんでdrop table。

…スゲーめんどくさかった。マイグレーションの意味なくね?ActiveRecordがへぼいのか?

気を取り直して、マイグレーションの再実行。/opt/alminiumで実行

1
2
3
4
5
6
7
8
admin@vagrant:~$ cd /opt/alminium
#ここでdb:migrate向けのDrop table
admin@vagrant:/opt/alminium$ sudo bundle exec rake db:migrate RAILS_ENV=production
#ここでredmine:plugins:migrate向けのDrop table
admin@vagrant:/opt/alminium$ sudo bundle exec rake redmine:plugins:migrate RAILS_ENV=production
admin@vagrant:/opt/alminium$ sudo bundle exec rake tmp:cache:clear RAILS_ENV=production
admin@vagrant:/opt/alminium$ sudo bundle exec rake tmp:sessions:clear RAILS_ENV=production
admin@vagrant:/opt/alminium$ sudo service apache2 restart

メール設定

旧環境の/opt/alminium/config/configuration.ymlを参考に新環境のファイルを編集します。

1
2
3
4
5
admin@vagrant:/opt/alminium/config$ sudo cp /opt/alminium/config/configuration.yml.example /opt/alminium/config/configuration.yml
admin@vagrant:/opt/alminium/config$ sudo chown www-data:www-data /opt/alminium/config/configuration.yml
admin@vagrant:/opt/alminium/config$ sudo nano configuration.yml
ごにゅほにゅ
admin@vagrant:/opt/alminium/config$ sudo service apache2 restart

テストメール送信します。

様子見

管理者権限でログインして、「管理」→「情報」でステータスチェックします。

「ファイルリポジトリに書き込み可能」がビックリマーク(!)になってました。

1
2
3
4
admin@vagrant:~$ ls -lad /var/opt/alminium
drwxr-xr-x  7   48   48 4096 Sep 10  2013 /var/opt/alminium
admin@vagrant:~$ ls -lad /opt/alminium/files
drwxr-xr-x 8 48 48 4096 May 21 09:44 /opt/alminium/files

なに48って?旧環境のuseridっすかね。替えます。

1
2
admin@vagrant:~$ sudo chown -R www-data:www-data /var/opt/alminium
admin@vagrant:~$ sudo chown -R www-data:www-data /opt/alminium/files

ログの参照は

tail -f /opt/alminium/log/production.log

ネット環境を本番に

様子見てよさそうなら旧環境を停止して、新環境に本番IPを振ります。

手元の環境では、DHCPサーバにMACアドレスを登録して固定アドレスもらってます。

Vagrantfile

config.vm.networkを固定IP&固定MACアドレスにします。

1
config.vm.network "public_network" , :mac => "A0B0C0A0B0C0", :ip => "123.45.67.89"

Apache

/etc/opt/alminium/redmine.confのServerNameを編集します。

1
2
3
4
admin@vagrant:~$ sudo cp /etc/opt/alminium/redmine.conf /etc/opt/alminium/redmine.conf.`date +%s`.bck
admin@vagrant:~$ SERVERNAME=`ip -4 a show eth1 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'`
admin@vagrant:~$ sudo sed -i -r "s/ServerName .*/ServerName ${SERVERNAME}/" /etc/opt/alminium/redmine.conf
admin@vagrant:~$ sudo service apache2 restart

ALMinium上のホスト名は勝手に変わってくれるみたい。

バックアップ設定

データファイルを定期的にバックアップするよう設定しときます。

Vagrantfile

バックアップの出力先はホストOS上にしたいのでVagrantでマップします。

1
config.vm.synced_folder "C:\\backup\\alminium-backup", "/var/opt/alminium-backup"

ゲスト側の/var/opt/alminium-backupはALMiniumのバックアップスクリプトの既定出力先です。

テスト

1
admin@vagrant:~$ sudo ~/src/alminium/backup

これでホスト側のC:\backup\alminium-backupにファイルができてればOK。

定期実行

cron.dailyに放り込むだけ。

1
admin@vagrant:~$ sudo ln -s /home/admin/src/alminium/backup /etc/cron.daily/

スクリプト化

ここまでの作業をスクリプト化します。

旧環境のバックアップとコピーはスクリプト化しません。

ALMinumのインストール

対話無しにしたかったんだけど、サブディレクトリと既存DBのところはうまくいかなかった。enterしてください。

migrate.sh

ホスト上の /vagrantフォルダ/migration/ に

*-alm-backup.tar.gzと

drop_tables_redmine.sql

drop_tables_plugins.sql

があることが前提です。

べったり環境依存ですが、何とかバージョンアップできました。

なんとなく新バージョンの方が早いような気がします。

redmineってインストールたいへんだよね。

これからも一人で使っていきたいと思います。