ZoneMinderのOSを入れ替える(ほぼ新規インストール)

ubuntu

先日ZoneMinderが動作しているfedora(36がでているがあえて35のまま)でdnf updateをしたところ,Web管理画面が接続できなくなりました.動画データは収集できているようです.おそらく,ZoneMinderとphpの組合せが悪いのでしょう.この際OSを動作実績の多いubuntu 22.04 Serverに変更してみます.

基本方針

次の方針でOSを変更作業を行います.

  • OSはubuntu 22.04 Serverとする
  • 標準リポジトリのみ使用する
  • 同一VMを利用する
  • 旧OSディスクを削除し,新OSディスクを作成する(移行期間中はzmは停止)
  • ZoneMinderの設定およびデータベースはバックアップしておき,再利用できるものは極力利用する
  • OS領域から分離した画像格納領域(詳細はこちら)はそのまま利用する.(中のデータは利用しない)

この後は,作業の進捗にあわせて記載していきます.

バックアップ

移行作業の前にバックアップを取得します.

ZoneMinderデータベースのバックアップ

ZoneMinderのデータベースのバックアップを行います.ZoneMinderが動作しているサーバにログインしてスーパーユーザ権限で実行します.mysqlデータベースのバックアップを以下のコマンドで行います.

% sudo su -
# mysqldump -u${MYSQL_USER} -p${MYSQL_PASS} $database | bzip2 > $filename

上記の変数($つきの文字列)はそれぞれzmで設定したデータベースの利用者・そのパスワード・データベース名・バックアップファイル名です.このサーバはなくなりますので,私の場合バックアップ先のファイルをNFS上に作成しました.ローカルディスクに作成した場合は,scpなどで他のサーバに退避しておきます.

ZoneMinder設定のバックアップ

つづいてzmの定義ファイルのバックアップです.私はtarコマンドを利用しました.$filenameはバックアップファイル名です.

# cd /etc
# tar cf $filename zm

データベースの時と同様にバックアップ先のファイルをNFS上に作成しました.ローカルディスクに作成した場合は,scpなどで他のサーバに退避しておきます.

Proxmox VEでの操作

OSのシャットダウン

PVEで操作する前にOSをシャットダウンします.

% sudo shutdown -h now

VMのリソース変更

以下の画面はOSシャットダウン直後のVMのリソースの状態です.以下の赤枠で囲ったものがOS用のディスクです.

ディスクの削除

削除するディスクを選択すると画面上部のメニューが変わります.

「Detach」を選択します.

本当に「Detach」していいかどうか聞いてきますので「Yes」をクリックします.

以下の画面のように「Unused Disk 0」として表示されます.

つづいて「Unused Disk 0」を選択し,画面上部の「Remove」をクリックします.

本当に「Remove」していいかどうか聞いてきますので「Yes」をクリックします.

未使用ディスク「Unused Disk 0」が削除されます.

ディスクの追加

新OS用にディスクの追加を行います.追加するVMを選択し,「Hardware」→「Add」→「Hard Disk」を選択します.

以下の画面が表示されますので,必要な情報を入力し「Add」をクリックします.

以下のように新規ディスクが追加されます.

インストールメディアの設定

あらかじめubuntuサーバのインストール用ISOをダウンロードしPVEの/var/lib/vz/template/isoに格納しておきます.つづいてVMのCD-ROMにこのISOイメージを割り当てます.

以下の画面が表示されますので,ISOイメージがある場所を指定して「OK」をクリックします.

以下のようにCD-ROMにISOイメージが割り当てられます.

これでOSインストールの準備が整いました.

OSのインストール

VMを選択し画面上部のコンソールをクリックします.

以下の画面が表示されますので,「Start Now」をクリックします.

つづいてCD-ROMに接続されたISOイメージからのブートが成功すると以下の画面になります.

すると,ubuntuインストーラーが起動しますのでつづけて作業を実施します.

ubuntuサーバーのインストールについては割愛します.

OSインストール後のPVEの設定

起動デバイスの設定

OSインストールが終了後いったんVMを停止します.つづいて,VMを選択し「Options」→「Boot Order」→「Edit」をクリックします.

するとBoot Orderの編集画面が表示されますので,以下のようにubuntuをインストールしたデバイスを一番上に移動し,ide2(CD-ROM)のチェックをはずし「OK」をクリックします.

以下のようにBoot Orderがscsi0のみになれば設定完了です.

CD-ROMデバイスの設定(ISOイメージのDetach)

CD-ROMデバイスからubuntuのISOイメージをでタッチしておきます.「Hardware」→「CD-DVD Drive(ide2)」→「Edit」をクリックします.

「Do not use any media」を選択して「OK」をクリックします.

以下のようになればOKです.

OSの起動

上記の設定が完了したら画面上部の「Start」をクリックしてOSを起動してください.

OSの各種設定

ubuntuの各種設定を行っていきます.fedora系のコマンドとはかなり違います.

時刻同期設定

NTPもchronyもどちらも使用可能です.fedoraにあわせてchronyをインストールします.

% sudo apt -y install chrony

定義ファイルは /etc/chrony/chrony.conf です.poolとallowを設定しました.以下のコマンドを実行すると時刻同期が始まります.

% sudo systemctl restart chrony

確認は以下のコマンドを実行します.

% chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* ntp-b2.nict.go.jp             1   6   377    46  +5875us[+8260us] +/-   48ms
^+ ntp-k1.nict.jp                1   6   377    45    -21ms[  -21ms] +/-   18ms
^+ ntp-a3.nict.go.jp             1   6   367    44  -8261us[-8261us] +/-   34ms
^+ ntp-b3.nict.go.jp             1   6   377    45    -13ms[  -13ms] +/-   29ms

timezoneの設定

システムのtimezone設定を以下のコマンドで行います.

% sudo timedatectl set-timezone Asia/Tokyo

確認します.

% timedatectl
               Local time: Fri 2022-07-01 23:32:52 JST
           Universal time: Fri 2022-07-01 14:32:52 UTC
                 RTC time: Fri 2022-07-01 14:32:52
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

パッケージの最新化

パッケージの最新化を行います.

% sudo apt update
% sudo apt list --upgradeable
% sudo apt upgrade

パッケージの最新化が完了したらOSを再起動します.

画像格納ディスクについて

画像格納ディスク上のLVMの情報はOSインストール時に自動的に認識されます.また,前OSで作成したファイルシステム(xfs)もそのまま認識されます.

データベース(MariaDB)のインストール

標準リポジトリでZoneMinderをインストールするとデータベースとしてmysqlが依存関係でインストールされます.MariaDBをインストールしたい人は先にインストールしておきましょう.

% sudo sudo apt -y install mariadb-server

/etc/mysql/mariadb.conf.d/50-server.cnfのcharacter-set-serverとcollation-serverがそれぞれutf8mb4,utf8mb4_general_ciになっていることを確認します.

% sudo sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf

character-set-server  = utf8mb4
collation-server      = utf8mb4_general_ci

また,/etc/mysql/mariadb.conf.d/50-client.cnfの[client]セクションにdefault-caracter-set を設定します.

% sudo sudo vi /etc/mysql/mariadb.conf.d/50-client.cnf

[client]
default-character-set = utf8mb4

修正があった場合はMariaDBを再スタートします.

% sudo sudo systemctl restart mariadb

つづいてMariaDBの初期設定を行います.

% sudo sudo mysql_secure_installation

数個の質問がありますので適宜回答します.参考までに当サイトではrootのパスワードを入力するところ以外はすべてリターンで回答しました.

ZoneMinderのインストール

ZoneMinderをインストールします.

ZoneMinderのインストール

以下のコマンドを実行します.

% sudo apt -y install zoneminder

つづいてZoneMinder用のデータベースの作成およびデータベースアカウントの設定を行います.

% mysql -u root -p < /usr/share/zoneminder/db/zm_create.sql
% mysql -u root -p -e "CREATE USER 'zmuser'@'localhost' IDENTIFIED BY 'zmpass';"
% mysql -u root -p -e "GRANT ALL PRIVILEGES ON zm.* TO 'zmuser'@localhost;"
% mysqladmin -u root -p reload

データベースアカウントやパスワードは適宜設定してください.アカウントとパスワードを変更した場合は,/etc/zm/zm.confのZM_DB_USERおよびZM_DB_PASSに値を設定します.

ZM_DB_USER=zmuser
ZM_DB_PASS=zmpass

つづいて/etc/zm/zm.confのグループをapacheのグループに変更します.

% sudo chgrp www-data /etc/zm/zm.conf

ZoneMinderの有効化

以下のコマンドを実行しZoneMinderサービスの有効化を行います.

% sudo systemctl enable zoneminder.service

Webサーバの有効化

Apache2のサンプル定義体を利用します.

% sudo a2enconf zoneminder

つづいて以下のコマンドを実行します.

% sudo a2enmod cgi
% sudo service apache2 reload

timezoneの設定

システムのtimezoneとphpのtimezone設定を合わせます.システムのtimezoneはtimedatectl set-timezoneコマンドを利用するか,以下のコマンドで対話型で変更できます.OSインストール後設定を行っている場合は変更不要です.

% sudo dpkg-reconfigure tzdata

phpのtimezoneの変更は /etc/php/${php-version}/{apache2,fpm}/php.ini のいずれかに設定します.設定内容は以下のとおりです.

[Date]
date.timezone = "Asia/Tokyo"

MariaDBもtimezone設定がありますが通常システムのtimezoneを利用しますのでZoneMinderと同一サーバで動作するのであれば設定不要です.

データ格納ディスクの設定

今回利用しているZoneMinderの画像格納領域は,/var/cache/zoneminder/eventsとなっていました.その上の階層にもいくつかのファイルがありますのでこれらも移行します.まずapache2とZoneMinderを停止します.

sudo systemctl stop zoneminder
sudo systemctl stop apache2

画像格納ディスクのマウントを行います.この作業ではマウントポイントは仮のものでいいです.その前に旧データが存在していますので不要であればファイルシステムを再作成しておくとよいでしょう.rmコマンドで旧データを削除したところかなり時間がかかりました.

sudo mount /dev/mapper/vg_zm-data01 /mnt

/var/cache/zoneminderにあるファイルを画像格納ディスクにコピーします.この作業はスーパーユーザになって作業します.

% sudo su -
# cd /var/cache/zoneminder
# tar xf - . | (cd /mnt ; tar xf -)

正規のマウントポイントを再作成します.

# cd /var/cache
# mv zoneminder zoneminder.old
# mkdir zoneminder
# chown www-data zoneminder
# chgrp www-data zoneminder

つづいて /etc/fstab に以下の行を追加します.

/dev/mapper/vg_zm-data01        /var/cache/zoneminder   xfs defaults 0 1

仮マウントポイントをアンマウントした後,mount /var/cache/zoneminder コマンドを実行します.

# umount /mnt
# mount /var/cache/zoneminder

dfコマンドやmountコマンドでマウントできていることを確認した後,以下のコマンドを実行します.このとき旧データが残っているとこのコマンド実行にかなりの時間がかかります.

# cd /var/cache
# chown -R www-data zoneminder
# chgrp -R www-data zoneminder

ここで一旦OSを再起動します.再度ログインして上記の設定が反映されていることとapahce2やZoneMinderが起動していることを確認します.

apache2のhttps化

サーバ証明書の用意

let’s encryptのサーバ証明書を利用します.

ssl用定義体の設定

/etc/apache2/sites-available/default-ssl.confを編集します.ServerAdminとサーバ証明書関連の設定を行います.

ServerAdmin webmaster@example.com
SSLCertificateFile      /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile   /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem

mod_sslの有効化

以下のコマンドで有効化します.

% sudo a2ensite default-ssl
% sudo a2enmod ssl

リダイレクト設定

HTTP 通信を HTTPS へリダイレクトする設定を行います./etc/apache2/sites-available/000-default.confの <VirtualHost *:80> に以下の設定を行います.

# HTTP -> HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

mod_rewriteの有効化とwebサーバの再起動を行います.

% sudo a2enmod rewrite
% sudo systemctl restart apache2

これでhttps化は完了です.

ZoneMinderの設定

管理画面への接続

HTTPS化ができていない場合は,ブラウザで http://192.0.2.235/zm/ へアクセスします.192.0.2.235は当サイトの内部ZoneMinderサーバのアドレスです.適宜変更してアクセスしてください.httpsでアクセスする場合は,サーバ証明書のホスト名あるいはドメイン名を指定します.

画面の下の「Decline」を「Accept」に変更し「APPLY」をクリックします.すると以下の画面になります.

カメラの追加

カメラを追加するために「Console」画面の「ADD」をクリックします.

以下の画面になりますので,「Name」にカメラの名前を入力して,画面右上の「ONVIF探索アイコン」をクリックします.※カメラの名前の入力をここで行わなくてもかまいません.

次の画面になりますので,「Detected Cameras」のプルダウンから目的のカメラのものを選択します.次の例は,3台のネットワークカメラを検出した中から選択している例です.選択し終えたら「Next」をクリックします.

すると選択したカメラのプロファイルを選ぶ画面になります.

「Detected Profiles」をクリックするとプルダウンメニューが現れますので,SecondStremeProffileのUnicastのものを選択します.つづいて「SAVE」をクリックします.

次の画面で「Name」にカメラ名を入力します.また,「Function」をMocordにします.

なお,上記の設定は後で変更することも可能です.最後に「SAVE」をクリックします.以下は3台のカメラを設定した画面です.

ひととおりの確認が終わったら,/var/cache/zoneminder.oldを削除してください.

これで,ubuntu 22.04 Server へのZoneMinderのインストールと初期設定は完了です.

コメント

タイトルとURLをコピーしました