Redmine運用
Redmineのメンテナンス
Redmine 5.1.x→5.1.yのバージョンアップ(同一サーバでの作業)
脆弱性などに対応するため、同一系統のRedmineのバージョンアップ手順を示します。
環境
- Ubuntu 22.04
- 動かしていたRedmine:5.1.1
- Apache 2.4 / mod-passangerでRubyアプリを使用(Ruby 3.0系)
- MySQL 8.0.3
作業に備えての前提
- 本手順では「使用するDBの削除」を伴います。作業の際には慎重に行って下さい。
- Webサービスを止める/何も入っていないRedmineが途中でできるため、ユーザアクセスができない状況が発生します。
作業前のチェック
以下が必須です。
- 作業影響について、利害関係者に周知している。
- MySQLの管理者アカウントを所持している。
- サーバに十分な空き容量がある。
- 「一度DBを削除する」ことについて、作業者/確認者が重要度を理解している。
さっくりとはならない手順
- スナップショットのバックアップ (推奨)
- DBのバックアップ
- redmineのディレクトリを一度mvでリネームしてバックアップ。
- apache停止
- redmineのDBを消す。
- redmineのDBを新たに作る。(ユーザは全て権限があるので問題なし)
- apache再開
- ディレクトリを再作成し、マイナーバージョンが上がったRedmineを作る。
- themesとpluginを再配置。
- themesとpluginを再配置した状態でDBマイグレーション。
- DBリストア。
- 動作確認。
システム全体のバックアップ(推奨)
万一に備え、システム全体のバックアップを取ることを推奨します。AWSや仮想サーバ等の場合は、インスタンスをまるごとバックアップしておくと良いでしょう。
mysqldumpによるDBバックアップ
- 保存ディレクトリに移動
cd /hoge
任意のバックアップディレクトリを指定します。
mysqldump -h localhost -u redmine -p --no-tablespaces --single-transaction redmine > redmine_backup.$(date +%Y%m%d).sql
DB名やDBユーザは自分の環境に合わせます。
データ退避
- Redmineのルートディレクトリの上に移動
cd /home/www-data && pwd
Redmineが格納されているディレクトリの親ディレクトリに移動します。筆者環境は/home/www-dataなので、自分の環境に合わせます。
- ディレクトリがあることを確認
ls -ld redmine
退避対象のディレクトリがあることを確認します。
- リネームして退避
sudo mv redmine redmine_$(date +%Y%m%d)
- 退避確認
ls -ld redmine_$(date +%Y%m%d)
ファイルがあることを確認します。
apache停止
ここでWebサービスを停止するのは、DBを削除するためです。
- apache停止前確認
systemctl status apache2.service
active(running)を確認します
- apache停止
sudo systemctl stop apache2.service
- apache停止後確認
systemctl status apache2.service
inactive(dead)を確認します
DB削除と再作成
この作業は慎重に行って下さい。
- 管理者権限でmysqlにログイン
sudo mysql -u root -p
- DB確認
SHOW DATABASES;
redmineのDBがあることを確認します。
- RedmineのDBを削除
DROP DATABASE redmine;
DB名は再確認してください。
- RedmineのDB削除確認
SHOW DATABASES;
RedmineのDBがないことを確認します。
- 空のDB再作成
CREATE DATABASE redmine character set utf8mb4;
同じDBを作り直します。
- 空のDB再作成確認
SHOW DATABASES;
作成したDBがあることを確認します。
EXIT
ソースダウンロード
- ディレクトリ作成
sudo mkdir /home/www-data/redmine
自分の環境に合わせます。
- ディレクトリの所有者変更
sudo chown -R www-data:www-data /home/www-data/redmine
- svnダウンロード
sudo -u www-data svn co https://svn.redmine.org/redmine/branches/5.1-stable /home/www-data/redmine
5.1系の最新安定版をダウンロードします
退避させたディレクトリからconfigファイルコピー
- 退避させたRedmine→ 新規に作成したRedmineにコンフィグをコピー
sudo cp -pi /home/www-data/redmine_$(date +%Y%m%d)/config/database.yml /home/www-data/redmine/config/database.yml
コピー元・コピー先は自分の環境に合わせます。
- コンフィグの中身確認
cat /home/www-data/redmine/config/database.yml
コピーされていることを確認します。
- 退避させたRedmine→ 新規に作成したRedmineにメール設定情報などをコピー
sudo cp -pi /home/www-data/redmine_$(date +%Y%m%d)/config/configuration.yml /home/www-data/redmine/config/configuration.yml
コピー元・コピー先は自分の環境に合わせます。
- 設定情報の中身確認
cat /home/www-data/redmine/config/configuration.yml
Redmineインストール
- ディレクトリ移動
cd /home/www-data/redmine
- bundle
sudo -u www-data bundle install --without development test --path vendor/bundle
- シークレットトークン発行
sudo -u www-data bundle exec rake generate_secret_token
- DBマイグレーション
sudo -u www-data RAILS_ENV=production bundle exec rake db:migrate
- 言語設定
sudo -u www-data RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data
apache再開
- apache再開前確認
systemctl status apache2.service
inactive(dead)を確認します
- apache再開
sudo systemctl start apache2.service
- apache再開確認
systemctl status apache2.service
active(runnning)を確認します
再作成後の仮パスワード作成
対象のRedmineにアクセスします。
IDとパスワードがadmin / admin に戻っている状態のため、ログイン後、仮パスワードを発行します。
退避したディレクトリからデータを再配置
- 退避したRedmineのプラグインディレクトリに移動
cd /home/www-data/redmine_$(date +%Y%m%d)/plugins
- プラグイン一式のコピー
sudo cp -pir ./* /home/www-data/redmine/plugins/
- 退避したRedmineのテーマディレクトリに移動
cd /home/www-data/redmine_$(date +%Y%m%d)/public/themes
- テーマ一式のコピー
sudo cp -pir ./* /home/www-data/redmine/public/themes/
いくつかのファイルを上書きするか求められるので、yで返します。
- 退避したRedmineの添付ファイル格納ディレクトリに移動
cd /home/www-data/redmine_$(date +%Y%m%d)/files
- 添付ファイル一式のコピー
sudo cp -pir ./* /home/www-data/redmine/files/
- 退避したRedmineのログディレクトリに移動
cd /home/www-data/redmine_$(date +%Y%m%d)/log
- ログ一式のコピー
sudo cp -pir ./* /home/www-data/redmine/log/
プラグイン再マイグレーション
- Redmineのルートディレクトリに移動
cd /home/www-data/redmine
- bundle
sudo -u www-data bundle install
- プラグインのDBマイグレーション
sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production
apacheリスタート
- apache再開前確認
systemctl status apache2.service
active(running)を確認します
- apache再開
sudo systemctl restart apache2.service
- apache再開確認
systemctl status apache2.service
active(runnning)を確認します
DBリストア
- mysqldumpを行ったディレクトリに移動
cd /hoge && pwd
- DBリストア
mysql -h localhost -u redmine -p redmine < redmine_backup.$(date +%Y%m%d).sql
パスワードはredmineインストール時に設定したDBユーザのパスワードです。
apacheリスタート
- apache再開前確認
systemctl status apache2.service
active(running)を確認します
- apache再開
sudo systemctl restart apache2.service
- apache再開確認
systemctl status apache2.service
active(runnning)を確認します
動作確認
この状態でRedmineに管理者権限でログインします。手順通りなら
- テーマ
- 添付ファイル
- プラグイン
- チケット一覧
などが有効に動いています。
また、管理>情報へと進み、バージョンが上がっていることを確認します。
作業後-退避前のディレクトリ一式を削除-
- 退避させたディレクトリの直上に移動
cd /home/www-data
自分の環境に合わせます。
- 退避ディレクトリ確認
ls -ld redmine_$(date +%Y%m%d)
ディレクトリがあることを確認します。
- 退避ディレクトリ削除
sudo rm -rf redmine_$(date +%Y%m%d)
- 退避ディレクトリ確認
ls -ld redmine_$(date +%Y%m%d)
ディレクトリが無いことを確認します。
作業後-MySQLのダンプファイルを削除-
- mysqldumpを行ったディレクトリに移動
cd /hoge && pwd
- ダンプファイル確認
ls -l redmine_backup.$(date +%Y%m%d).sql
ファイルがあることを確認します。
- ダンプファイル削除
rm redmine_backup.$(date +%Y%m%d).sql
- ダンプファイル削除確認
ls -l redmine_backup.$(date +%Y%m%d).sql
ファイルが無いことを確認します。
備考
Redmineはバージョンさえ合っていれば
- DB
- 設定ファイル
- 添付ファイル
- プラグイン
- テーマ
- ログ
を移行することで、別のサーバへの引っ越しが可能になります。
Redmine移行/再作成後の注意点(全文検索プラグインをインストールしている場合)
概要
- Redmineを別サーバに移行した
- 脆弱性対応などでバージョンアップした
かつ、
検索機能がうまくいきません。(既存の文書を検索することができません。
プラグインのGithubで以下の通り書かれているので、
You need to create index for existing data. You need to run full_text_search:synchronize task until no more synchronize target data.
これに対応します。
再びサーバでのコマンド操作です。
- Redmineのルートディレクトリに移動
cd /home/www-data/redmine && pwd
自分の環境に合わせます。
- インデックス化
sudo -u www-data RAILS_ENV=production bin/rails full_text_search:synchronize
容量によっては時間がかかります。
インデックス後、ブラウザでRedmineにアクセスし、検索できることを確認します。
Redmineプラグインのメンテナンス・チートシート
Redmineのプラグインをインストールするときに使うコマンド
概要
Redmineのプラグインを導入する際の基本的な手順をメモしておきます。
前提
- 既にRedmineがインストールされている状態
- Ubuntu系OS
- WebサーバとしてApache2を利用
- Ruby on RailsでApacheと連携
- RedmineはApacheの実行ユーザ(www-data)
インストールの基本
- A.プラグインを
/redmine/root/directory/plugins
配下に設置(必須) - B.依存関係があるrubyプログラムをインストール(オプション)
- C.DBマイグレーション(オプション)
- D.Webサービス再起動(必須)
- E:動作確認(必須)
A-1:Zipファイルをダウンロードする場合の手順
A-1.1:作業用ディレクトリに移動します。
cd /hoge
任意のディレクトリを指定します。
A-1.2:ZIPファイルを入手します。
- curl
- wget
- scpなどで転送
- デスクトップを兼ねている場合はダウンロード
など、任意の手を用います。
A-1.3:ファイルを解凍します。
unzip plugin.zip
A-1.4:解凍されたファイル群のディレクトリの所有者を変更します。
sudo chown -R www-data:www-data plugin-hoge
バージョン番号が付与されているパターンが多いです
A-1.5:Redmineのプラグインディレクトリに配置します。
sudo mv plugin-hoge /redmine/root/directory/plugins/plugin
配置する際に、バージョン名などを消しておきます。
→ ここを行ったらB以降に進みます。
A-2:git cloneする場合の手順
A-2.1:Redmineのプラグインディレクトリに移動します。
cd /redmine/root/directory/plugins && pwd
自分の環境に合わせます。 (例:/var/lib/redmine
)
筆者環境は/home/www-data/redmine
です
A-2.2:git cloneを行います。
sudo -u www-data git clone git_repository
大概はgithubのURLをそのまま(https://込み)です。
→ ここを行ったらB以降に進みます。
B: 依存関係があるrubyプログラムをインストールする場合の手順(オプション)
B-1: redmineのrootディレクトリに移動します。
cd /redmine/root/directory/ && pwd
自分の環境に合わせます。
B-2. Bundle installを行います。
sudo -u www-data bundle install
Bundle complete!
と出たらOKです。
→ ここを行ったらC以降に進みます。
B-1: redmineのrootディレクトリに移動します。
cd /redmine/root/directory/ && pwd
自分の環境に合わせます。
C: DBマイグレーションを行う場合の手順(オプション)
C-1: redmineのrootディレクトリに移動します。
cd /redmine/root/directory/ && pwd
自分の環境に合わせます。
C-2: DBのマイグレーションを行います。
sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production
エラーが出てこなければOKです。
→ ここを行ったらD以降に進みます。
D:Webサービスの再起動
- Apache再起動
sudo systemctl restart apache2.service
- サービス稼働確認
systemctl status apache2.service
active (running)
を確認します。
E: 動作確認
- Redmineに管理者権限でログインします。
- 管理>プラグインに進みます。
- インストールしたプラグインがあることを確認します。
- 他の機能が動くことを確認します。