先日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のインストールと初期設定は完了です.
コメント