20260703 サーバ移行05 Redmine » 履歴 » バージョン 2
sylow castle, 2026/07/03 10:34
| 1 | 1 | sylow castle | # 20260703 サーバ移行05 Redmine |
|---|---|---|---|
| 2 | |||
| 3 | 無敗でDBマイグレート言った。記事を執筆中にRedmineのコンテナをdocker compose down、docker compose upしたせいでログイン情報が切れて記事が吹っ飛んで一敗。 |
||
| 4 | |||
| 5 | - Redmineコンテナのアップデート |
||
| 6 | - /redmine以下で動かすための設定 |
||
| 7 | - MySQLの文字コード変更 |
||
| 8 | |||
| 9 | ## Redmineコンテナのアップデート |
||
| 10 | |||
| 11 | 使ったコンテナたち |
||
| 12 | |||
| 13 | ``` |
||
| 14 | version: '3.8' |
||
| 15 | |||
| 16 | services: |
||
| 17 | redmine: |
||
| 18 | # image: docker.io/redmine:3.4.4 |
||
| 19 | # image: docker.io/redmine:4.2.10 |
||
| 20 | # image: docker.io/redmine:5.1.12 |
||
| 21 | image: docker.io/redmine:6.1.3 |
||
| 22 | ``` |
||
| 23 | |||
| 24 | ### アップデートのやり方 |
||
| 25 | |||
| 26 | 2 | sylow castle | コンテナの中の/docker-entrypoint.shを覗く限りコンテナ起動時にdb:migrateが走るらしい。 |
| 27 | 実際コンテナを起動する以外特に何もせずDBはマイグレーションされた。 |
||
| 28 | 1 | sylow castle | |
| 29 | 2 | sylow castle | ``` |
| 30 | # docker exec -it redmine-app bash |
||
| 31 | Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg. |
||
| 32 | root@5b2e900863cf:/usr/src/redmine# cat -n /docker-entrypoint.sh |
||
| 33 | (省略) |
||
| 34 | 168 if [ "$1" != 'rake' -a -z "$REDMINE_NO_DB_MIGRATE" ]; then |
||
| 35 | 169 rake db:migrate |
||
| 36 | 170 fi |
||
| 37 | (省略) |
||
| 38 | ``` |
||
| 39 | |||
| 40 | ### バックアップ |
||
| 41 | |||
| 42 | 途中で失敗したりしてDB吹っ飛ぶと嫌だし、やり直せるように毎回物理バックアップと論理バックアップを取る |
||
| 43 | |||
| 44 | 1 | sylow castle | 論理バックアップ(例) |
| 45 | ``` |
||
| 46 | systemctl start mysqld.service |
||
| 47 | mysqldump -u root -p redmine > redmine.3.4.4.sql |
||
| 48 | ``` |
||
| 49 | |||
| 50 | 2 | sylow castle | 物理バックアップ(例): |
| 51 | 1 | sylow castle | ``` |
| 52 | systemctl stop mysqld.service |
||
| 53 | cp -ar /var/lib/mysql /path/to/backup/mysql.3.4.4 |
||
| 54 | 2 | sylow castle | ``` |
| 55 | |||
| 56 | ### 各redmineでのバージョンでのDBバージョン |
||
| 57 | |||
| 58 | 4.2.10のDBバージョン: |
||
| 59 | ``` |
||
| 60 | root@092efd2f73b1:/usr/src/redmine# bundle exec rake db:version |
||
| 61 | Current version: 20200826153402 |
||
| 62 | ``` |
||
| 63 | |||
| 64 | 5.2.12のDBバージョン: |
||
| 65 | ``` |
||
| 66 | root@3e7c60aa34ea:/usr/src/redmine# bundle exec rake db:version |
||
| 67 | Current version: 20231012112407 |
||
| 68 | ``` |
||
| 69 | |||
| 70 | 6.1.3のDBバージョン: |
||
| 71 | ``` |
||
| 72 | root@1a7f056dd581:/usr/src/redmine# bundle exec rake db:version |
||
| 73 | |||
| 74 | database: redmine |
||
| 75 | Current version: 20250611092227 |
||
| 76 | 1 | sylow castle | ``` |
| 77 | |||
| 78 | ## /redmine以下で動かすための設定 |
||
| 79 | |||
| 80 | コンテナの/usr/src/redmine/config.ruに設定を追加した。 |
||
| 81 | |||
| 82 | config.ruの内容はrailsにあわせてかバージョンによって若干違うけど変更点は同じ、applicationを起動しているコード(以下の例だとrun Rails.application)をmap "/redmine" do と endで囲うだけ |
||
| 83 | |||
| 84 | 変更後はこんな感じ: |
||
| 85 | ``` |
||
| 86 | # This file is used by Rack-based servers to start the application. |
||
| 87 | |||
| 88 | require_relative 'config/environment' |
||
| 89 | map "/redmine" do |
||
| 90 | run Rails.application |
||
| 91 | end |
||
| 92 | ``` |
||
| 93 | |||
| 94 | ### 永続化 |
||
| 95 | |||
| 96 | 毎回コンテナ内の資源を編集するのは嫌なのでホスト側のファイルを参照するようにする。redmineに関する設定なので/etc/redmineを切る |
||
| 97 | |||
| 98 | [root@roma02 redmine]# pwd |
||
| 99 | /etc/redmine |
||
| 100 | [root@roma02 redmine]# ls -lZ |
||
| 101 | 合計 8 |
||
| 102 | -rw-r--r--. 1 root root unconfined_u:object_r:container_file_t:s0 153 7月 3 18:45 config.ru |
||
| 103 | -rw-r--r--. 1 root root unconfined_u:object_r:var_lib_t:s0 2168 7月 3 18:48 docker-compose.yml |
||
| 104 | |||
| 105 | ### SELinux設定 |
||
| 106 | |||
| 107 | SELinuxで弾かれないようにコンテキストを変更する: |
||
| 108 | |||
| 109 | ``` |
||
| 110 | semanage fcontext -a -t container_file_t "/etc/redmine/config.ru" |
||
| 111 | restorecon -v /etc/redmine/config.ru |
||
| 112 | ``` |
||
| 113 | |||
| 114 | |||
| 115 | ## MySQLの文字コード変更 |
||
| 116 | |||
| 117 | MySQL5.7の時に作ったredmineなのでデフォルト文字コードと照合順序がutf8mb3のまま。 |
||
| 118 | 照合順序を一覧で見るSQL: |
||
| 119 | ``` |
||
| 120 | SELECT |
||
| 121 | table_name, |
||
| 122 | table_collation |
||
| 123 | FROM |
||
| 124 | information_schema.tables |
||
| 125 | WHERE |
||
| 126 | table_schema="redmine" |
||
| 127 | ; |
||
| 128 | ``` |
||
| 129 | |||
| 130 | ALTER文(例): |
||
| 131 | ``` |
||
| 132 | ALTER TABLE `issues` CONVERT TO CHARACTER SET utf8mb4; |
||
| 133 | ``` |
||
| 134 | |||
| 135 | 面倒臭いのでExcelでALTER文を生成した。シェルスクリプトが得意な人はそれがいいと思う。 |