Различия

Показаны различия между двумя версиями страницы.


Предыдущая версия
wiki:articles:zm [13/02/2023 13:55] (текущий) – [Версия - 1.36.*] graf
Строка 1: Строка 1:
 +**Дата написания:** \\
 + версия 1.30.0 - //октябрь 2016 г.//\\
 + версия 1.35.4 - //май 2020 г.//\\
 + версия 1.36.32 на Slackware 15.0 - //февраль 2023 г.// [[wiki:articles:zm15|ТУТ]]\\
 +**Автор:** //Graf//\\
 +
 +
 +
 +\\
 +^   **Сервер видеонаблюдения на базе ZoneMinder**   ^
 +\\
 +
 +<note warning> Перед добавлением камер обязательно настраиваем аутентификацию, задаем пароль пользователю с правами админа, перезапускаем ZoneMinder и перезаходим под пользователем с правами админа, только потом добавляем камеры! </note>
 +
 +===== Установка =====
 +==== Версия - 1.30.0 ====
 +Используем //Slackware Linux 14.2 64-bit// без DE и всем, что с ними связанно.\\
 +Обновляем все доступные пакеты посредством //slackpkg//, в итоге получая ядро 4.4.19.\\
 +IP сервера куда всё устанавливаем и где настраиваем - **192.168.10.214**\\
 +//ZoneMinder// версии **1.30.0**
 +
 +Устанавливаем //ffmpeg// от Alien, последний на день написания статьи 3.1.1.
 +<code>
 +# wget http://taper.alienbase.nl/mirrors/people/alien/restricted_slackbuilds/ffmpeg/pkg64/14.2/ffmpeg-3.1.1-x86_64-1alien.txz
 +# upgradepkg --install-new ./ffmpeg-3.1.1-x86_64-1alien.txz
 +</code>
 +
 +Устанавливаем //vlc// плеер от Alien, последний на день написания статьи 2.2.4.
 +<code>
 +# wget http://www.slackware.com/~alien/slackbuilds/vlc/pkg64/14.2/vlc-2.2.4-x86_64-1alien.txz
 +# upgradepkg --install-new ./vlc-2.2.4-x86_64-1alien.txz
 +</code>
 +
 +Устанавливаем //sbopkg//, синхронизируемся с его репозиторием попутно соглашаясь с созданием отсутствующих каталогов. 
 +<code>
 +# wget https://github.com/sbopkg/sbopkg/releases/download/0.38.1/sbopkg-0.38.1-noarch-1_wsr.tgz
 +# upgradepkg --install-new ./sbopkg-0.38.1-noarch-1_wsr.tgz
 +# sbopkg -r
 +</code>
 +
 +Собираем и устанавливаем необходимые пакеты.
 +<code>
 +# sbopkg -Bi "perl-Test-Inter perl-Test-Pod perl-Devel-Symdump perl-Pod-Coverage perl-Test-Pod-Coverage \
 +perl-yaml perl-YAML-Syck perl-net-http perl-www-robotrules perl-http-date perl-file-listing perl-IO-HTML \
 +perl-encode-locale perl-http-date perl-lwp-mediatypes perl-html-tagset perl-html-parser perl-http-message \
 +perl-http-negotiate perl-http-cookies perl-http-daemon libwww-perl perl-Date-Manip perl-Time-modules \
 +perl-Astro-SunTime perl-Device-SerialPort perl-X10 perl-Capture-Tiny perl-Email-Date-Format perl-MIME-Lite \
 +perl-Sys-Mmap perl-IO-Socket-SSL Net-SSLeay perl-Mozilla-CA perl-LWP-Protocol-https perl-Sys-MemInfo"
 +</code> 
 +
 +Собираем и устанавливаем сам ZoneMinder.
 +<code>
 +# git clone https://github.com/ZoneMinder/ZoneMinder.git
 +# cd ZoneMinder
 +# git submodule update --init --recursive 
 +# cmake -DCMAKE_INSTALL_PREFIX=/usr -DZM_WEBDIR=/var/www/htdocs/zm -DZM_CGIDIR=/var/www/cgi-bin \
 +-DZM_CONTENTDIR=/var/www/htdocs/zm 
 +
 +# make
 +# make install DESTDIR=/tmp/ZoneMinder-1.30.0
 +# cd /tmp/ZoneMinder-1.30.0/
 +# makepkg -l y -c n /tmp/ZoneMinder-1.30.0-x86_64-1.txz
 +# upgradepkg --install-new /tmp/ZoneMinder-1.30.0-x86_64-1.txz
 +</code>
 +
 +Создадим недостающие каталоги и дадим соответствующие права.
 +<code>
 +# mkdir -p /var/{run/zm,log/zm,www/htdocs/zm/{events,images,sounds}}
 +# chown -R apache:apache /var/{run/zm,log/zm,www/htdocs/zm}
 +</code>
 +
 +Скопируем скрипт запуска-остановки.
 +<code>
 +# cp scripts/zm /etc/rc.d/rc.zm
 +# chmod +x /etc/rc.d/rc.zm
 +</code>
 +
 +И, для автостарта при загрузке, пропишем в ///etc/rc.d/rc.local//
 +<code>
 +/etc/rc.d/rc.zm start
 +</code>
 +Всё необходимое поставили, перейдем к настройке.
 +\\
 +==== Версия - 1.35.4 ====
 +----
 +Используем //Slackware Linux 14.2 64-bit// без DE и всем, что с ними связанно.\\
 +Обновляем все доступные пакеты посредством //slackpkg//, в итоге получая ядро 4.4.217.\\
 +IP сервера куда всё устанавливаем и где настраиваем - **192.168.10.214**\\
 +//ZoneMinder// версии **1.35.4**\\
 +**Веб-интерфейс сильно изменился!!!**
 +
 +Устанавливаем //sbopkg//, синхронизируемся с его репозиторием попутно соглашаясь с созданием отсутствующих каталогов. 
 +<code>
 +# wget https://github.com/sbopkg/sbopkg/releases/download/0.38.1/sbopkg-0.38.1-noarch-1_wsr.tgz
 +# upgradepkg --install-new ./sbopkg-0.38.1-noarch-1_wsr.tgz
 +# sbopkg -r
 +</code>
 +
 +Собираем и устанавливаем необходимые пакеты.
 +<code>
 +# sbopkg -Bki "perl-Test-Inter perl-Test-Pod perl-Devel-Symdump perl-Pod-Coverage perl-Test-Pod-Coverage \
 +perl-yaml perl-YAML-Syck perl-net-http perl-www-robotrules perl-http-date perl-file-listing perl-IO-HTML \
 +perl-encode-locale perl-http-date perl-lwp-mediatypes perl-html-tagset perl-html-parser perl-http-message \
 +perl-http-negotiate perl-http-cookies perl-http-daemon libwww-perl perl-Date-Manip perl-Time-modules \
 +perl-Astro-SunTime perl-Device-SerialPort perl-X10 perl-Capture-Tiny perl-Email-Date-Format perl-MIME-Lite \
 +perl-Sys-Mmap perl-IO-Socket-SSL Net-SSLeay perl-Mozilla-CA perl-Module-Runtime Crypt-SSLeay perl-Sys-MemInfo \
 +perl-Crypt-Eksblowfish \
 +speex lame x264 x265 opus libgme gsm libilbc xvidcore libass libmodplug rtmpdump jansson libjwt libmp4v2 php-apcu OpenAL"
 +
 +# cpan LWP::Protocol::https
 +# cpan Data::Entropy::Algorithms
 +# cpan Crypt::JWT
 +# cpan Date::Format
 +# cpan Number::Bytes::Human
 +</code>
 +
 +Собираем свой //ffmpeg//.Скачаем тарбол со Slackbuild'ом и иже с ним. Распакуем его, и сюда же скачаем последние исходники ffmpeg (на сегодня 4.2.2)
 +<code>
 +# wget https://slackware.su/forum/files/zm/ffmpeg.tar.gz
 +# tar xf ./ffmpeg.tar.gz
 +# cd ffmpeg
 +# wget http://www.ffmpeg.org/releases/ffmpeg-4.2.2.tar.xz
 +</code>
 +
 +Файлам //./SlackBuild// и //./ff_build// присваиваем бит запуска и запускаем ./ff_build. После сборки устанавливаем получившийся пакет.
 +<code>
 +# chmod +x ./ffmpeg.SlackBuild
 +# chmod +x ./ff_build
 +# ./ff_build
 +...
 +...
 +Slackware package /tmp/ffmpeg-4.2.2-x86_64-1_SBo.tgz created.
 +
 +# upgradepkg --install-new /tmp/ffmpeg-4.2.2-x86_64-1_SBo.tgz
 +...
 +...
 +Package ffmpeg-4.2.2-x86_64-1_SBo.tgz installed.
 +</code>
 +
 +Устанавливаем //vlc// плеер от Alien, последний на день написания статьи 3.0.10.
 +<code>
 +# wget http://www.slackware.com/~alien/slackbuilds/vlc/pkg64/14.2/vlc-3.0.10-x86_64-1alien.txz
 +# upgradepkg --install-new ./vlc-3.0.10-x86_64-1alien.txz
 +</code>
 +
 +Собираем и устанавливаем сам ZoneMinder. Перед сборкой внесём изменения в файл //src/zm_event.cpp// которые позволять смотреть и записывать камеры в формате mp4 без ошибок.
 +<code>
 +# git clone https://github.com/ZoneMinder/ZoneMinder.git
 +# cd ZoneMinder
 +# git submodule update --init --recursive 
 +# wget https://slackware.su/forum/files/zm/fix_video_file_format.patch
 +# patch -p0 < ./fix_video_file_format.patch
 +# cmake -Wno-dev \
 +-DCMAKE_INSTALL_PREFIX=/usr \
 +-DZM_WEBDIR=/var/www/htdocs/zm \
 +-DZM_WEB_GROUP=apache \
 +-DZM_WEB_USER=apache  \
 +-DZM_CGIDIR=/var/www/cgi-bin \
 +-DZM_CACHEDIR=/var/www/htdocs/zm/cache \
 +-DZM_CONTENTDIR=/var/www/htdocs/zm \
 +-DZM_CONFIG_DIR=/etc/zm \
 +-DZM_PATH_ZMS=/var/www/cgi-bin/nph-zms \
 +-DLIBJWT_INCLUDE_DIR=/usr/include \
 +-DLIBJWT_LIBRARY=/usr/lib64/libjwt.so
 +
 +# make
 +# make install DESTDIR=/tmp/ZoneMinder-1.35.4
 +# cd /tmp/ZoneMinder-1.35.4/
 +# makepkg -l y -c n /tmp/ZoneMinder-1.35.4-x86_64-1.txz
 +# upgradepkg --install-new /tmp/ZoneMinder-1.35.4-x86_64-1.txz
 +</code>
 +
 +На всякий случай, содержимое файла //fix_video_file_format.patch//
 +<code=bash>
 +--- src/zm_event.cpp    2019-01-21 23:17:19.881961455 -0500
 ++++ src/zm_event.cpp.new        2019-01-21 23:17:38.452315254 -0500
 +@@ -196,7 +196,7 @@
 +
 +   if ( monitor->GetOptVideoWriter() != 0 ) {
 +     snprintf(video_name, sizeof(video_name), "%" PRIu64 "-%s", id, "video.mp4");
 +-    snprintf(video_file, sizeof(video_file), staticConfig.video_file_format, path, video_name);
 ++    snprintf(video_file, sizeof(video_file), "%s/%s", path, video_name);
 +     Debug(1,"Writing video file to %s", video_file );
 +
 +     /* X264 MP4 video writer */
 +</code>
 +
 +Далее, создадим недостающие каталоги и дадим соответствующие права.
 +<code>
 +# mkdir -p /var/{run/zm,log/zm,www/htdocs/zm/{events,images,sounds,cache}}
 +# chown -R apache:apache /var/{run/zm,log/zm,www/htdocs/zm}
 +</code>
 +
 +Скопируем скрипт запуска-остановки.
 +<code>
 +# cp scripts/zm /etc/rc.d/rc.zm
 +# chmod +x /etc/rc.d/rc.zm
 +</code>
 +
 +И, для автостарта при загрузке, пропишем в ///etc/rc.d/rc.local//
 +<code>
 +/etc/rc.d/rc.zm start
 +</code>
 +Всё необходимое поставили, перейдем к настройке.
 +
 +===== Настройка =====
 +==== Версия - 1.30.0 ====
 +
 +   *//__**MySQL (MariaDB**__)//
 +
 +Так как //MySQL (MariaDB)// в Slackware Linux уже установлена, просто настроим ее и дадим пароль пользователю //root//
 +
 +<code>
 +# mkdir /var/lib/mysql/mysql
 +# mysql_install_db
 +# chown -R mysql.mysql /var/lib/mysql
 +# chmod +x /etc/rc.d/rc.mysqld
 +# /etc/rc.d/rc.mysqld start
 +# mysql -u root
 +   MariaDB [(none)]> set password for 'root'@'localhost' = password('mypassword');
 +   Query OK, 0 rows affected (0.00 sec)
 + 
 +   MariaDB [(none)]> FLUSH PRIVILEGES;
 +   Query OK, 0 rows affected (0.00 sec)
 +
 +   MariaDB [(none)]> \q
 +   Bye
 +</code>
 +
 +Войдем под пользователем //root//, создадим базу ZoneMinder, для работы с базой дадим соответствующие права пользователю //zmuser//.
 +<code>
 +# mysql -u root -p
 +   Enter password: 
 +   MariaDB [(none)]> source /usr/share/zoneminder/db/zm_create.sql;
 +   …
 +   Query OK, 1 row affected (0.00 sec)
 +   Query OK, 1 row affected (0.00 sec)
 +
 +   MariaDB [(none)]> use zm;
 +   
 +   Database changed
 +   MariaDB [zm]> 
 +
 +   MariaDB [zm]> grant all privileges on zm.* to 'zmuser'@localhost identified by 'zmpass';
 +   Query OK, 0 rows affected (0.00 sec)
 +
 +   MariaDB [zm]> FLUSH PRIVILEGES;
 +   Query OK, 0 rows affected (0.00 sec)
 +
 +   MariaDB [zm]> \q
 +   Bye
 +</code>
 +
 +  *//__**Apache**__//
 +
 +Редактируем ///etc/httpd/httpd.conf//.\\
 +Убираем знаки комментария со строк:
 +<code>
 +LoadModule cgid_module lib64/httpd/modules/mod_cgid.so
 +LoadModule cgi_module lib64/httpd/modules/mod_cgi.so
 +LoadModule rewrite_module lib64/httpd/modules/mod_rewrite.so
 +Include /etc/httpd/mod_php.conf
 +</code>
 +
 +Правим необходимые секции:
 +
 +^   **Было**     **Стало**   ^
 +|  <code>DocumentRoot "/srv/httpd/htdocs"
 +<Directory "/srv/httpd/htdocs">
 +    Options Indexes FollowSymLinks
 +    AllowOverride None
 +    Require all granted
 +</Directory></code>  |  <code>DocumentRoot "/srv/httpd/htdocs"
 +<Directory "/var/www/htdocs">
 +    Options Indexes FollowSymLinks IncludesNOEXEC
 +    AllowOverride All
 +    Require all granted
 +    <RequireAll>
 +      <RequireAny>
 +          Require user apache
 +      </RequireAny>
 +    </RequireAll>
 +</Directory></code>  |
 +|  <code><IfModule dir_module>
 +    DirectoryIndex index.html
 +</IfModule></code>  |  <code><IfModule dir_module>
 +    DirectoryIndex index.html index.htm index.php
 +</IfModule>
 +</code>  |
 +|  <code><Directory "/srv/httpd/cgi-bin">
 +    AllowOverride None
 +    Options None
 +    Require all granted
 +</Directory></code>  |  <code><Directory "/srv/httpd/cgi-bin">
 +    AllowOverride None
 +    Options FollowSymLinks
 +    Require all granted
 +</Directory></code>  |
 +
 +В ///etc/php.ini// убираем знак комментария и редактируем //timezone//:
 +<code>
 +[Date]
 +date.timezone = Europe/Moscow
 +</code>
 +
 +Для работы сторонних приложений (например, мобильных) отредактируем файлы:
 +
 +^   **Файл**     **Содержимое**   ^
 +|/var/www/htdocs/zm/api/.htaccess  |  <code><IfModule mod_rewrite.c>
 +   RewriteEngine on
 +   RewriteRule ^$ app/webroot/ [L]
 +   RewriteRule (.*) app/webroot/$1 [L]
 +#   RewriteBase /zm/api
 +</IfModule></code>  |
 +|/var/www/htdocs/zm/api/app/.htaccess  |  <code><IfModule mod_rewrite.c>
 +    RewriteEngine on
 +    RewriteRule    ^$    webroot/    [L]
 +    RewriteRule    (.*) webroot/$1    [L]
 +#    RewriteBase /zm/api
 +</IfModule></code>  |
 +|/var/www/htdocs/zm/api/app/webroot/.htaccess  |  <code><IfModule mod_rewrite.c>
 +    RewriteEngine On
 +    RewriteCond %{REQUEST_FILENAME} !-d
 +    RewriteCond %{REQUEST_FILENAME} !-f
 +    RewriteRule ^ index.php [L]
 +#    RewriteBase /zm/api
 +</IfModule></code>  |
 +
 +Запускаем Apache.
 +
 +<code>
 +# chmod +x /etc/rc.d/rc.httpd
 +# /etc/rc.d/rc.httpd start
 +</code>
 +
 +Проверяем работоспособность API:
 +
 +**%%http://192.168.10.214/zm/api/%%** - должно быть все зеленым.\\
 +\\
 +{{:wiki:articles:zm-api.png?nolink&400|}}\\
 +\\
 +**%%http://192.168.10.214/zm/api/host/getVersion.json%%** — должны увидеть
 +<code>
 +{
 +    "version": "1.30.0",
 +    "apiversion": "1.0"
 +}
 +</code>
 +
 +И донастраиваем ZoneMinder в веб-интерфейсе по адресу: **%%http://192.168.10.214/zm%%**
 +
 +==== Версия - 1.35.4 ====
 +----
 +
 +   *//__**MySQL (MariaDB**__)//
 +
 +Так как //MySQL (MariaDB)// в Slackware Linux уже установлена, просто настроим ее и дадим пароль пользователю //root//
 +
 +<code>
 +# mkdir /var/lib/mysql/mysql
 +# mysql_install_db
 +# chown -R mysql.mysql /var/lib/mysql
 +# chmod +x /etc/rc.d/rc.mysqld
 +# /etc/rc.d/rc.mysqld start
 +# mysql -u root
 +   MariaDB [(none)]> set password for 'root'@'localhost' = password('mypassword');
 +   Query OK, 0 rows affected (0.00 sec)
 + 
 +   MariaDB [(none)]> FLUSH PRIVILEGES;
 +   Query OK, 0 rows affected (0.00 sec)
 +
 +   MariaDB [(none)]> \q
 +   Bye
 +</code>
 +
 +Войдем под пользователем //root//, создадим базу ZoneMinder, для работы с базой дадим соответствующие права пользователю //zmuser//.
 +<code>
 +# mysql -u root -p
 +   Enter password: 
 +   MariaDB [(none)]> source /usr/share/zoneminder/db/zm_create.sql;
 +   …
 +   Query OK, 1 row affected (0.00 sec)
 +   Query OK, 1 row affected (0.00 sec)
 +
 +   MariaDB [(none)]> use zm;
 +   
 +   Database changed
 +   MariaDB [zm]> 
 +
 +   MariaDB [zm]> grant all privileges on zm.* to 'zmuser'@localhost identified by 'zmpass';
 +   Query OK, 0 rows affected (0.00 sec)
 +
 +   MariaDB [zm]> FLUSH PRIVILEGES;
 +   Query OK, 0 rows affected (0.00 sec)
 +
 +   MariaDB [zm]> \q
 +   Bye
 +</code>
 +
 +  *//__**Apache**__//
 +
 +Редактируем ///etc/httpd/httpd.conf//.\\
 +Убираем знаки комментария со строк:
 +<code>
 +LoadModule cgid_module lib64/httpd/modules/mod_cgid.so
 +LoadModule cgi_module lib64/httpd/modules/mod_cgi.so
 +LoadModule rewrite_module lib64/httpd/modules/mod_rewrite.so
 +Include /etc/httpd/mod_php.conf
 +
 +# Дописываем
 +Include /etc/httpd/extra/zm_httpd.conf
 +</code>
 +
 +Создаем файл ///etc/httpd/extra/zm_httpd.conf// со содержимым:
 +<code=apache>
 +<VirtualHost *:80>
 +    ServerName video-server.mydom.lan
 +    ServerAlias 192.168.10.214
 +
 +    DocumentRoot /var/www/htdocs/zm
 +
 +    ScriptAlias /cgi-bin /var/www/cgi-bin
 +    <Directory /var/www/cgi-bin>
 +        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
 +        AllowOverride None
 +        Require all granted
 +    </Directory>
 +
 +    Alias /cache /var/www/htdocs/zm/cache
 +    <Directory /var/www/htdocs/zm/cache>
 +        Options -Indexes +FollowSymLinks
 +        AllowOverride None
 +        Require all granted
 +    </Directory>
 +
 +    <Directory /var/www/htdocs/zm>
 +        Options -Indexes +FollowSymLinks
 +        AllowOverride None
 +        Require all granted
 +        DirectoryIndex index.php
 +    </Directory>
 +        
 +    <Directory /var/www/htdocs/zm/api>
 +        RewriteEngine On
 +        RewriteRule ^$ app/webroot/ [L]
 +        RewriteRule (.*) app/webroot/$1 [L]
 +        RewriteBase /api
 +
 +    </Directory>
 +        <Directory /var/www/htdocs/zm/api/app>
 +        RewriteEngine On
 +        RewriteRule ^$ webroot/ [L]
 +        RewriteRule (.*) webroot/$1 [L]
 +        RewriteBase /api
 +    </Directory>
 +
 +    <Directory /var/www/htdocs/zm/api/app/webroot>
 +        RewriteEngine On
 +        RewriteCond %{REQUEST_FILENAME} !-d
 +        RewriteCond %{REQUEST_FILENAME} !-f
 +        RewriteRule ^ index.php [L]
 +        RewriteBase /api
 +    </Directory>
 +        
 +    ErrorLog "/var/log/zm/zm_error_log"
 +    CustomLog "/var/log/zm/zm_access_log" common
 +    
 +</VirtualHost>
 +</code>
 +
 +Запускаем Apache и ZM.
 +
 +<code>
 +# chmod +x /etc/rc.d/rc.httpd
 +# /etc/rc.d/rc.httpd start
 +# /etc/rc.d/rc.zm start
 +</code>
 +
 +Проверяем работоспособность API:
 +
 +**%%http://192.168.10.214/api/host/getVersion.json%%** — должны увидеть
 +<code>
 +{"version":"1.35.4","apiversion":"2.0"}
 +</code>
 +
 +И донастраиваем ZoneMinder в веб-интерфейсе по адресу: **%%http://192.168.10.214%%**
 +
 +===== Обновление =====
 +==== Версия - 1.30.0 ====
 +
 +Если есть старый рабочий  ZM сервер , допустим 1.28.1 , то  перед обновлением нужно сделать полную копию его базы:
 +<code>
 +# mysqldump -u root -p zm > zm-all-1281.sql
 +</code>
 +Полученный файл перенести на вновь установленную Slackware Linux 14.2 и ZM-1.30.0 по данной статье. Остановить ZM и апач:
 +<code>
 +# /etc/rc.d/rc.zm stop
 +# /etc/rc.d/rc.httpd stop
 +</code>
 +Cкопировать кадры записей из ///var/www/htdocs/zm/events//
 +<note important>
 +Если обновление делается на той же машине, то  после полной копии  базы, соблюдая версию Slackware Linux, обновить все необходимые пакеты - ffmpeg, vlc и весь список в sbopkg, собрать и обновить ZM. 
 +</note>
 +"Подсунуть" данный файл  мускулу:
 +<code>
 +# mysql -u root -p zm < /путь/до/файла/zm-all-1281.sql
 +</code>
 + или
 +<code>
 +# mysql -u root -p
 +   MariaDB [(none)]> use zm;
 +   MariaDB [zm]> source /путь/до/файла/zm-all-1281.sql;
 +   MariaDB [zm]> \q
 +</code>
 +и обновить базу
 +<code>
 +# zmupdate.pl
 +</code>
 +ответить на вопросы и получить базу равную 1.30.0
 +
 +Запустить апач, ZM и проверить работоспособность.
 +<code>
 +# /etc/rc.d/rc.httpd start
 +# /etc/rc.d/rc.zm start
 +</code>
 +
 +==== Версии - 1.35.* ====
 +----
 +
 +Аналогично [[wiki:articles:zm#versija_-_13002|Версии - 1.30.0]]
 +
 +
 +===== Русификация =====
 +==== Версия - 1.30.* ====
 +
 +<note warning> После русификации опций и помощи по ним, параметр Система->AUTH_HASH_SECRET будет перезаписан! Необходимо ввести его заново. </note>
 +
 +Архив [[http://slackware.su/forum/files/zm/zm_ru_ru_utf8-1.30.0.tar.gz|zm_ru_ru_utf8-1.30.0.tar.gz]] содержит 4 файла: **database.php**, **ru_ru.php**, **ru_ru_utf8.sql** и **functions.php**.\\
 +Необходимо:\\
 +1. заменить файл **database.php** и **functions.php** в //zm/includes//.\\
 +Или внести изменения в ручную в **database.php**, поменяв строку (в ZM-1.30.0 46-ю) с 
 +  $dbConn = new PDO( ZM_DB_TYPE . $socket . ';dbname='.ZM_DB_NAME, ZM_DB_USER, ZM_DB_PASS );
 +на
 +  $dbConn = new PDO( ZM_DB_TYPE . $socket . ';dbname='.ZM_DB_NAME, ZM_DB_USER, ZM_DB_PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8") );
 +
 +Файл **functions.php** не влияет на русификацию, но в нем исправлена ошибка постоянно появляющаяся в логах -  //**disk_total_space returned false for events**//.
 +
 +2. заменить файл **ru_ru.php** в //zm/lang//;\\
 +3. "Скормить" MySQL **ru_ru_utf8.sql**
 +<code>
 +# mysql -u root -p zm < где/оно/лежит/ru_ru_utf8.sql
 +</code>
 +
 +Всё, ZoneMinder русифицирован процентов на 90 :)\\
 +Перевод выполнен мной единолично, поэтому весьма вероятны не точности и ошибки. Пишите на форуме в [[http://slackware.su/forum/index.php/topic,2741.0.html | специальной ветке]] обсуждения данной статьи, постараюсь своевременно их исправлять.
 +
 +{{:wiki:articles:zm-rus.png?nolink&900|}}
 +
 +==== Версия - 1.35.* ====
 +----
 +
 +Архив [[http://slackware.su/forum/files/zm/ru-ru-php_1.35.tar|ru-ru-php_1.35.tar]] содержит 1 файл - ru_ru.php, в котором перевод интерфейса, описание параметров и помощи по ним.\\
 +
 +Заменяем файл **ru_ru.php** в //zm/lang// файлом из архива, не забыв сделать копию оригинала.\\
 +
 +Всё, ZoneMinder русифицирован процентов на 95 :)\\
 +Перевод опций и помощи по ним, выполнен мной единолично, поэтому весьма вероятны не точности и ошибки. Пишите на форуме в [[http://slackware.su/forum/index.php/topic,2741.0.html | специальной ветке]] обсуждения данной статьи, постараюсь своевременно их исправлять.
 +
 +{{:wiki:articles:zm-1354-1.png?nolink&1000|}}
 +
 +
 +
 +
 +===== Фильтры, zmNinja и прочее =====
 +
 +==== Применение фильтров ====
 +
 +Опишу работу с фильтрами на основе 2 примеров:
 +
 +__//**1. отправка сообщений по e-mail.**//__\\
 +Заходим в "Параметры" -> "Email" и настраиваем под себя (пример на картинке), сохраняем;
 +{{ :wiki:articles:zm130-email1.png?nolink&1000 |}}
 +заходим в "Фильтры" и настраиваем под себя (пример на картинке), сохраняем;
 +{{ :wiki:articles:zm130-email2.png?nolink&600 |}}
 +вводим название фильтра, помечаем его на работу в фоне и сохраняем (пример на картинке).
 +{{ :wiki:articles:zm130-email3.png?nolink&600 |}}
 +__//**2. удаление записей старше 7 дней.**//__\\ 
 +Заходим в "Фильтры" и настраиваем под себя (пример на картинке). Для добавления новой строки с условием (и/или) нужно нажать на знак "+". Сохраняем;
 +{{ :wiki:articles:zm130-del1.png?nolink&600 |}}
 +вводим название фильтра, помечаем его на работу в фоне и сохраняем (пример на картинке).
 +{{ :wiki:articles:zm130-del2.png?nolink&600 |}}
 +
 +==== zmNinja ====
 +
 +Как говорят на [[http://pliablepixels.github.io/ | официальном сайте]], //zmNinja// является потрясающим приложением для домашней безопасности, которое работает с //ZoneMinder//. //zmNinja// не поддерживается большой корпорацией. Это всего лишь один чувак, занимающийся им с 22:00 до 02:00. \\
 +Это приложение для просмотра и настройки камер на //ZoneMinder//. Есть мобильная (платная) версия и бесплатная для работы на компьютере. Бинарники и исходники можно скачать [[https://github.com/pliablepixels/zmNinja/releases | ТУТ]].\\
 +Про самостоятельную сборку //zmNinja// из исходников написано [[https://github.com/pliablepixels/zmNinja/wiki/Running-zmNinja-from-Source | ТУТ]].\\
 +Для того, чтобы в //zmNinja// отображались камеры нужно в //ZoneMinder// разрешить использование //API//.
 +\\
 +{{ :wiki:articles:zm130-api1.png?nolink&800 |}}
 +\\
 +Если планируется только смотреть, а не управлять, то у пользователя должны быть права на просмотр монитора и поток.
 +\\
 +{{ :wiki:articles:zm130-api2.png?nolink&400 |}}
 +\\
 +
 +==== Cambozola ====
 +
 +**Cambozola** — это ароматизированный обезжиренный сыр, удобный Java-апплет для //ZoneMinder//, который используется для просмотра потока изображений в браузерах, таких как //Internet Explorer//, которые изначально не корректно работают с данным форматом. Рекомендуется установить данный апплет, во избежания проблем при просмотре потока в IE. Однако, если он не установлен, то изображения можно просматривать при более низкой скорости обновления. \\
 +
 +Для сборки данного апплета необходим //JDK// и //ant//.\\
 +Собираем JDK. Переходим на [[http://www.oracle.com/technetwork/java/javase/downloads/index.html | сайт Oracle]] выбираем загрузку JDK, соглашаемся с лицензией и скачиваем архив для нашей платформы.\\
 +В моем случае, на сегодня — это //jdk-8u102-linux-x64.tar.gz//\\
 +Скопируем этот файл в /tmp/jdk/ и запустим //java.SlackBuild// с загрузочного DVD Slackware64 из extra/java или после распаковки файла [[http://slackware.su/forum/files/openmeet/java.tar.gz | java.tar.gz]]
 +<code>
 +# ./java.SlackBuild /tmp/jdk/jdk-8u102-linux-x64.tar.gz
 +...
 +Slackware package /tmp/jdk-8u102-x86_64-1.txz created.
 +</code>
 +Установим пакет
 +<code>
 +# upgradepkg --install-new /tmp/jdk-8u102-x86_64-1.txz
 +...
 +Package jdk-8u102-x86_64-1.txz installed.
 +</code>
 +После установки //JDK//, лучше повторно войти в систему или перезагрузиться.
 +\\
 +\\
 +Далее собираем и устанавливаем //ant// при помощи //sbopkg//.
 +<code>
 +# sbopkg -Bi apache-ant
 +</code>
 +
 +Скачиваем с официального сайта [[http://www.andywilcock.com/code/cambozola/cambozola-latest.tar.gz | cambozola-latest.tar.gz]], распаковываем, переходим в каталог (на сегодня это //cambozola-0.936//) и запускаем //ant//:
 +<code>
 +# cd cambozola-0.936
 +# ant
 +</code>
 +В каталоге //cambozola-0.936/dist/// получаем 3 файла: **cambozola.jar**, **cambozola-unsigned.jar**, **cambozola-server.jar**\\
 +Копируем файл //cambozola.jar// в каталог с установленным //ZoneMinder//, по статье это ///var/www/htdocs/zm//.
 +<code>
 +# cp cambozola-0.936/dist/cambozola.jar /var/www/htdocs/zm/
 +</code>
 +И разрешаем использование данного апплета в "Параметры" -> "Изображения"
 +{{ :wiki:articles:zm130-cambozolla.png?nolink&1000 |}}
 +
 +==== Заметки по работе с видео ====
 +
 +__//**1. Сглаживание видео**//__\\
 +\\
 +Если у вас идет вещание и запись с не большой скоростью, допустим, 6 к/с, то передав некоторые параметры ffmpeg, можно получить на выходе видео файл (например, avi) несколько сглаженным, без рывков. Для этого заходим "Параметры" -> "Изображения" и прописываем входные и выходные параметры для ffmpeg\\
 +\\
 +{{ :wiki:articles:zm130-ffmpeg.png?nolink&1000 |}}
 +\\
 +Большинство параметров ffmpeg на русском, хорошо описаны [[http://shurshun.ru/ffmpeg-bazovyie-komandyi/ | ТУТ]].
 +
 +Правда, в таком случае, при генерации видео прямо из ZoneMinder, выбранные параметры в окне генерации не повлияют на создаваемый видео файл. Обратите внимание на картинку, размер видео файла в реальном времени и увеличенном на 50, одинаков. Т.е. в любом случае видео получается со скоростью 25 к/с, которая задана в FFMPEG_OUTPUT_OPTIONS (ключ -r 25).\\
 +\\
 +{{ :wiki:articles:zm130-ffmpeg-1.png?nolink&450 |}}
 +\\
 +__//**2. Особенности настройки мониторов**//__\\
 +\\
 +Я покажу настройку мониторов для 2 типов подключений, //ffmpeg// и //удаленный//.\\
 +
 +^   **FFMPEG (RTSP)**   ^^
 +| {{:wiki:articles:zm130-monitor2.png?nolink&400 |}} | {{:wiki:articles:zm130-monitor2-1.png?nolink&400 |}} |
 +^   **Удаленный (RTSP)**   ^^
 +|{{ :wiki:articles:zm130-monitor1.png?nolink&400 |}}|{{ :wiki:articles:zm130-monitor1-2.png?nolink&400 |}}|
 +^   **Удаленный (HTTP)**   ^^
 +|{{ :wiki:articles:zm130-monitor1.png?nolink&400 |}}|{{ :wiki:articles:zm130-monitor1-3.png?nolink&400 |}}|
 +\\
 +__//**3. В большинстве браузеров не показывается одновременно более 5-6 камер**//__\\
 +\\
 +При клике на "Общий вид" {{:wiki:articles:zm-4.png?250|}} показывается 5-6 камер, на местах остальных, лишь пустые квадраты.
 +При этом //Chromium/Chrome// показывает в строке сообщений //"Ожидание свободного сокета..."//. Решается путем правки DNS и указания //ZoneMinder//, якобы, дополнительных серверов. (Спасибо [[https://geektimes.ru/users/hokum13/ | hokum13]]).
 +Проверялось на браузерах //Chromium/Chrome/Firefox/SeaMonkey/встроенный в WebOS на телевизоре.// У тех, кто пользуется приложением //zmNinja// или браузером //Safari//, такой проблемы нет.
 +
 +Если к серверу //ZoneMinder//, кроме локальных пользователей, подключаются еще и удалённые, то править лучше свои глобальные DNS записи, т.е. у хостеров, провайдеров, регистраторов и т.д., там где у вас есть права на изменения записей в DNS. Если сервер //ZoneMinder// только для нужд локалки, то соответственно, править локальный DNS или файл ///etc/hosts// и на сервере, и на каждом подключаемом компьютере.
 +
 +В моем случае к серверу //ZoneMinder// есть доступ удалённым пользователям по URL, допустим, //vm.mydom.ru//. Для решения нашей проблемы нужно создать количество CNAME записей равных //количеству камер/5//. Допустим, у меня их 12 штук, значить я создам 3 CNAME записи (округлил до 15, разделил на 5, получил 3). (Пример для bind)
 +<code>
 +...
 +...
 +vm      IN      A       22.33.44.55
 +vm1     IN      CNAME   vm
 +vm2     IN      CNAME   vm
 +vm3     IN      CNAME   vm
 +...
 +...
 +</code>
 +Всё, записи обновятся не сразу, надо подождать. Настраиваем ZoneMinder. Переходим в "Параметры->Серверы" и добавляем наши "сервера".\\
 +\\
 +{{:wiki:articles:zm-1.png?500|}}
 +\\
 +
 +Теперь проходим по каждому монитору и выбираем по каждому свой сервер, на 5 мониторов один.\\
 +\\
 +{{:wiki:articles:zm-2.png?500|}}
 +\\
 +
 +В итоге получаем:\\
 +\\
 +{{:wiki:articles:zm-3.png?250|}}
 +\\
 +
 +Теперь показывают все камеры.\\
 +\\
 +__//**4. Перезагрузка камер**//__\\
 +\\
 +Иногда картинка зависает или вообще нет изображения. Помогает открытие свойства камеры и клик по кнопке "сохранить", по сути, тот же рестарт. Можно создать скрипт и поместить в крон. Пример для монитора №28.
 +<code>
 +/usr/bin/zmdc.pl restart zmc -m 28
 +</code>
 +
 +
 +----
 +Создано по мотивам ветки [[http://slackware.su/forum/index.php/topic,152.0.html | Форума]]\\
 +Обсуждаем на [[http://slackware.su/forum/index.php/topic,2741.0.html | форуме]]
  
Навигация
Печать/экспорт
QR Code
QR Code wiki:articles:zm (generated for current page)