タグ: redmineプラグイン Page 1 of 6

Redmine 5.1環境で redmine_dmsf を完全に切除する ― Redmine 6.x移行へ向けたアンインストール記録

はじめに

前回、Redmine 6.xへの移行に備え、本番とは完全に切り離した Side-by-Side 構成の検証環境(redmine-clone)を構築しました。

今回取り組んだのは、長年利用してきたプラグイン、 redmine_dmsf を完全に取り除く作業です。

DMSFは非常に高機能なプラグインですが、現在の筆者の運用では役目を終えており、Redmine 6.xへの移行を見据えてアンインストールすることにしました。

ところが、標準的なアンインストール手順では途中で何度もエラーが発生し、作業はまったく進みません。

ロールバック
    ↓
エラー修正
    ↓
もう一度ロールバック
    ↓
別のエラー

まさにモグラ叩きです。

最終的には発想を切り替え、「過去のマイグレーションを修正しながら戻す」のではなく、「今後二度と利用しない」という前提で、プラグインを外科手術のように切除する方法を選択しました。

この記事は、その作業記録です。

今回の前提

今回の作業は、前回構築した 検証環境 (redmine-clone) を対象に実施しています。

項目内容
対象環境redmine-clone
Redmine5.1系
Ruby3.2系
Rails6.1
DatabaseMySQL 8.x
対象プラグインredmine_dmsf

本番環境では絶対に実施せず、必ず検証環境で確認してから行ってください。

今回の方針

通常であれば

sudo -u www-data bundle exec rake redmine:plugins:migrate VERSION=0

でロールバックするのが正攻法です。

しかし今回は、

  • Rails側の仕様変更
  • 古いマイグレーションコード
  • 運用期間中に蓄積したデータ

これらが複雑に絡み合い、途中でロールバックが停止しました。

そこで今回は

「DMSFを今後一切利用しない」

ことを前提に、

  • DMSFテーブルを削除
  • マイグレーション履歴を削除
  • プラグイン本体を撤去

という外科手術方式を採用しています。

作業前にMySQLバックアップを取得する

これから実施する操作は、テーブル削除やマイグレーション履歴の削除を伴います。

やり直しができるよう、必ずダンプを取得してから作業します。

※DB名、ユーザー名は自分の環境に合わせてください。

mysqldump \
  --single-transaction \
  --routines \
  --triggers \
  --default-character-set=utf8mb4 \
  -u redmine_clone \
  -p \
  redmine_clone \
  > redmine_clone_before_dmsf.sql

今回の作業では、このダンプが最後の保険になります。

最初に試した方法--NG

まずは標準手順どおりロールバックを試みました。

sudo -u www-data \
bundle exec rake \
redmine:plugins:migrate \
NAME=redmine_dmsf \
VERSION=0 \
RAILS_ENV=production

ところが、ここから長い戦いが始まります。

発生したエラー

1. Rails 6.1との仕様不整合

最初に発生したのは

ArgumentError: wrong number of arguments

というエラーでした。

原因は、古いマイグレーションで利用されている

t.index_exists?

の引数仕様が、現在のActiveRecordと一致していなかったためです。

2. 存在しないインデックス

修正すると、今度は

No indexes found...

で停止しました。

ロールバックコードは「存在するはず」と考えているインデックスが、現在のデータベースには存在しません。

過去十数年の運用の中でスキーマが変化していたことが原因でした。

3. nil参照によるクラッシュ

さらに進めると

undefined method 'id' for nil

で停止。

古いマイグレーションでは、存在する前提のデータが既になくなっており、ロールバック中にクラッシュしました。

今回の教訓

ここまでで感じたことは一つです。

標準手順だからといって、必ず最後まで実行できるとは限らない。

10年以上前に書かれたマイグレーションコードを、現在のRailsで逆方向へ実行する。

これは思っている以上に難しく、途中で止まる可能性があります。

一つ修正しても、次のマイグレーションで別のエラーが出る。今回の作業は、まさにモグラ叩きでした。

方針転換 ― 外科手術で切除する

今回はDMSFを再利用する予定はありません。

そこで、「きれいにロールバックする」ではなく、「安全に切除する」 という考え方へ切り替えました。

Step1 DMSFテーブルを削除する

まず外部キー制約を一時的に無効化します。

mysql -u redmine-clone -p

※本番環境のアカウントではログインしないこと。非常に悪い意味で眠気が吹っ飛びます。

USE redmine_clone;
SET FOREIGN_KEY_CHECKS=0;

続いて関連テーブルを削除します。

DROP TABLE IF EXISTS
    dmsf_file_revisions,
    dmsf_files,
    dmsf_folder_permissions,
    dmsf_folders,
    dmsf_links,
    dmsf_locks,
    dmsf_public_urls,
    dmsf_workflow_step_actions,
    dmsf_workflow_step_assignments,
    dmsf_workflow_steps,
    dmsf_workflows;

最後に外部キー制約を戻します。

SET FOREIGN_KEY_CHECKS=1;

Step2 マイグレーション履歴を削除する

続いて

schema_migrations

からDMSFの履歴を削除します。

DELETE
FROM schema_migrations
WHERE version LIKE '%-redmine_dmsf';

注意

この操作は「今後DMSFを利用しない」ことを前提としています。

データを保持したまま将来的に再利用する予定がある場合は、この方法は適しません。

Step3 状態確認

再度ロールバックを実行します。

sudo -u www-data \
bundle exec rake \
redmine:plugins:migrate \
NAME=redmine_dmsf \
VERSION=0 \
RAILS_ENV=production

正常終了していれば

echo $?
0

となります。

Step4 プラグイン本体を退避する

最後にプラグイン本体を退避します。

sudo mkdir -p \
/home/www-data/retired_plugins
sudo mv \
plugins/redmine_dmsf \
/home/www-data/retired_plugins/

Passengerを利用している場合は再起動します。

sudo touch tmp/restart.txt

apaceの再起動でもOKです。

sudo systemctrl reload apache2.service

動作確認

ここまで終わったら、

  • Redmineが起動する
  • Administration → Plugins にDMSFが表示されない
  • エラーログにDMSF関連エラーが出ていない
  • プロジェクトが正常に閲覧できる

ことを確認します。

問題がなければ、DMSFの切除は完了です。

おわりに

今回一番苦労したのは、アンインストールの方法そのものではありません。

**「標準手順が最後まで通らない」**ことでした。

最初はマイグレーションを一つずつ修正してロールバックしようと考えていましたが、進むたびに新しいエラーが現れ、終わりが見えませんでした。

そこで発想を変え、「もう利用しないものは、安全を確認したうえで切除する」という方針に切り替えたことで、ようやく前へ進むことができました。

もちろん、この方法は誰にでも勧められるものではありません。テーブルやマイグレーション履歴を直接操作するため、十分なバックアップと、失敗してもやり直せる検証環境があることが大前提です。

前回構築した redmine-clone は、まさにそのための環境でした。

標準手順が通らない場面ほど、「何度でもやり直せる環境」があることの価値を強く実感しています。

そして、この作業によってようやく、Redmine 6.xへの移行に向けた大きな障害を一つ取り除くことができました。

Redmine 5.1にパスワードマネージャーをインストール&初期設定

概要

性質上、パスワードをやりとりすることが多いRedmine。その管理を一括で行うためのプラグイン、vaultをインストールしてみました。

特記事項

  • ※パスワードを管理するという性質上、インターネットからアクセスできるサイトでこのプラグインの運用はオススメしません。
  • コンフィグファイルをいじるため、可能な限り検証環境でテストを行ってから導入を試みてください。

環境

  • Redmine 5.1
  • Ubuntu 22.04
  • Apache 2.4
  • MySQL
  • Ruby 3.0.2

※筆者環境のRedmineとApacheの実行ユーザーは www-data です。

さっくりとしているけどさっくりとはいかない手順

Redmineサーバでのターミナル操作です。(要管理者権限)

  1. gitでプラグインをcloneします。
  2. DBのマイグレーションを行い、プラグインをインストールします。
  3. Webサービスを再起動します。
  4. 初期設定をWebとターミナルで行います。

プラグインをgit cloneして配置

  • Redmineのプラグイン配置ディレクトリに移動
cd /path/to/redmine/plugins && pwd

自分の環境に合わせます。 (筆者環境 /home/www-data/redmine/plugins )

  • git clone
sudo -u www-data git clone https://github.com/noshutdown-ru/vault
  • clone確認
ls -ld vault

ディレクトリがあることを確認します。

プラグインのインストール

  • Redmineのルートディレクトリに移動
cd /path/to/redmine && pwd

自分の環境に合わせます。 (筆者環境 /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
  • マイグレーションの成功確認
echo $?

0を確認します。0以外は何らかのエラーが起きています。

Webサービスの再起動

  • Webサービス(apache)再起動
sudo systemctl restart apache2.service && echo $?

0を確認します。0以外は何らかのエラーが起きています。

  • Webサービス起動確認
systemctl status apache2.service

active (running)を確認します。

プラグインのインストール確認と初期設定

  • ブラウザでRedmineにログイン

管理者権限でログインします。ログイン後、ヘッダーにKeysというメニューが表示されています。クリックしても

500
The encryption key is not set in the settings

というエラーが出ていますので、対応を行います。

  • 管理画面に移動

管理>Vaultに移動します。

  • 暗号化キーの設定

暗号化キーを、ランダムな文字列:英数記号16文字で入力します。

head /dev/urandom | tr -dc 'a-zA-Z0-9!@#$%^&*()_+{}|:<>?' | head -c 16; echo

等とすると、16文字の文字列を完全ランダムに生成することができます。

この文字列を「暗号化キー」の後のテキストボックスに入れます。

Use Redmine encryptionにもチェックを入れ、適用をクリックします。

この後、Redmineのサーバにターミナルログインします。

Redmineサーバでのパスワードファイルの暗号化

  • Redmineのコンフィグファイル配置ディレクトリに移動
cd /path/to/redmine/config && pwd

自分の環境に合わせます。 (筆者環境 /home/www-data/redmine/config )

  • configuration.ymlのバックアップ
sudo -u www-data cp -pi configuration.yml /path/to/backup/directory/configuration.yml.$(date +%Y%m%d)

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

  • configuration.ymlのバックアップ確認
diff -u /path/to/backup/directory/configuration.yml.$(date +%Y%m%d) configuration.yml

差分が無いこと(エラーがないこと)を確認します。

  • configuration.ymlの編集

教義・信仰に則ったエディタを用いて以下のように編集します。

production:
  database_cipher_key: "上記で入力した16文字の文字列"
  • production:の項目がある場合は、そのセクションの下に書きます。
  • その際、と、半角スペース2つを行頭に入れるのを忘れないでください。

編集後、保存をします。

  • configuration.ymlの編集後の差分確認
diff -u /path/to/backup/directory/configuration.yml.$(date +%Y%m%d) configuration.yml
+production:
+  database_cipher_key: "上記で入力した16文字の文字列"

を確認します。(productionが既にある場合は + database_cipher_key: "上記で入力した16文字の文字列" )

  • Redmineのルートディレクトリに移動
cd /path/to/redmine && pwd

自分の環境に合わせます。 (筆者環境 /home/www-data/redmine )

  • configuration.ymlに基づき暗号化
sudo -u www-data bundle exec rake redmine:plugins:vault:convert RAILS_ENV=production
  • 暗号化の成功確認
echo $?

0を確認します。0以外は何らかのエラーが起きています。

Webサービスの再起動

  • Webサービス(apache)再起動
sudo systemctl restart apache2.service && echo $?

0を確認します。0以外は何らかのエラーが起きています。

  • Webサービス起動確認
systemctl status apache2.service

active (running)を確認します。

設定反映確認

  1. Redmineのサイトに管理者権限でログインします。
  2. ヘッダーの Keys をクリックしてエラーがないことを確認します。

使い方に関しては改めて。

RedmineにLightbox2プラグインをインストール。

それなりに読まれていると自負している『ライザのアトリエ3』の攻略記事「有料DLC:ロスカ島」の文献探しの記事にも使われているLightbox2プラグインのインストール方法です。

メールアドレスの登録が必要なものの無料で利用できます。

  • 画像を拡大表示できるライトボックス機能。
  • スライドショー形式で画像を順に閲覧可能。

の2つが強力なため、Remdineで画像を多用する際にも大いに役立ちます。

動作環境

  • Ubuntu 24.04
  • Apache 2.4
  • Ruby 3.2

手順

Redmine Xでのパッケージ取得

公式サイトよりメールアドレスを登録します。

登録後、送られてくるメール内に記載されているURLからパッケージを取得。

任意の方法でサーバ内にアップロードします。

パッケージの展開

  • アップロードしたファイルがあるディレクトリに移動
cd /hoge && pwd
  • パッケージの所有者変更
sudo chown www-data:www-data redmine_x_lightbox2.zip

Redmineの実行ユーザーに合わせます。

パッケージの展開と配置

  • パッケージ配置
sudo -u www-data unzip redmine_x_lightbox2.zip -d /path/to/redmine/plugins

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

  • パッケージ配置確認
ls -ld /path/to/redmine/plugins/redmine_x_lightbox2

ディレクトリがあることを確認します。

プラグインインストール

  • Redmineルートディレクトリに移動
cd /path/to/redmine && pwd

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

  • bundle install
sudo -u www-data bundle install
  • DBマイグレーション
sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production
  • Apache再起動
sudo systemctl restart apache2.service && echo $?

返値が0であることを確認します。

  • Apache再起動後のステータス確認
systemctl status apache2.service

active(running)を確認します。

動作確認

  1. 画像を添付 任意のチケットまたはWikiに画像を添付します。
  2. 画像をクリック 添付された画像をクリックし、ポップアップ表示が正常に動作することを確認します。
  3. ナビゲーションの確認 表示された画像を左右に切り替え、スライドショー機能が動作していることを確認します。

Redmine View Customizeを用いて、alt属性がついた画像を拡大して表示する。

こちらの記事の応用となります。

のように、alt属性がついた画像をマウスオーバーしたときに

拡大表示させます。

前提

  • Redmine View Customize がインストールされていること。
  • Redmine 5.1で動作を確認しています。

手順

画面移動

  1. Redmineに管理者権限でログインします。
  2. 管理>表示のカスタマイズに移動します。

カスタマイズ作成:JavaScript

表示のカスタマイズに移動後、「新しい表示のカスタマイズ」をクリックします。

以下の通りに入力します。

  • パスのパターン
  • 空白
  • プロジェクトのパターン
  • 空白
  • 挿入位置
  • 全ページのヘッダ
  • 種別
  • JavaScript

コード

// JavaScript部分
$(document).ready(function() {
$('img[alt]').hover(
function() {
$(this).css({
'transform': 'scale(1.5)',
'transition': 'transform 0.3s ease'
});
},
function() {
$(this).css('transform', 'scale(1)');
}
);
});

// CSS部分
var style = document.createElement('style');
style.innerHTML = `
img[alt] {
transition: transform 0.3s ease;
}
`;
document.head.appendChild(style);
  • コメント
  • 任意「alt画像のホバー表示(javascript)」など
  • 有効
  • チェック
  • プライベート
  • チェックを外す

設定後、保存をクリックします。

動作を確認します。

上記設定後、チケット詳細などのアイコンが表示されているページに遷移します。

冒頭のようにマウスカーソルを近づけた際に拡大されれば設定は完了です。

Redmine View Cutomizeを用いてアイコンを拡大表示させる。

概要

アイコンの画像にマウスを近づけたとき、

アイコンを拡大表示させるためのView_Customizeのスクリプトです。

前提

  • Redmine View Customize がインストールされていること。
  • Redmine 5.1で動作を確認しています。

手順

画面移動

  1. Redmineに管理者権限でログインします。
  2. 管理>表示のカスタマイズに移動します。

カスタマイズ作成:JavaScript

表示のカスタマイズに移動後、「新しい表示のカスタマイズ」をクリックします。

以下の通りに入力します。

  • パスのパターン
  • 空白
  • プロジェクトのパターン
  • 空白
  • 挿入位置
  • 全ページのヘッダ
  • 種別
  • JavaScript

コード

$(document).ready(function() {
// gravatarクラスを持つ画像にホバーイベントを追加
$('img.gravatar').hover(
function() {
$(this).css({
'transform': 'scale(1.5)', // 拡大率
'transition': 'transform 0.3s ease' // 拡大のスムーズなアニメーション
});
},
function() {
$(this).css({
'transform': 'scale(1)', // 元のサイズに戻す
'transition': 'transform 0.3s ease' // 縮小のスムーズなアニメーション
});
}
);
});
  • コメント
  • 任意「アイコンのホバー表示(javascript)」など
  • 有効
  • チェック
  • プライベート
  • チェックを外す

設定後、保存をクリックします。

カスタマイズ作成:CSS

表示のカスタマイズに移動後、「新しい表示のカスタマイズ」をクリックします。

以下の通りに入力します。

  • パスのパターン
  • 空白
  • プロジェクトのパターン
  • 空白
  • 挿入位置
  • 全ページのヘッダ
  • 種別
  • CSS

コード

/* gravatarクラスを持つ画像のスタイル */
img.gravatar {
transition: transform 0.3s ease; /* スムーズなアニメーション */
cursor: pointer; /* ポインタを表示 */
}
  • コメント
  • 任意「アイコンのホバー表示(CSS)」など
  • 有効
  • チェック
  • プライベート
  • チェックを外す

設定後、保存をクリックします。

動作を確認します。

上記設定後、チケット詳細などのアイコンが表示されているページに遷移します。

冒頭のようにマウスカーソルを近づけた際に拡大されれば設定は完了です。

Redmine 5.1にWikiエディタのフルスクリーンモードを追加するプラグイン。

概要

RedmineのWiki編集ページを他のマークダウン対応エディタのようにフルスクリーンモードを追加します。

動作を確認した環境

  • Ubuntu 22.04 / 24.04
  • Redmine 5.1
  • Apache 2.4

さっくりとした手順

  1. Redmineのプラグイン配置ディレクトリに移動します。
  2. git cloneを行います。
  3. Webサービスを再起動します。
  4. 動作を確認します。

Redmine プラグイン配置ディレクトリに移動

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

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

プラグインインストール

  • git clone
sudo -u www-data git clone https://github.com/sk-ys/redmine_wiki_fullscreen_editor
  • clone 確認
ls -ld redmine_wiki_fullscreen_editor

ディレクトリがあることを確認します。

Webサービス再起動

sudo systemctl restart apache2.service

動作確認

  1. Redmineに管理者権限でログインします。
  2. チケットやコメント編集など、任意のWiki編集画面を表示させます。
  3. 以下のように「フルスクリーン有効化」ボタンが出ればインストール完了です。

終わらせるときは右上の「フルスクリーン無効化」をクリックすれば解除できます。

Redmine 5.1にenhanced_uxプラグインをインストール。

概要

以下のように、UX回りを大幅にパワーアップするプラグインです。

  • Ctrl+クリックでポップアップ
  • 二画面モードの追加

動作を確認した環境

  • Ubuntu 24.04
  • Redmine 5.1
  • Apache 2.4

さっくりとした手順

  1. Redmineのプラグイン配置ディレクトリに移動します。
  2. git cloneを行います。
  3. Webサービスを再起動します。
  4. 動作を確認します。

Redmine プラグイン配置ディレクトリに移動

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

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

プラグインインストール

  • git clone
sudo -u www-data git clone https://github.com/sk-ys/redmine_enhanced_ux
  • clone 確認
ls -ld redmine_enhanced_ux

ディレクトリがあることを確認します。

Webサービス再起動

sudo systemctl restart apache2.service

動作確認

  1. Redmineに管理者権限でログインします。
  2. 管理>プラグイン>Redmine Enhanced UX plugin>設定に移動します。
  3. 有効にしたい機能を選び、チェックしていきます。

利用者にとっては、ない方がよかった機能もいくつかあります。そこはユーザーと調整しながら行ってください。

Redmineの文字色変更を容易にするプラグイン導入(Redmine_wiki_text_colorizer)

概要

RedmineはMarkdwon準拠なので、タグによる文字色の変更が可能。

とはいえ、色指定や範囲が結構面倒です。それを解消するプラグインを導入します。

redmine_wiki_text_colorizer

動作確認環境

  • Ubuntu 22.04
  • Redmine 5.1
  • Apacheで稼働(実行ユーザはwww-data)

導入手順

例によって、SSH(または直接ターミナルに入っての)導入です。

ディレクトリ移動

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

自分の環境に合わせます。 (筆者の環境/home/www-data/redmine/plugins)

プラグイン導入

  • git clone
 sudo -u www-data git clone https://github.com/sk-ys/redmine_wiki_text_colorizer
  • clone確認
ls -ld redmine_wiki_text_colorizer

ディレクトリがあることを確認します。

  • apache(webサービス再起動)
sudo systemctl restart apache2.service

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

導入後の確認

Wiki、チケットやコメントの編集画面を表示します。

Wiki編集画面に、「A」のアイコンが2つ並んでいるボタンが追加されます。

文字を選択した後、このボタンを押すと文字色のパレットが表示されます。

任意の色を選ぶと、

選択した箇所がタグで囲まれます。(それと同時にボタンの色が選んだ文字色になります)

プレビュー/保存などで文字色が変わっていれば導入できています。

Redmineに「元に戻す」「やり直し」追加(Redmine Wiki Historyプラグイン)

概要

RedmineにWord / Excel等にある「アンドゥ」「リドゥ」を追加するプラグインで、誤消去などを防ぎます。

Redmine Wiki History

動作確認環境

  • Ubuntu 22.04
  • Redmine 5.1
  • Apacheで稼働(実行ユーザはwww-data)

導入手順

例によって、SSH(または直接ターミナルに入っての)導入です。

ディレクトリ移動

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

自分の環境に合わせます。 (筆者の環境/home/www-data/redmine/plugins)

プラグイン導入

  • git clone
 sudo -u www-data git clone https://github.com/sk-ys/redmine_wiki_history
  • clone確認
ls -ld redmine_wiki_history

ディレクトリがあることを確認します。

  • apache(webサービス再起動)
sudo systemctl restart apache2.service

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

導入後の確認

Wiki、チケットやコメントの編集画面を表示します。

このようにアンドゥ(元に戻す)、リドゥ(やり直し)ボタンが表示されます。

入力した後に取り消し/やり直しができていれば導入成功です。

Redmine5.1のdmsfプラグインの脆弱性対応。(プラグインアップグレード)

概要

Redmineの文書管理プラグイン、dmsfに脆弱性が発表されたので、その対応を行います。

脆弱性概要

https://jvndb.jvn.jp/ja/contents/2024/JVNDB-2024-000055.html

当該プラグインを有効にしている場合、Redmineにログインしているユーザーによって、Redmineの実行権限で可能な範囲で、サーバー上の任意のファイルを取得されたり削除されたりする可能性があります。

脆弱性対象

バージョン3.1.4より前のバージョン

筆者環境

  • Ubuntu 22.04
  • Apache2.4
  • MySQL 8.0.3
  • Redmine 5.1
  • dmsf 3.1.3

注意事項

脆弱性に対応したバージョンは、2024年5月現在、Redmine 4.2には対応していません。

筆者のようにRedmine 4.2を単独ユーザーで運用していない限りは、以下のオプションを強く推奨します。

  • Redmine及びOS全体のバージョンアップを図る。
  • 本プラグインを無効化する。

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

  1. DBのバックアップ
  2. Webサービス停止
  3. 既存プラグインディレクトリの退避
  4. git cloneによるプラグイン入手
  5. DBマイグレーション
  6. Webサービス起動
  7. プラグインアップグレード確認

DBのバックアップを行います。

  • 作業用ディレクトリに移動
cd /hoge && pwd

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

  • DBのバックアップ取得
 mysqldump -h localhost -u redmine -p --no-tablespaces --single-transaction redmine > redmine_backup.$(date +%Y%m%d).sql
  1. -u ユーザ オプション db名です。自分の環境に合わせます。
  2. パスワードはDBのユーザパスワードです。

Apacheの停止を行います。

※ 利用者への注意喚起も行ってください。

  • 停止前のステータス確認
systemctl status apache2.service

active (running)を確認します。

  • Apache停止
sudo systemctl stop apache2.service
  • 停止後のステータス確認
systemctl status apache2.service

inactive (dead)を確認します。

既存プラグインを退避します。

  • redmineプラグインディレクトリに移動
cd /redmine/root/directory/plugins && pwd

ディレクトリは自分の環境に合わせます。

  • dmsfプラグイン退避
sudo mv redmine_dmsf /path/to/backup/directory/redmine_dmsf.$(date +%Y%m%d)

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

  • dmsfプラグイン退避確認
ls -ld /path/to/backup/directory/redmine_dmsf.$(date +%Y%m%d)

ディレクトリがあることを確認します。

プラグインをgit cloneします。

  • git clone
sudo -u www-data git clone -b v3.1.4 https://github.com/danmunn/redmine_dmsf

脆弱性に対応したv3.1.4を指定します。

  • clone確認
ls -ld redmine_dmsf

ディレクトリがあることを確認します。

プラグインのアップグレードを行います。

  • Redmineのルートディレクトリに移動
cd /redmine/root/directory && pwd

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

  • bundle install
sudo -u www-data bundle install
  • DBマイグレーション
sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production

Webサービスを再開します。

  • 再開前のステータス確認
systemctl status apache2.service

inactive (dead)を確認します。

  • Apache再開
sudo systemctl start apache2.service
  • 停止後のステータス確認
systemctl status apache2.service

active (running)を確認します。

バージョンアップを確認します。

  1. Redmineに管理者権限でログインします。
  2. 管理>プラグインに進みます。
  3. DMSFプラグインが3.1.4になっていることを確認します。
  4. 既存の動作(チケットの発行/編集など)に問題が無いことを確認します。

おまけ:切り戻し手順

このプラグイン、アップグレードの失敗や手順ミスで軽くRedmine全体が機能不全に陥ります。そのため、切り戻し手順を記しておきます。

通常の切り戻し

ディレクトリ移動

  • Redmineのルートディレクトリに移動
cd /redmine/root/directory && pwd

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

プラグインアンインストール

sudo -u www-data rake redmine:plugins:migrate NAME=redmine_dmsf VERSION=0 RAILS_ENV=production

ディレクトリ削除

sudo rm plugins/redmine_dmsf -Rf

Webサービス再起動

sudo systemctl restart apache2.service

それでもダメだった切り戻し(DBリストア)

cd /hoge
# mysqldumpを行ったディレクトリ

mysql -h localhost -u redmine -p redmine < redmine_backup.$(date +%Y%m%d).sql
# パスワードはredmineインストール時に設定したDBユーザのものです

sudo systemctl restart apache2.service

Page 1 of 6

Powered by WordPress & Theme by Anders Norén