Redmine運用
- Redmineのメンテナンス
- Redmine 5.1.x→5.1.yのバージョンアップ(同一サーバでの作業)
- Redmine移行/再作成後の注意点(全文検索プラグインをインストールしている場合)
- Ubuntu 20.04で動いていた Redmine 4.2のデータを Ubuntu 24.04上のRedmine 5.1に移行。
- 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にアクセスし、検索できることを確認します。
Ubuntu 20.04で動いていた Redmine 4.2のデータを Ubuntu 24.04上のRedmine 5.1に移行。
概要
Redmine 4.2 を動かしている Ubuntu 20.04 が2025年4月にEOLを迎えるため、Redmine 5.1 (Ubuntu 24.04)にリプレースをしました。
最初に
- 「この手順で上手くいった」という筆者のメモ書きです。
- Rubyのバージョン違いなどで動かないプラグインがいくつかあります。代替手段は別途考慮してください。
環境
移行前環境
- Ubuntu 20.04
- Redmine 4.2
- Ruby 2.7
- Apache 2.4
- MySQL 8.0.39
移行後環境
- Ubuntu 24.04
- Redmine 5.1
- Ruby 3.2
- Apache 2.4
- MySQL 8.0.39
さっくりとはならない手順
- 【移行先】空のRedmineを構築します。
- 【移行元】DBのダンプファイルを作成し、移行先に転送します。
- 【移行元】ファイル、メール設定ファイルなどを移行先に転送します。
- 【移行先】DBをリストアします。
- 【移行先】gemのアップデートを行います。
- 【移行先】移行元で稼働していたプラグインを入れていきます。
- 【移行先】動作確認を行います。
- 【移行元】移行元のredmineを停止します。
- 【移行先】必要に応じてDNSの切り替えと移行先のサイト設定を行います。
【移行先】Redmineを構築していきます。
- こちらのページに従って、移行先のUbuntu 24.04サーバに、Redmineを構築していきます。
- 構築したてのRedmineのアカウントとパスワードは admin /admin なので、仮パスワードを設定しておきます。
【移行元】DBのダンプファイルを作成して転送します。
- ディレクトリ移動
cd /hoge && pwd
任意のディレクトリを指定します。
- ダンプファイル取得
mysqldump -h localhost -u redmine -p --no-tablespaces --single-transaction redmine > redmine_backup.$(date +%Y%m%d).sql
ユーザー名(-u
の後)とDB名(>
の前)は自分の環境に合わせます。
- ダンプファイル内容確認
view redmine_backup.$(date +%Y%m%d).sql
SQL文が平文で読めることを確認します。
作成後、任意の安全な方法で移行先に転送します。
【移行元】各種ファイルを転送します。
以下のディレクトリやを任意の安全な方法で転送します。
/path/to/redmine/root/directory
配下(移行前のRedmineルートディレクトリ)の
- files ディレクトリ(添付ファイル一式)
- config/configuration.yml ファイル(メール設定がある場合)
- public/theme/配下のテーマディレクトリ
これらのファイルは転送後、移行後のRedmineに対応するディレクトリ/ファイルに、そのまま上書きます。
【移行先】DBのリストアを行います。
- ダンプファイル格納ディレクトリに移動
cd /hoge && pwd
- ダンプファイル確認
ls -l redmine_backup.$(date +%Y%m%d).sql
ファイルがあることを確認します。
- DBリストア
mysql -h localhost -u redmine -p redmine < redmine_backup.$(date +%Y%m%d).sql
このときのパスワードは、「移行先のRedmineのDBユーザのパスワード」です。
- Webサービス再起動
sudo systemctl restart apache2.service
Webサービス再起動後に
- 移行後のRedmineサイトが移行元と同じ見た目であること
- ログインできること
- プロジェクト一覧が見られること
までは確認しましたが、チケットを確認しようとすると
500 internal server error
が発生し、閲覧も編集もできない事態が発生しました。
【移行先】gemのアップデートを行います。
こちらの、チケット表示でinternal server errorを解消するため、
Has 500 Internal Server Error when upgrade 4.1.1 to 4.2.7, please help.
https://www.redmine.org/boards/2/topics/67435
この手順を追加します。
- Redmineのルートディレクトリに移動
cd /path/to/redmine/root/directory && pwd
自分の環境に合わせます。
- gem update
sudo gem update
しばらく時間がかかります。
- Webサービス再起動
sudo systemctl restart apache2.service
gemのアップデート後、今度はエラーが出ないことを確認です。
【移行先】各種プラグインを入れていきます。
移行前に動いていたプラグインを確認しながら、プラグインを入れていきます。
DBマイグレーション中にrake aborted
が出た場合は、そのプラグインはRedmine/Rubyのバージョンが合わないので、動かないプラグインです。
【移行先】動作環境を行っていきます。
プラグインを入れながら、既存の機能(別のユーザーがログインできるか、アクセス権は合っているか、チケットの作成や更新ができるか)などを見ていきます。
【移行元】稼働していたRedmineサイトを停止します。
移行元のサーバにSSHログインし、
sudo a2dissite redmine.conf
redmine.conf
は自分の環境に合わせます。
で設定ファイルを無効化後、
- Webサービス再起動
sudo systemctl restart apache2.service
として、稼働していた移行元のサイトにアクセスできないことを確認します。
【移行先】必要に応じてDNSの切り替えと移行先のサイト設定を行います。
これは、移行元でも同じURL(ドメイン)を使いたい場合の措置です。
- DNS向き先変更
DNSを利用して、ドメインを移行先のIPアドレスへと付け替えます。
各種DNSサービスによって異なるので、そちらを参照してください。
- apacheバーチャルサイトの設定変更
/etc/apaches/site-available/redmine.conf
(自分の環境に合わせます)
の以下の箇所を編集していきます。
<VirtualHost *:80>
servername hoge.example.com
# 今まで動いていたドメイン名
<VirtualHost *:443>
ServerName hoge.example.com
# 今まで動いていたドメイン名
- 構文確認
sudo apache2ctl configtest
Syntax OK
を確認します。
- Webサービス再起動
sudo systemctl restart apache2.service
切り替え後
- 前と同じドメインで、新しいRedmineサイトにログインできる
- (プラグインが廃止していなければ)同じ機能を使える
ことを確認できれば作業完了です。
移行後の処理
- DB移行時に利用したダンプファイルを削除します。
- 時期を見て旧サーバのデータの削除を行います。
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に管理者権限でログインします。
- 管理>プラグインに進みます。
- インストールしたプラグインがあることを確認します。
- 他の機能が動くことを確認します。