タグ: Ubuntu Page 14 of 15

室内サーバ増強計画:第一段階完了。(そして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」を扱ってみようと思いました。

Ubuntu 20.04にフォトアルバム『Lychee』をインストール。

「速い」「軽い」「扱いやすい」が揃ったWebアルバムLycheeをローカルで建てたUbuntu20.04(Kubuntu)にインスールしてみました。

(参考:写真サーバ Lychee)

前提

  • MySQL導入済み
  • Apache導入済み
  • php7.4導入済み

ハードウェアは「Chuwi Herobox Pro」。1TBのSSDをまるごとホームディレクトリに割り当てています。

手順

PHP設定

この通りにMemory Limitやアップロードできるファイル容量を増やしています。(大きめの写真ファイルを扱うため)

DB作成

mysql -u root -p
CREATE DATABASE lychee character set utf8 collate utf8_bin; 
CREATE USER 'lychee'@'localhost' IDENTIFIED BY 'パスワード'; 
GRANT ALL PRIVILEGES ON lychee.* TO 'lychee'@'localhost' WITH GRANT OPTION; 
FLUSH PRIVILEGES;
quit

Lycheeダウンロード

mkdir /home/www-data
# 上述した1TB/homeを有効活用するため、サイトディレクトリをここにします。
cd /home/www-data
git clone https://github.com/electerious/Lychee.git lychee

Lycheeディレクトリ設定

chown -R www-data:www-data /home/www-data/
chmod 777 /home/www-data/lychee/data/
chmod -R 777 /home/www-data/lychee/uploads/
cd /var/www/html
ln -s /home/www-data/lychee/ lychee

バーチャルサイト設定

vi /etc/apache2/sites-available/lychee.conf

設定内容

<VirtualHost *:80>
   DocumentRoot /home/www-data/lychee/
      <Directory /home/www-data/lychee/>
         Options Indexes FollowSymLinks MultiViews
         AllowOverride All
      </Directory>
</VirtualHost>

設定有効化

a2ensite lychee
systemctl restart apahce2

設定後、

http://[IP or ホスト名]/lychee

でインストール画面が現れました。

DB名
DBパスワード

などを入れれば設定完了です。

Lycheeの画面

基本的に

  • アルバムを作る
  • ドラッグアンドドロップで写真を放り込む

とシンプルな作り。(Dropbox連携などもあるようですがセキュリティの事情で省いています)

ただ、それを補って「高速描画/高速処理」が快適です。自分の写真管理の新たな友となることは間違いなく、後日、改めて紙幅を設けたいと思います。

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

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

自宅サーバの監視システム。(Ubuntu 20.04にZabbix追加)

Zabbixサーバ追加

宅内サーバの障害の切り分けのため、監視システムであるZabbixを導入しました。

環境

  • Kubuntu 20.04
  • MySQL / Apache導入済み

手順

LAMP設定

aptitude install libapache2-mod-php
aptitude install php php-mbstring php-gd php-xml php-bcmath php-ldap php-mysql

PHP構成変数の更新

vi /etc/php/7.4/apache2/php.ini
変更内容
memory_limit 256M
upload_max_filesize 16M
post_max_size 16M
max_execution_time 300
max_input_time 300
max_input_vars 10000
date.timezone = 'Asia/Tokyo'

Zabbix リポジトリの設定

wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+focal_all.deb 
dpkg -i zabbix-release_5.0-1+focal_all.deb

Zabbix サーバのインストール

aptitude update
aptitude install zabbix-server-mysql zabbix-frontend-php zabbix-agent zabbix-apache-conf

Zabbixデータベースとユーザの作成

mysql -u root -p 
CREATE DATABASE zabbixdb character set utf8 collate utf8_bin; 
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'パスワード'; 
GRANT ALL PRIVILEGES ON zabbixdb.* TO 'zabbix'@'localhost' WITH GRANT OPTION; 
FLUSH PRIVILEGES;
quit
cd /usr/share/doc/zabbix-server-mysql 
zcat create.sql.gz | mysql -u zabbix -p zabbixdb

Zabbix構成の更新

vi /etc/zabbix/zabbix_server.conf
ファイルの内容
  DBHost=localhost
  DBName=zabbixdb
  DBUser=zabbix
  DBPassword=パスワード

zabbix有効化

systemctl enable zabbix-server 
systemctl restart zabbix-server

ディレクトリ権限変更

ここで [サーバIPorドメイン/zabbix]を入力しましたが404 Not Found。以下を施しました。

cd /usr/share
chown -R www-data:www-data zabbix
systemctl restart apache2

その後、インストーラ画面が出てきたので後に続きます。

サーバ追加後

このように、監視システムが現れました。

  • 監視設定の精査
  • メール通知などの追加

が残っていますけれど、まずは一歩前進。

余談

Zabbix-AgentはWindowsにも対応しています。そこでメインで使っているデスクトップにもAgentを入れてみたら

  • マザーボード備え付けのLANポートが認識しない
  • 同様にマザーボードのサウンドも認識しない
  • 壁紙設定が強制的に上書きされる

などの不具合が発生し、やむなくWindowsからエージェントをアンインストールしました。

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のログ閲覧プラグイン導入とローテーションの設定。

もはやインフラとなった自サーバの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を構築。

はじめに

を試してみたものの、機能が足りなかったり機能に特化しすぎたりで一長一短。

そこで、

  • 自分のインプット/アウトプットを効率的に視認できる
  • やりたいことを一覧で見ることができる
  • ToDoをカレンダーで表示したり
  • 各進捗の状況を把握する

となると、もっと根本的に使えるものがあればいいのではと思いました。

そこで白羽の矢を立てたのがredmineです。

これを選んだ理由

  • 多くの人が使っているツールはノウハウが揃っているため、とっつきやすいと判断。
  • プラグインが充実している。
    • 特にmermaid記法を表示できるのは大きい。
  • 自分の趣味ごとにプロジェクトを作っておけば、それらの管理もできる。

インストール

環境

自宅のサブマシンを利用しました。

  • 32GB Memory
  • 1TB SSD
  • Core i-5

と、動作性能に申し分はありません。

OSインストール

デスクトップ環境としても運用したいので、Kubuntuを用います。バージョンは現時点でのLTSである20.04。

インストールウィザードに従ってインストールするのみですが、IPアドレスのみローカル固定としました。(外部公開は運用の考慮外です)

初期設定

サーバ(という名のサブPC)からコマンドラインを立ち上げ、以下を行っていきます。

sudo apt install aptitude # aptよりも好みのパッケージ管理
sudo aptitude update
sudo aptitude upgrade # OSを最新バージョンにします。
reboot # 一度再起動をします。

再起動後、sshをインストール。

sudo aptitude install sshd

メインPCのターミナルソフトからIPアドレスでSSH接続を確認。

Redmineインストール

こちらに関しては、このサイトに従いましたが、mysqlを導入後に以下を実行して安全性を高めます。

sudo mysql_secure_installation

インストール後、ipアドレス/redmine をブラウザに打ち込み

表示を確認。

今後の展望:

  • プラグインを入れていく。
  • テーマを変える。
  • プロジェクトなどを設定していく。

ナレッジサーバ構築メモ-2- Docker/Knowlege構築篇

はじめに

先日から始まった「Linux機にナレッジサーバを構築して運用する」プロジェクト。

OS基盤の前に、

  • 何かあっても切り戻しができる
  • VMと異なりリソース消費が少ない

ことから、Dockerを入れてみます。

前提条件

ベースPCは前述したとおり。

  • Kubuntu 21.04を導入
  • NWをIPv4のローカルで固定
  • 家庭内のNWからSSH接続できるよう設定

Dockerインストール

以下、全てrootで実施します。

(参考:https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04-ja)

  • 必要なパッケージをインストール
# aptitude install apt-transport-https ca-certificates curl software-properties-common
  • Docker公式リポジトリをシステムに追加
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
  • パッケージ更新→ Dockerインストール
# aptitude update
# aptitude install docker-ce
# aptitude install docker-compose
  • Dockerステータス確認
# systemctl status docker

● docker.service - Docker Application Container Engine
    Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
    Active: active (running) since Sun 2021-09-12 07:54:43 JST; 1min 35s ago
TriggeredBy: ● docker.socket
      Docs: https://docs.docker.com
  Main PID: 51598 (dockerd)
    Tasks: 9
    Memory: 28.6M
    CGroup: /system.slice/docker.service
            └─51598 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

以下、通常ユーザで実行します。

  • 通常ユーザでdockerを実行できるように設定
$ usermod -aG docker [ユーザ名]
  • 反映後、ログアウトし再ログイン
  • 自動起動有効化
$ sudo systemctl enable docker

docker 動作確認

まずはコンテナが動いているかを確認します。

(参考:https://qiita.com/Esfahan/items/52141a2ad741933d7d4c)

$ docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS   PORTS     NAMES

→ 何も動いておらず。

  • Docker上でbash起動
$ docker run -i -t centos /bin/bash
# cat /etc/redhat-release
CentOS Linux release 8.3.2011
→ CentOS8.3が起動
# exit
  • Dockerイメージ再確認
$ docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED             STATUS                     PORTS     NAMES
99b9e451b8c0   centos   "/bin/bash"   About a minute ago   Exited (0) 14 seconds ago             compassionate_allen
  • テスト用のイメージ削除
$ docker rm [コンテナID]
  • テスト用イメージ削除確認
$ docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS   PORTS     NAMES

何も動いていないことを再確認。

DockerコンテナからKnowledgeを作成

ここまで来たらあっけなく終わりました。

$ sudo docker pull koda/docker-knowledge
$ sudo mkdir /home/manualmaton/knowledge ## コンテナを格納するディレクトリ
$ sudo chmod a+w /home/manualmaton/knowledge
$ sudo docker run -d -p 80:8080 -v /home/manualmaton/knowledge:/root/.knowledge --name knowledge koda/docker-knowledge

あとは、ブラウザ上から

http://[サーバのIPアドレス]

にアクセスし

正常にアクセス完了。Tomcatやnginxの設定すら不要でした。

残る課題

  • コンテナの自動起動設定。→ 現状、リスタートしても自動的にサービスが立ち上がらないので、ベースマシン再起動のたびにdocker start knowledgeを入力する必要があります。これを自動起動する設定を行います。
  • データ(コンテナ)の自動バックアップ

まとめ

なんとなく作ったシステムが実は有用だったと気づいたものの、それを再現するためのメモがなかったことに唖然としました。

「前に取得した知識がどこかで役立つよう」

メモを残しておくことは本当に大事だと思ったわけで。

なにはともあれ、今後は

  • 適当なMarkdownエディタを使って生地を作成
  • それをKnowledgeに放り込む

スタイルが確立しそうな予感です。

Page 14 of 15

Powered by WordPress & Theme by Anders Norén