プロジェクト

全般

プロフィール

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文を生成した。シェルスクリプトが得意な人はそれがいいと思う。