タグ: redmine Page 13 of 14

RedmineのDBバックアップ/リストア検証試験

概要

redmineの障害に備え、DBのバックアップ/リストアの検証試験を行いました。

これはあくまでもDBのみでの結果です。添付ファイルやソースに関しては検討課題となります。

MySQL Dumpを行う

まずは公式サイトのように

https://redmine.jp/faq/system_management/backup/

mysqldump -u [redmineのDBユーザ] -p[DBパスワード] [DB名] > /バックアップ先のパス/backup.sql

と入力したら、以下のエラーが出てきました。

mysqldump: [Warning] Using a password on the command line interface can be insecure.
mysqldump: Error: 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces

1つめのWarning:

[以下引用]
これは、「警告:コマンドラインインターフェイスでパスワード使うのは安全ではない場合があります」というメッセージで、パスワードをそのままシェルスクリプトに記述するのは望ましくない、ということです。
(中略)
このWarningは、パスワードを外部ファイルから読み出すようにすれば出なくなります。

https://resource-sharing.co.jp/mysql-command-password-warning/

そこで、MySQLのユーザー名とパスワードを保存したファイルを別に作成します。

外部ファイル作成

vi dbaccess.conf

ファイル内容

[client]
user = [ユーザー名]
password = [パスワード]
host = localhost
# DBの接続先。

作成後、

mysql --defaults-extra-file=dbaccess.conf
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

とログインできることを確認しました。

Warning解消後のmysqldumpエラー

この外部ファイルを用いてmysqldumpを試みましたが

mysqldump --defaults-extra-file=dbaccess.conf -h localhost redmine > ./test.sql
mysqldump: Error: 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces

このエラーを検索したところ以下の記事に行き当たりました。

https://www.koikikukan.com/archives/2021/02/17-235555.php

MySQLを5.7にバージョンアップしたことで、PROCESS特権が必要になるようです。
テーブルスペース情報をダンプする必要がないユーザーは、-no-tablespacesオプションを指定してmysqldumpを呼び出すことにより、前述の要件を回避できます。

そこで、もう一度試します。

mysqldump --defaults-extra-file=dbaccess.conf --no-tablespaces -h [DBサーバ] [DB名] > backup.sql

今度はエラーがありません。DBのバックアップが取れたことでいよいよリストア試験を行います。

DBリストア確認

リストア前準備

まず、バックアップが取れた状況で、トップページを編集します。


 ↓

リストア

mysql --defaults-extra-file=dbaccess.conf redmine < [取得したバックアップsql]
sudo systemctl restart apache2

httpdサービス再起動後、

と、バックアップを取った直後に切り戻った後に戻りました。

ToDo

  • 定期バックアップのスケジュールをとる
  • 添付ファイルのバックアップを行う

などがありますけれど、まずはクリティカルな部分の検証が完了しました。

Chuwi Heroboxにインストールしたredmineに入れたプラグイン。

こちらは、以前にご紹介した記事の集大成的な記事ではありますが、「今後、一から作り直すときにそのままコピペできるようにした備忘録」を兼ねています。

redmineそのもののインストールや設定は過去に実施したので、これに倣います。

インストール

Gmailとの連携

テーマ変更(kodomo redmine)

環境

以下の環境で動作を確認しています。

  • Linux Mint 20.03
  • Ruby 2.70-p0
  • Rails 5.2.6.3
  • MySQL 8.0.28

プラグインをインストールする場所は、redmineのプラグインが格納されているディレクトリに読み替えてください。

View Customize ※mariadbでこれをインストールすると500エラーになる事象が発生しました。

cd /var/lib/redmine/plugins
sudo -u www-data git clone https://github.com/onozaty/redmine-view-customize.git view_customize
cd ../
bundle install
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
systemctl restart apache2

redmica_ui_extension

※Mermaid_Macroの差し替えです。

cd /var/lib/redmine/plugins/
sudo -u www-data git clone https://github.com/redmica/redmica_ui_extension.git
bundle install
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
systemctl restart apache2

knowlegebase

cd /var/lib/redmine/plugins
sudo -u www-data git clone https://github.com/alexbevi/redmine_knowledgebase.git
bundle install
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
systemctl restart apache2

knowlegebaseでファイルが添付できない問題に対処

cd /var/lib/redmine/plugins
cd redmine_knowledgebase/app/views/attachments/
mv _links.html.erb ../_links.html.erb.org
systemctl restart apache2

Kanban

cd /var/lib/redmine/plugins
sudo -u www-data git clone https://github.com/happy-se-life/kanban.git
bundle install
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
sudo systemctl restart apache2

チケットテンプレート

cd /var/lib/redmine/plugins
sudo -u www-data git clone https://github.com/akiko-pusu/redmine_issue_templates.git
bundle install
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
systemctl restart apache2

チケットタグ

cd /var/lib/redmine/plugins/
sudo -u www-data git clone https://github.com/ixti/redmine_tags.git
bundle install
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
systemctl restart apache2

導入後の設定

  1. 管理者権限でredmineにログインします。
  2. 管理>プラグイン>Redmine Tagsに移動します。
  • タグをサイドバーに表示する:タグクラウド(シンプル)
  • チケット数を表示する:チェックを入れる
  • オープンしているチケットのみ表示する:チェックを外す
  • カラー表示する:チェックを入れる

clipboard_image_paste

cd /var/lib/redmine/plugins
sudo -u www-data git clone https://github.com/peclik/clipboard_image_paste.git clipboard_image_paste
systemctl restart apache2

ログローテーション

ログを参照するプラグインを導入

cd /var/lib/redmine/plugins
sudo -u www-data git clone https://github.com/haru/redmine_logs.git redmine_logs
systemctl restart apache2

シンボリックリンク貼り替え

mkdir /var/log/redmine
chown www-data:www-data /var/log/redmine
cd /var/lib/redmine/log
mv *.log /var/log/redmine
cd ../
rmdir log
ln -s /var/log/redmine/ log
chown -R www-data:www-data log
ls -la log
# log -> /var/log/redmine/となっていることを確認

ログローテーション設定

cd /etc/logrotate.d
vi redmine

設定ファイル内容

/var/lib/redmine/log/*.log {
        missingok
        notifempty
        copytruncate
        compress
}

ログローテート実行

logrotate -d redmine
# テストして問題ないことを確認
logrotate -f redmine
# 強制的にローテーションさせる

用語集

cd /var/lib/redmine/plugins
sudo -u www-data git clone https://github.com/torutk/redmine_glossary.git redmine_glossary
bundle install
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
systemctl restart apache2

pdf preview

プラグイン導入

aptitude install build-essential libmagic-dev ghostscript
cd /var/lib/redmine/plugins
sudo -u www-data git clone https://github.com/nanego/redmine_preview_pdf.git redmine_preview_pdf
bundle install
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
systemctl restart apache2

設定変更

cd /etc/Image-Magick-6
cp -pi  policy.xml policy.xml.org

設定差分

   <policy domain="path" rights="none" pattern="@*"/>
   <!-- disable ghostscript format types -->
-  <policy domain="coder" rights="none" pattern="PS" />
+  <policy domain="coder" rights="read|write" pattern="PS" />
   <policy domain="coder" rights="none" pattern="PS2" />
   <policy domain="coder" rights="none" pattern="PS3" />
-  <policy domain="coder" rights="none" pattern="EPS" />
-  <policy domain="coder" rights="none" pattern="PDF" />
-  <policy domain="coder" rights="none" pattern="XPS" />
+  <policy domain="coder" rights="read|write" pattern="EPS" />
+  <policy domain="coder" rights="read|write" pattern="PDF" />
+  <policy domain="coder" rights="read|write" pattern="XPS" />

Message Customize

cd /var/lib/redmine
sudo -u www-data git clone https://github.com/ishikawa999/redmine_message_customize.git plugins/redmine_message_customize
cp -pir plugins/redmine_message_customize/35_change_load_order_locales.rb config/initializers/35_change_load_order_locales.rb
systemctl restart apache2

redmineによるゲーム進捗管理。(『ソフィーのアトリエ2』Very Hardの壁)

状況把握としてのredmine

redmineの

  • 目標を設定する
  • 現状を記録する

がゲームでも役立ちました。

『ソフィーのアトリエ2』実績解除のために

先月末よりプレイをして、継続してredmineで記録をつけている『ソフィーのアトリエ2』。ゲームそのものはクリアしていますが、実績があと4つほど残っています。

そのうち1つが

『難易度Very Hard以上で○○を倒す』

というもの。最初はたかをくくっていましたが

  • 強力なオーラに守られてダメージが通らない
  • 強敵は連続攻撃が激しくまたたく間に戦闘不能に陥ってしまう

と、半ば諦めかけていました。

そんな中でネットの情報を探り、「これならいけるのでは」と、redmineでこんなチケット設定しました。

  • 目標:Very Hardの壁を親チケットとして登録
    • そのために必要な「最大ダメージを与えるアイテムの調合」を小チケットに登録
      • その子チケットとして、アイテム調合に必要な特性を持つ素材を集める

と、順々にチケットを登録。

効果検証の記録

redmineのスクリーンショットをそのまま貼り付けられる機能が役立ちました。

これを順々に追っていけば

  • 方向性に誤りはないか
  • 誤っていた場合はどこを直せばいいか

のフィードバックが可能です。

以前にお伝えした

この、『ライザのアトリエ2』での最大ダメージ検証のときよりも筋道を立てた検証が行えそうです。

redmineサーバのクラッシュとリビルド。

運用が始まったばかりの自室サーバのredmineに思わぬ冷や水がありました。

原因:操作ミスによるサーバクラッシュ

全く恥ずべき話ですが、redmineサーバに新たなシステムを導入しようとインストールスクリプトを叩いていたらmysqlが起動しなくなり、

更に、その原因となるファイルを削除したら親のシステムディレクトリを削除したという二重の詰み。

システムリビルド

こうなったらやることは一つ。「もう一度のサーバ構築」。

とても幸いだったことに、今までやっていたものは全て記録していました。

https://manualmaton.com/category/%e3%82%ac%e3%82%b8%e3%82%a7%e3%83%83%e3%83%88/pc/linux/redmine/

これを元に

  1. サーバインストール
  2. DNS設定
  3. redmineインストール
  4. プラグイン導入

と進めていき、

データ以外は復旧です。

このデータも「本当に残しておきたい」ものはローカルに保存していたので被害は抑えられました。

反省点

しかし、これは間違いなくインシデントとして報告すべきものでした。

  • 影響範囲のリサーチ不足
  • ミスを修正時に切り戻しポイントを作っていなかった
  • そもそもバックアッププランが足りていなかった

と、根本的な誤りがありました。

これは手痛い授業料として、次につなげていきます。

redmineにPDFのサムネイルを表示させるプラグインを導入。

ボードゲームのルールやスコアシート参照のため、PDFを用いる機会は多いもの。

そこで、redmineに導入してみました。

導入

aptitude install build-essential libmagic-dev ghostscript
# これが入っていないとインストールできませんでした
cd /var/lib/redmine/plugins
#redmineが導入されているディレクトリ
git clone https://github.com/nanego/redmine_preview_pdf.git redmine_preview_pdf
chown -R www-data:www-data redmine_preview_pdf
bundle install
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
systemctl restart apache2

導入後のテスト

redmineにログインし、任意のテキスト編集画面(markdown)で以下の様に入力しました。

attachement:hoge.pdf

うまく表示されず。

apacheのエラーログに以下を発見。

App 385988 stderr: convert-im6.q16: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/408.

このエラーを頼りに検索すると以下の記事を発見。

http://sstto.blog.shinobi.jp/%E7%94%BB%E5%83%8F%E5%87%A6%E7%90%86/imagemagick%E3%81%A7pdf%E5%A4%89%E6%8F%9B%E5%A4%B1%E6%95%97%E3%81%A8%E5%AF%BE%E5%BF%9C

ImageMagicの脆弱性対応のため、初期状態では無効化されているとか。

なので、この通りに対応します。

cd /etc/Image-Magic6
cp -pi policy.xml policy.xml.org

差分

以下の差分の通り編集。

   <policy domain="path" rights="none" pattern="@*"/>
   <!-- disable ghostscript format types -->
-  <policy domain="coder" rights="none" pattern="PS" />
+  <policy domain="coder" rights="read|write" pattern="PS" />
   <policy domain="coder" rights="none" pattern="PS2" />
   <policy domain="coder" rights="none" pattern="PS3" />
-  <policy domain="coder" rights="none" pattern="EPS" />
-  <policy domain="coder" rights="none" pattern="PDF" />
-  <policy domain="coder" rights="none" pattern="XPS" />
+  <policy domain="coder" rights="read|write" pattern="EPS" />
+  <policy domain="coder" rights="read|write" pattern="PDF" />
+  <policy domain="coder" rights="read|write" pattern="XPS" />

編集後

うまく表示されました。

この手のプラグインで機能を次々に改良できるのもredmineならではです。

redmineのログ閲覧プラグイン導入とローテーションの設定。

もはやインフラとなった自サーバのredmine。よりよい運用のために以下を施しました。

環境

  • OS: Ubuntu 20.04 (Linux Mint 20.3でも同様)
  • redmineバージョン:4.2.4

手順

※全て管理者権限で行います。

ログを参照するプラグインの導入

cd /var/lib/redmine/plugins
# 自環境のredmineのプラグインが格納されているディレクトリに読み替えてください
git clone https://github.com/haru/redmine_logs.git redmine_logs
chown -R www-data:www-data redmine_logs
systemctl restart apache2

導入後、redmineにログインし、管理をクリックすると「ログ」のカテゴリーが見られるようになります。

ログローテーションの実施

結構な容量があるので、ローテーションさせて肥大化を防ぎます。

redmineのログを/var/log 配下に移動(シンボリックリンク張り替え)
mkdir /var/log/redmine
chown www-data:www-data /var/log/redmine
cd /var/lib/redmine/log
mv *.log /var/log/redmine
cd ../
rmdir log
ln -s /var/log/redmine/ log
chown -R www-data:www-data log
ls -la log
# log -> /var/log/redmine/となっていることを確認
ローテーション
cd /etc/logrotate.d
vi redmine
設定ファイル内容
/var/lib/redmine/log/*.log {
        missingok
        notifempty
        copytruncate
        compress
}

ログローテート実行

logrotate -d redmine
# テストして問題ないことを確認
logrotate -f redmine
# 強制的にローテーションさせる

ローテーション後の挙動

  1. redmineに管理者権限でログイン
  2. 管理>ログに移動
  3. 画像のように以前のログが圧縮されていることを確認
  • /var/lib/redmine/log/production.log
  • /var/lib/redmine/log/production.log.1.gz

redmineプラグイン「clipboard_image_paste導入」。

redmine4.1以降から、チケット発行時にクリップボード上の画像を直接貼り付けられるようになりました。

ですが、knowlegebaseではそれが反映されないので別途プラグインを追加しました。

参考

手順

※全て管理者権限で行います。

ディレクトリ移動・配置

cd /var/lib/redmine/plugins
# 自分のredmineプラグインが配置されている場所に読み替えてください
git clone https://github.com/peclik/clipboard_image_paste.git clipboard_image_paste
# 4.x以降に対応したフォーク版です

権限変更・反映

chown -R www-data:www-data clipboard_image_paste
systemctl restart apache2

反映後の挙動

記事入力欄に以下のようなボタンが追加されるのでクリックします。

Ctrl + Vで貼り付け、OKをクリックします。(このとき、さらに細かい範囲を指定できます)

後はWikiの記述に従って該当の画像を貼り付けます。

これで、redmineプラグインのknowledgebaseでもスクリーンショットの貼り付けができるようになりました。

redmineプラグイン「redmine_knowlegebase」での添付できない問題への対処。

以下、解決したのでメモとなります。

環境

  • OS: Ubuntu 20.04 (Linux Mint 20.3でも同様)
  • redmineバージョン:4.2.4
  • Rubyバージョン:2.7.0
  • Railsバージョン:5.2.6.2
  • knowlegebaseのバージョン4.1.1

発生していた現象

  1. プラグインredmine_knowlegebaseをインストール後、設定を有効にする。
  2. ナレッジベースで任意の記事を登録/更新する。
  3. ファイルを添付し、保存する。
  4. 登録/更新した記事の「ファイル」タブで添付ファイルが表示されず。

この事象はかなり厄介でした。各種ナレッジにファイルを添付したいことは多々あり、回避策としてredmineの「ファイル」機能のリンクを張るのも迂遠だったからです。

糸口

そんな中で以下の記事を発見。

https://github.com/alexbevi/redmine_knowledgebase/issues/351

I am using Redmine 3.4.4 and knowledgebase 3.3.1. Perhaps, the "knowledgebase" plugin /plugins/redmine_knowledgebase/app/views/attachments/_links.html.erb works until Redmine 3.3, but since Redmine 3.4 the specification has changed, so _links.html.erb Does not it work as an attached file processing? I thought, and deleted or moved _links.html.erb on the plugin side, it worked.

要約すると

  • Redmine 3.3→3.4以降で添付ファイルの仕様が変わった。
  • /redmine格納ディレクトリ/plugins/redmine_knowledgebase/app/views/attachments/_links.html.erb の添付ファイル処理がうまくいかない。
  • _links.html.erb を移動/削除すれば動いた。

解決

手順

全て管理者権限で実行します。

SSHログイン&ディレクトリ移動

cd /var/lib/redmine/plugins
#redmineのプラグインが格納されているディレクトリに読み替えてください
cd redmine_knowledgebase/app/views/attachments/

該当ファイル退避&設定反映

mv _links.html.erb ../_links.html.erb.org
# このケースでは上のディレクトリに退避させました
systemctl restart apache2

設定反映後

無事に動きました。これで、様々なファイルの添付が可能になります。

redmineのチケットによるボードゲームプレイレポート管理。

このツールの伸びしろと自由な運用に驚かされました。

きっかけ

「ボードゲームを自分のツールで管理する」はもともと考えており、redmineで購入した作品の一覧を転記することまでは行いました。

その途上で

「遊んだときの記録をチケットとして残していけば」

  • いつ
  • どこで
  • 誰と
  • 何をプレイし
  • 得点はどのぐらいか
  • 反省点など

を効率的に残せるのではないかと思った次第です。

作成

カスタムフィールド

先に上げた項目をリストアップし、カスタムフィールドとして登録します。人数や作品名などは必須として漏れをなくします。

ワークフロー作成

そしてワークフロー作成。その中にカスタムフィールドを付け加えます。

記録

ここまでやれば、あとは記録です。

先だっての『ガイアプロジェクト』のプレイレポートはこれを元にしたものだったりします。

使ってみての感想

予想通り、「いつ、何をプレイしてどういう反省点があったか」や「もっと得点を伸ばせる要素はなかったか」などを記録して見返すことができるというのは後々のフィードバックに繋がります。

次はチケットテンプレートを用意して作品ごとのスコアシートを作っていけば後々楽になっていくことが予想されます。

自室redmineサーバ上でリマインダーメールを設定。

概要

redmineには期日が間近であるか、過ぎてしまったチケット一覧をメールで通知することができることを確認しました。

そこで、

  • 自動的にリマインダーメールを送付する

設定をサーバ自身に施します。

動作確認環境

  • Ubuntu 20.04
  • Redmine 4.2

前提

既にredmineでのメール設定は終わっているものとします。(ここではGmailと連携させました)

参考記事

期日が間近のチケットをメールで通知する(リマインダ機能)

https://redmine.jp/faq/issue/send_reminders/

手順

全て管理者権限で実行しています。

スクリプト作成

mkdir ~/sh # 任意のホームディレクトリに読み替えます
vi ~/sh/reminder_ndays_before.sh
スクリプト内容
#!/bin/sh

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
​
cd /var/lib/redmine
bundle exec rake redmine:send_reminders days=3 RAILS_ENV=production

実行権付与・動作確認

chmod +x ~/sh/reminder_ndays_before.sh
/sh/reminder_ndays_before.sh

実行後、以下のようなメールを確認します。

※ 自分はこれに加え

  • 31日前
  • 7日前
  • 1日前

をそれぞれ作成しています。

cron登録

指定の時刻に自動的に上記のスクリプトを実行できるよう、cronを修正します。

crontab -e
cron内容
#設定したスクリプトのパスを記載
30 8 * * * ~/sh/reminder_31days_before.sh
40 8 * * * ~/sh/reminder_1day_before.sh

30 17 * * * ~/sh/reminder_7days_before.sh
40 17 * * * ~/sh/reminder_1day_before.sh

30 20 * * * ~/sh/reminder_3days_before.sh
40 20 * * * ~/sh/reminder_1day_before.sh

上記設定では

  • 8:30 - 31日前
  • 8:40 - 1日前
  • 17:30 - 7日前
  • 17:40 - 1日前
  • 20:30 - 3日前
  • 20:40 - 1日前

に送信するようにして、設定完了です。

Page 13 of 14

Powered by WordPress & Theme by Anders Norén