Redmine運用


Redmineのメンテナンス


Redmineのメンテナンス

Redmine 5.1.x→5.1.yのバージョンアップ(同一サーバでの作業)

脆弱性などに対応するため、同一系統のRedmineのバージョンアップ手順を示します。

環境

作業に備えての前提

作業前のチェック

以下が必須です。

さっくりとはならない手順

  1. スナップショットのバックアップ (推奨)
  2. DBのバックアップ
  3. redmineのディレクトリを一度mvでリネームしてバックアップ。
  4. apache停止
  5. redmineのDBを消す。
  6. redmineのDBを新たに作る。(ユーザは全て権限があるので問題なし)
  7. apache再開
  8. ディレクトリを再作成し、マイナーバージョンが上がったRedmineを作る。
  9. themesとpluginを再配置。
  10. themesとpluginを再配置した状態でDBマイグレーション。
  11. DBリストア。
  12. 動作確認。

システム全体のバックアップ(推奨)

万一に備え、システム全体のバックアップを取ることを推奨します。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ユーザは自分の環境に合わせます。

データ退避

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を削除するためです。

systemctl status apache2.service

active(running)を確認します

sudo systemctl stop apache2.service
systemctl status apache2.service

inactive(dead)を確認します

DB削除と再作成

この作業は慎重に行って下さい。

sudo mysql -u root -p
SHOW DATABASES;

redmineのDBがあることを確認します。

DROP DATABASE redmine;

DB名は再確認してください。

SHOW DATABASES;

RedmineのDBがないことを確認します。

CREATE DATABASE redmine character set utf8mb4;

同じDBを作り直します。

SHOW DATABASES;

作成したDBがあることを確認します。

EXIT

ソースダウンロード

sudo mkdir /home/www-data/redmine

自分の環境に合わせます。

sudo chown -R www-data:www-data /home/www-data/redmine
sudo -u www-data svn co https://svn.redmine.org/redmine/branches/5.1-stable /home/www-data/redmine

5.1系の最新安定版をダウンロードします

退避させたディレクトリからconfigファイルコピー

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

コピーされていることを確認します。

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
sudo -u www-data bundle install --without development test --path vendor/bundle
sudo -u www-data bundle exec rake generate_secret_token
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再開

systemctl status apache2.service

inactive(dead)を確認します

sudo systemctl start apache2.service
systemctl status apache2.service

active(runnning)を確認します

再作成後の仮パスワード作成

対象のRedmineにアクセスします。

IDとパスワードがadmin / admin に戻っている状態のため、ログイン後、仮パスワードを発行します。

退避したディレクトリからデータを再配置

cd /home/www-data/redmine_$(date +%Y%m%d)/plugins
sudo cp -pir ./* /home/www-data/redmine/plugins/
cd /home/www-data/redmine_$(date +%Y%m%d)/public/themes
sudo cp -pir ./* /home/www-data/redmine/public/themes/

いくつかのファイルを上書きするか求められるので、yで返します。

cd /home/www-data/redmine_$(date +%Y%m%d)/files
sudo cp -pir ./* /home/www-data/redmine/files/
cd /home/www-data/redmine_$(date +%Y%m%d)/log
sudo cp -pir ./* /home/www-data/redmine/log/

プラグイン再マイグレーション

cd /home/www-data/redmine
sudo -u www-data bundle install
sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production

apacheリスタート

systemctl status apache2.service

active(running)を確認します

sudo systemctl restart apache2.service
systemctl status apache2.service

active(runnning)を確認します

DBリストア

cd /hoge && pwd
mysql -h localhost -u redmine -p redmine < redmine_backup.$(date +%Y%m%d).sql

パスワードはredmineインストール時に設定したDBユーザのパスワードです。

apacheリスタート

systemctl status apache2.service

active(running)を確認します

sudo systemctl restart apache2.service
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のダンプファイルを削除-

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はバージョンさえ合っていれば

を移行することで、別のサーバへの引っ越しが可能になります。

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.

これに対応します。

再びサーバでのコマンド操作です。

cd /home/www-data/redmine && pwd

自分の環境に合わせます。

sudo -u www-data RAILS_ENV=production bin/rails full_text_search:synchronize

容量によっては時間がかかります。

インデックス後、ブラウザでRedmineにアクセスし、検索できることを確認します。

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)にリプレースをしました。

最初に

環境

移行前環境

移行後環境

さっくりとはならない手順

  1. 【移行先】空のRedmineを構築します。
  2. 【移行元】DBのダンプファイルを作成し、移行先に転送します。
  3. 【移行元】ファイル、メール設定ファイルなどを移行先に転送します。
  4. 【移行先】DBをリストアします。
  5. 【移行先】gemのアップデートを行います。
  6. 【移行先】移行元で稼働していたプラグインを入れていきます。
  7. 【移行先】動作確認を行います。
  8. 【移行元】移行元のredmineを停止します。
  9. 【移行先】必要に応じてDNSの切り替えと移行先のサイト設定を行います。

【移行先】Redmineを構築していきます。

【移行元】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ルートディレクトリ)の

これらのファイルは転送後、移行後のRedmineに対応するディレクトリ/ファイルに、そのまま上書きます。

【移行先】DBのリストアを行います。

cd /hoge && pwd
ls -l redmine_backup.$(date +%Y%m%d).sql

ファイルがあることを確認します。

mysql -h localhost -u redmine -p redmine < redmine_backup.$(date +%Y%m%d).sql

このときのパスワードは、「移行先のRedmineのDBユーザのパスワード」です。

sudo systemctl restart apache2.service

Webサービス再起動後に

  1. 移行後のRedmineサイトが移行元と同じ見た目であること
  2. ログインできること
  3. プロジェクト一覧が見られること

までは確認しましたが、チケットを確認しようとすると

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

この手順を追加します。

cd /path/to/redmine/root/directory && pwd

自分の環境に合わせます。

 sudo gem update

しばらく時間がかかります。

sudo systemctl restart apache2.service

gemのアップデート後、今度はエラーが出ないことを確認です。

【移行先】各種プラグインを入れていきます。

移行前に動いていたプラグインを確認しながら、プラグインを入れていきます。

DBマイグレーション中にrake abortedが出た場合は、そのプラグインはRedmine/Rubyのバージョンが合わないので、動かないプラグインです。

【移行先】動作環境を行っていきます。

プラグインを入れながら、既存の機能(別のユーザーがログインできるか、アクセス権は合っているか、チケットの作成や更新ができるか)などを見ていきます。

【移行元】稼働していたRedmineサイトを停止します。

移行元のサーバにSSHログインし、

sudo a2dissite redmine.conf

redmine.confは自分の環境に合わせます。

で設定ファイルを無効化後、

sudo systemctl restart apache2.service

として、稼働していた移行元のサイトにアクセスできないことを確認します。

【移行先】必要に応じてDNSの切り替えと移行先のサイト設定を行います。

これは、移行元でも同じURL(ドメイン)を使いたい場合の措置です。

DNSを利用して、ドメインを移行先のIPアドレスへと付け替えます。

各種DNSサービスによって異なるので、そちらを参照してください。

/etc/apaches/site-available/redmine.conf (自分の環境に合わせます)

の以下の箇所を編集していきます。

<VirtualHost *:80>
servername hoge.example.com
# 今まで動いていたドメイン名

<VirtualHost *:443>
    ServerName hoge.example.com
# 今まで動いていたドメイン名
sudo apache2ctl configtest

Syntax OKを確認します。

sudo systemctl restart apache2.service

切り替え後

  1. 前と同じドメインで、新しいRedmineサイトにログインできる
  2. (プラグインが廃止していなければ)同じ機能を使える

ことを確認できれば作業完了です。

移行後の処理

  1. DB移行時に利用したダンプファイルを削除します。
  2. 時期を見て旧サーバのデータの削除を行います。

Redmineプラグインのメンテナンス・チートシート

Redmineプラグインのメンテナンス・チートシート

Redmineのプラグインをインストールするときに使うコマンド

概要

Redmineのプラグインを導入する際の基本的な手順をメモしておきます。

前提

インストールの基本

  1. A.プラグインを/redmine/root/directory/plugins配下に設置(必須)
  2. B.依存関係があるrubyプログラムをインストール(オプション)
  3. C.DBマイグレーション(オプション)
  4. D.Webサービス再起動(必須)
  5. E:動作確認(必須)

A-1:Zipファイルをダウンロードする場合の手順

A-1.1:作業用ディレクトリに移動します。

cd /hoge

任意のディレクトリを指定します。

A-1.2:ZIPファイルを入手します。

など、任意の手を用います。

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サービスの再起動

sudo systemctl restart apache2.service
systemctl status apache2.service

active (running)を確認します。


E: 動作確認

  1. Redmineに管理者権限でログインします。
  2. 管理>プラグインに進みます。
  3. インストールしたプラグインがあることを確認します。
  4. 他の機能が動くことを確認します。