タグ: Linux Page 23 of 24

室内サーバ増強計画:第一段階完了。(そしてUbuntu Studioインストール)

ここ2週間の私的プロジェクト、ようやく決着です。

これまでの経緯

元々は「自分のミスにより検証機として用いていたredmineをクラッシュさせた」ことが発端。

ToDo / 進捗 / メモを管理・保管するツールとしてredmineは検証から本番へと格上げする必要がありました。

そこで、

  • 安価
  • 小型
  • 省電力

の三拍子が揃ったChuwi Heroboxに白羽の矢を立ててサーバの構築を行いました。

このサーバが思ったよりも快適だった&冗長化構成を取りたいためにもう一台購入したのが先週。

サーバの役割

現時点で、2つのサーバの役割は以下のとおりです。

サーバ1:Penzance

こちらはredmine専用。今後、自分の記録の核とするために他の機能は省こうと思います。(先代をクラッシュさせたのも、『他の機能を追加した』からでした

サーバ2:Paddington

こっちは

  • ローカルDNS
  • Zabbix
  • Knowledge(redmineの設定記録)
  • Lychee(フォトアルバム)

など、ネットワークの補助やredmineが苦手とする「写真の一覧」を収めるサーバになりました。

Linux Studio

サーバを2台構成にしたことで、今までredmineその他を入れていたPCが浮くことになりました。

これを活用するために、原点回帰です。検証機としての機能を有し、かつ、各種コンテンツの利用に耐えるLinuxとして選んだのがUbuntu Studio

使い慣れたKDEデスクトップが選択の決め手となりました。

好き勝手できる環境が一つあるというのは精神的な助けにも繋がります。

Webアルバムシステム『Lychee』感想。

新サーバに導入したWebアルバム『Lychee』。極めて満足度が高いシステムでした。

長所

操作の簡単さ

  1. アルバムを作る
  2. ブラウザ内部に写真をドラッグ&ドロップ

で登録完了。別のアルバムに移動させるのもファイル名変更も直感的に分かります。

速さ

「ゲートウェイを通さない」アドバンテージを差し引いても画像のアップロード、表示、画像の切り替えが異次元の速度です。

これにより、ファイルサーバにため込んでいた写真を見返すことができるようになりました。

短所

メニューが日本語非対応

簡単に操作できますが、使い方やメニューが日本語非対応なので敷居は高めです。

フォルダをまるごとインポートできない

ルートフォルダ
 └フォルダA(写真x枚)
 └フォルダB(写真y枚)

という構成でルートフォルダをドラッグ&ドロップしてもインポートすることができません。
同じく、フォルダA/Bだけをドラッグ&ドロップしても中の写真がインポートできません。対象はあくまでも写真ファイルのみです。

まとめ

「フォルダをまるごとインポートできない」はやや大きめの短所。
とはいえ、この早さや簡便さは他の群を抜いています。

今までに撮りためた写真を再活用するためにも、この「Lychee」を扱ってみようと思いました。

Ubuntu20.04にTomcat8とknowledgeを導入。

バージョンを落としてでも用いたいシステムがありました。

Dockerではなくオンプレ環境で整えます。メインをredmineにしたものの

「redmineの障害に備えた構築メモ」が欲しかったのもあります。

また、PDFをプレゼン形式で表示してくれるのはこのシステムの強み。

先だってredmineとは別のサーバを入手したので早速のインストールです。

環境

  • Ubuntu 20.04(Kubuntu)

手順

JDKインストール

aptitude openjdk-8-jdk

java -version
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-8u312-b07-0ubuntu1~20.04-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)

その後、Tomcatをaptitude(apt)でインストールを試みましたがaptitude(apt)でサポートするTomcatのバージョンは9。
knowlegeの対象外です。(knowledgeのシステム要件はTomcat8)

そこで、以下の手段を執りました。

Tomcatユーザー作成

mkdir /opt/tomcat

groupadd tomcat

useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat

Tomcat8のダウンロードと展開

cd /tmp
wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.5/bin/apache-tomcat-8.5.5.tar.gz
# DL先は2022/04/03時点のものです
tar -xf apache-tomcat-8.5.5.tar.gz -C /opt/tomcat/
ln -s /opt/tomcat/apache-tomcat-8.5.5 /opt/tomcat/latest
cd /opt/tomcat/latest/bin
chmod +x *.sh

Tomcat8の起動スクリプトを作成

vi /etc/systemd/system/tomcat.service
スクリプト内容

(CentOSから流用したので怪しい部分があります)

[Unit]
Description=Tomcat 8 servlet container
After=network.target

[Service]
User=tomcat
Group=tomcat
Type=oneshot
PIDFile=/opt/tomcat/latest/temp.pid
RemainAfterExit=yes

ExecStart=/opt/tomcat/latest/bin/startup.sh
ExecStop=/opt/tomcat/latest/bin/shutdown.sh
ExecReStart=/opt/tomcat/latest/bin/shutdown.sh;/opt/tomcat/latest/bin/startup.sh

[Install]
WantedBy=multi-user.target

Tomcat8のサービス化

chmod +x /etc/systemd/system/tomcat.service
systemctl daemon-reload
systemctl enable tomcat
systemctl start tomcat
systemctl status tomcat

ステータス確認

 systemctl status tomcat
● tomcat.service - Tomcat 8 servlet container
     Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: enabled)
     Active: active (exited) since Sun 2022-04-03 09:29:44 JST; 30min ago
    Process: 12416 ExecStart=/opt/tomcat/latest/bin/startup.sh (code=exited, status=0/SUCCESS)
   Main PID: 12416 (code=exited, status=0/SUCCESS)

Knowlegeインストール

cd /opt/tomcat/latest/webapps/
wget https://github.com/support-project/knowledge/releases/download/v1.13.1/knowledge.war
chown -R tomcat:tomcat knowledge.war 
systemctl restart tomcat

インストール後、

http://[インストールしたホスト]:8080/knowledge

でアクセスできることを確認しました。

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

そこで、

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

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

動作確認環境

  • 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日前

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

自室redmineサーバのタグ検索。

やりたいこと

作成したredmineは順調そのもの。ゲームのデータのみならず

  • 日常のToDo
  • 買い物リスト
  • 今後の予定

など、様々なものを入れていこうという気概が生まれました。そこで問題になってくるのが「増えてくるチケットをどう管理するか」

です。そこでチケットにタグを付与して検索しやすくなるように設定をしました。

前提

手順

ダウンロード、アクセス権変更

cd /var/lib/redmine/plugins/ #プラグインが入っているパスに読み替えてください
git clone https://github.com/ixti/redmine_tags.git
chown -R www-data:www-data redmine_tags/

インストール、設定反映

bundle install
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
systemctl restart apache2

redmine側での設定

以下の通り設定しました。

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

設定後の確認

チケット登録の下部にタグ挿入のフォームが追加されていました。

サイドバーにもタグが表示されて情報を追いやすくなっています。

自室redmineサーバ上とGmailの連携。

運用の仕方が分かってきた自室redmineサーバ。

Image with no description

自室で登録したチケットを出先でも見られるよう、メール連携を行います。

やりたいこと

  • redmineのメール通知を有効化するため、Gmailと連携する。

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

  • redmine 4.2
  • Ubuntu 20.04

Gmailとの連携

以下の記事を参考にしました。

[Redmine] 通知メールをGoogleのSMTPサーバーから発信する方法

https://a1-style.net/how-to-connect-to-gmail-smtp-from-bitnami-redmine-for-windows/

前提

  • 自分のGmailアカウントを保有していること。
  • 2段階認証プロセスが有効になっていること。

Googleアカウント設定

  1. Googleサービス>設定>アカウントセキュリティに移動。
  2. 「アプリパスワード」をクリック。
  3. 「アプリを選択」で「その他(名前を入力)」をクリック。
  4. 任意の名前を入力(ここではredmine)し、「生成」をクリック。
  5. このとき表示されたパスワードを控えておきます。

redmineサーバ設定

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

cd /var/lib/redmine/config
# redmineのコンフィグが格納されているディレクトリに読み替えてください
vi configuraltion.yml
# 既に何かを記載している場合は追記します
追記内容
production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      enable_starttls_auto: true
      address: "smtp.gmail.com"
      port: 587
      domain: "smtp.gmail.com"
      authentication: :plain
      user_name: "gmail_account"  #Gmailアドレス
      password: "app_password" #先ほど控えておいたアプリパスワード 

設定反映

chown www-data:www-data configuraltion.yml 
systemctl restart apache2

redmine側での設定

  1. redmineに管理者権限でログインします。
  2. 管理>設定>メール通知タブに移動します。
  3. 送信元メールアドレスをredmineサーバで設定したgmailアドレスにて保存します。
  4. 管理>ユーザー>通知対象を行うIDで任意のメール通知設定をします。

設定確認

チケットを作成/更新後、以下のようなメールを受信したことを確認します。

ここまでの流れ

「自分のToDoや知識をまとめる“道具”を作る」までの7日間、様々な学びがあったというのが今回の知見。

他にもまだ手を加えるところはあるし、何よりも運用に乗せることが第一。

始まったばかりという所です。

Page 23 of 24

Powered by WordPress & Theme by Anders Norén