Zoneminder: различия между версиями
Нет описания правки |
(→Настройка Zoneminder: restart mysqld не нужен, изменения к базе применяются сразу.) |
||
(не показаны 32 промежуточные версии 4 участников) | |||
Строка 1: | Строка 1: | ||
'''ZoneMinder''' — свободное программное обеспечение, для организации видеонаблюдения. | |||
Обсуждение на форуме http://forum.altlinux.org/index.php/topic,22677.0.html. | В данной статье описано развёртыванию Zoneminder в ALT Linux. | ||
Обсуждение на форуме: http://forum.altlinux.org/index.php/topic,22677.0.html. | |||
== Общая информация == | == Общая информация == | ||
В статье описана работа Zoneminder вместе с Nginx. | |||
В статье описана работа Zoneminder вместе с | |||
== Установка Zoneminder == | == Установка Zoneminder == | ||
<source lang="Bash"># apt-get install zoneminder nginx spawn-fcgi php8.1-fpm-fcgi fcgiwrap</source> | |||
[[Файл:Zoneminder-install-1.png]] | |||
== Настройка Zoneminder == | |||
===Настройка БД=== | |||
1. Устанавливаем Mysql: | |||
<source lang="Bash"> | |||
$ su - | |||
# apt-get install MySQL-server | |||
# service mysqld enable | |||
# service mysqld start | |||
</source> | |||
[[Файл:Zoneminder-install-2.png]] | |||
[[Файл:Zoneminder-install-3.png]] | |||
3. Создаем пользователя | |||
''' | Где {{cmd|zmuser}} - имя пользователя, а {{cmd|zmpass}} - пароль. | ||
<source lang="Bash"> | |||
# mysql | |||
> CREATE USER 'zmuser'@localhost IDENTIFIED BY 'zmpass'; | |||
</source> | |||
[[Файл:Zoneminder-install-5.png]] | |||
[[Файл:Zoneminder-install6.png]] | |||
'''4.''' Создание базы данных MySQL | |||
<source lang="Bash">su - | <source lang="Bash">su - | ||
mysql | mysql | ||
mysql> create database zm; | mysql> create database zm; | ||
mysql> | mysql> use zm; | ||
mysql> source /usr/share/zoneminder/db/zm_create.sql; | mysql> source /usr/share/zoneminder/db/zm_create.sql; | ||
mysql> grant select,insert,update,delete on zm.* to 'zmuser'@localhost | mysql> grant select,insert,update,delete on zm.* to 'zmuser'@localhost; | ||
mysql> exit; | mysql> exit; | ||
</source> | |||
5. Настраиваем БД | |||
[[Файл:Zoneminder-install7.png]][[Файл:Zoneminder-install8.png]] | |||
Открываем через редактор /etc/zm/zm.conf и меняем параметры: | |||
<source lang="Bash"> | |||
ZM_DB_HOST=localhost | |||
ZM_DB_NAME=zm | |||
ZM_DB_USER=zmuser | |||
ZM_DB_PASS=zmpass | |||
</source> | |||
Включаем службу: | |||
[[Файл:Zoneminder-install9.png]] | |||
<source lang="Bash"> | |||
systemctl enable --now zoneminder | |||
</source> | |||
---- | |||
===Настройка веб-сервера=== | |||
'''1.''' Редактируем файлы | |||
<source lang="Bash"> | |||
# mcedit /etc/sysconfig/spawn-fcgi | |||
</source> | |||
Меняем значения: | |||
<source lang="Bash">- USERID=_spawn_fcgi | <source lang="Bash">- USERID=_spawn_fcgi | ||
+ USERID=apache</source> | + USERID=apache</source> | ||
/etc/sysconfig/spawn-fcgi | [[Файл:Zoneminder-install10.png]][[Файл:Zoneminder-install11.png]] | ||
<source lang="Bash"> | |||
# mcedit /etc/sysconfig/spawn-fcgi | |||
</source> | |||
Меняем значения: | |||
<source lang="Bash">- FCGIPROGRAM="/usr/bin/fcgiwrap" | <source lang="Bash">- FCGIPROGRAM="/usr/bin/fcgiwrap" | ||
+ FCGIPROGRAM="/usr/sbin/fcgiwrap"</source> | + FCGIPROGRAM="/usr/sbin/fcgiwrap"</source> | ||
/etc/nginx/nginx.conf<source lang="Bash">- fastcgi_temp_path /var/spool/nginx/tmp/fastcgi | |||
[[Файл:Zoneminder-install12.png]] | |||
<source lang="Bash"> | |||
# mcedit /etc/nginx/nginx.conf | |||
</source> | |||
[[Файл:Zoneminder-install13.png]] [[Файл:Zoneminder-install14.png]] | |||
Меняем значения: | |||
<source lang="Bash">- fastcgi_temp_path /var/spool/nginx/tmp/fastcgi | |||
+ #fastcgi_temp_path /var/spool/nginx/tmp/fastcgi</source> | + #fastcgi_temp_path /var/spool/nginx/tmp/fastcgi</source> | ||
/etc/ | |||
<!-- этого файла нет | |||
/etc/fpm8.1/php-fpm.conf | |||
<source lang="Bash">- user = _php_fpm | <source lang="Bash">- user = _php_fpm | ||
+ user = apache</source> | + user = apache</source> | ||
4. Создать файлы | --> | ||
<source lang="Bash"> | |||
'''4.''' Создать файлы | |||
<source lang="Bash"> | |||
touch /etc/nginx/sites-enabled.d/zoneminder.conf | |||
mcedit /etc/nginx/sites-enabled.d/zoneminder.conf | |||
</source> | |||
[[Файл:Zoneminder-install15.png]] [[Файл:Zoneminder-install16.png]] | |||
<source lang="Bash"> | |||
server { | server { | ||
listen 127.0.0.1:443; | listen 127.0.0.1:443; | ||
Строка 99: | Строка 168: | ||
} | } | ||
</source> | </source> | ||
[[Файл:Zoneminder-install17.png]] [[Файл:Zoneminder-install18.png]] | |||
<source lang="Bash"> | |||
touch /etc/nginx/sites-enabled.d/zm-fcgi.inc | |||
mcedit /etc/nginx/sites-enabled.d/zm-fcgi.inc | |||
</source> | |||
<source lang="Bash"> | |||
fastcgi_param SERVER_NAME $hostname; | fastcgi_param SERVER_NAME $hostname; | ||
fastcgi_pass unix:/var/run/ | fastcgi_pass unix:/var/run/php8.1-fpm/php8.1-fpm.sock; | ||
fastcgi_index index.php; | fastcgi_index index.php; | ||
fastcgi_ignore_headers Cache-Control Expires Set-Cookie; | fastcgi_ignore_headers Cache-Control Expires Set-Cookie; | ||
Строка 117: | Строка 193: | ||
fastcgi_param HTTPS off;</source> | fastcgi_param HTTPS off;</source> | ||
5. Добавить пользователя apache в группу video | '''5.''' Добавить пользователя apache в группу video | ||
[[Файл:Zoneminder-install19.png]] | |||
<source lang="Bash">usermod -a -G video apache</source> | <source lang="Bash">usermod -a -G video apache</source> | ||
6. | '''6.''' Добавить сервисы в автозагрузку | ||
<source lang="Bash"> | |||
[[Файл:Zoneminder-install20.png]] | |||
<source lang="Bash"> | |||
systemctl enable --now mysqld | |||
systemctl enable --now nginx | |||
systemctl enable --now zoneminder | |||
systemctl enable --now spawn-fcgi | |||
systemctl enable --now php8.1-fpm | |||
</source> | |||
== Запуск Zoneminder == | |||
Чтобы запустить Zoneminder откройте браузер и перейдите по адресу http://localhost/ | |||
[[Файл:Zoneminder-install22.png]] | |||
===Смена языка=== | |||
[[Файл:Zoneminder-install23.png]] | |||
Чтобы поменять язык сделайте следующее: | |||
*Options | |||
*System | |||
*LANG_DEFAULT | |||
*ru_ru | |||
== Решение проблем == | == Решение проблем == | ||
{{Note| Возможно, данные решения устарели}} | |||
'''1.''' Ошибка в /var/log/messages | |||
<code>Jun 11 17:13:55 comp-core2-duo-d82748 zms[6530]: FAT [Can't open memory map file /dev/shm/zm.mmap.26, probably not enough space free: Permission denied]</code> | |||
'''Решение.''' Проверить от имени какого пользователя запущен сервис | |||
<source lang="Bash">ps aux|egrep '(apache|zm|php-fpm|fcgiwrap)'</source> | |||
должен быть везде apache, при необходимости поправить конфиги: spawn-fcgi, php5-fpm.conf и zm.conf. | |||
'''PS.''' Вообще на любые сообщения с Permission denied лучше сразу смотреть от имени какого пользователя запущен сервис. | |||
'''2.''' Ошибка при запуске nginx | |||
<code>Checking configuration sanity for nginx: nginx: [emerg] the same path name "/var/spool/nginx/tmp/fastcgi" in /etc/nginx/nginx.conf:15 has the different levels than in /etc/nginx/sites-enabled.d/zm-fcgi.inc:6</code> | |||
'''Решение.''' Закомментировать в файле /etc/nginx/nginx.conf<source lang="Bash">#fastcgi_temp_path /var/spool/nginx/tmp/fastcgi;</source> | |||
'''3.''' Повторяющееся предупреждение в /var/log/nginx/error.log | |||
<code>PHP message: PHP Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Yekaterinburg' for 'YEKT/6.0/no DST' instead in /usr/share/zoneminder/www/includes/functions.php on line 1440 | |||
PHP message: PHP Warning: strtotime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Yekaterinburg' for 'YEKT/6.0/no DST' instead in /usr/share/zoneminder/www/includes/functions.php on line 1440</code> | |||
'''Решение.''' Прописать в конфиге php в /etc/php/5.5/fpm/php.ini таймзону в секции [Date] | |||
<code>date.timezone = Asia/Yekaterinburg</code> | |||
== Ссылки == | == Ссылки == | ||
Строка 137: | Строка 260: | ||
#http://www.lissyara.su/articles/freebsd/programms/zoneminder_2/ | #http://www.lissyara.su/articles/freebsd/programms/zoneminder_2/ | ||
#http://wiki.rsu.edu.ru/wiki/ZoneMinder | #http://wiki.rsu.edu.ru/wiki/ZoneMinder | ||
[[Категория:Documentation]] | [[Категория:Documentation]] | ||
{{Category navigation|title=Документация|category=Documentation|sortkey={{SUBPAGENAME}}}} |
Текущая версия от 11:53, 22 сентября 2024
ZoneMinder — свободное программное обеспечение, для организации видеонаблюдения.
В данной статье описано развёртыванию Zoneminder в ALT Linux.
Обсуждение на форуме: http://forum.altlinux.org/index.php/topic,22677.0.html.
Общая информация
В статье описана работа Zoneminder вместе с Nginx.
Установка Zoneminder
# apt-get install zoneminder nginx spawn-fcgi php8.1-fpm-fcgi fcgiwrap
Настройка Zoneminder
Настройка БД
1. Устанавливаем Mysql:
$ su -
# apt-get install MySQL-server
# service mysqld enable
# service mysqld start
3. Создаем пользователя
Где zmuser - имя пользователя, а zmpass - пароль.
# mysql
> CREATE USER 'zmuser'@localhost IDENTIFIED BY 'zmpass';
4. Создание базы данных MySQL
su -
mysql
mysql> create database zm;
mysql> use zm;
mysql> source /usr/share/zoneminder/db/zm_create.sql;
mysql> grant select,insert,update,delete on zm.* to 'zmuser'@localhost;
mysql> exit;
5. Настраиваем БД
Открываем через редактор /etc/zm/zm.conf и меняем параметры:
ZM_DB_HOST=localhost
ZM_DB_NAME=zm
ZM_DB_USER=zmuser
ZM_DB_PASS=zmpass
Включаем службу:
systemctl enable --now zoneminder
Настройка веб-сервера
1. Редактируем файлы
# mcedit /etc/sysconfig/spawn-fcgi
Меняем значения:
- USERID=_spawn_fcgi
+ USERID=apache
# mcedit /etc/sysconfig/spawn-fcgi
Меняем значения:
- FCGIPROGRAM="/usr/bin/fcgiwrap"
+ FCGIPROGRAM="/usr/sbin/fcgiwrap"
# mcedit /etc/nginx/nginx.conf
Меняем значения:
- fastcgi_temp_path /var/spool/nginx/tmp/fastcgi
+ #fastcgi_temp_path /var/spool/nginx/tmp/fastcgi
4. Создать файлы
touch /etc/nginx/sites-enabled.d/zoneminder.conf
mcedit /etc/nginx/sites-enabled.d/zoneminder.conf
server {
listen 127.0.0.1:443;
rewrite ^/(.*)$ http://$host/$1 permanent;
}
server {
listen 80;
types_hash_bucket_size 128;
allow all;
location / {
root /usr/share/zoneminder/www;
rewrite ^/zm/(.*) /$1 break;
index index.php;
}
location /cgi-bin/zm {
root /usr/lib/zoneminder/cgi-bin;
autoindex on;
index index.cgi;
}
location ~ nph-zms$ {
root /usr/lib/zoneminder/cgi-bin;
rewrite ^/cgi-bin/zm/(.*) /$1 break;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/spawn-fcgi/spw-cgi.sock;
fastcgi_param SCRIPT_FILENAME /usr/lib/zoneminder/cgi-bin/$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
location ~ \.php$ {
root /usr/share/zoneminder/www;
rewrite ^/zm/(.*) /$1 break;
include fastcgi_params;
include sites-enabled.d/zm-fcgi.inc;
fastcgi_param SCRIPT_FILENAME /usr/share/zoneminder/www/$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT /usr/share/zoneminder/www;
}
access_log /var/log/nginx/access.log;
}
touch /etc/nginx/sites-enabled.d/zm-fcgi.inc
mcedit /etc/nginx/sites-enabled.d/zm-fcgi.inc
fastcgi_param SERVER_NAME $hostname;
fastcgi_pass unix:/var/run/php8.1-fpm/php8.1-fpm.sock;
fastcgi_index index.php;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
fastcgi_cache_key "$host$request_method$request_uri$is_args$args|$cookie_phpsessid";
fastcgi_temp_path /var/spool/nginx/tmp/fastcgi 1 2;
fastcgi_cache_use_stale updating error timeout invalid_header http_500;
fastcgi_cache_valid 200 301 302 304 5m;
fastcgi_connect_timeout 180;
fastcgi_send_timeout 180;
fastcgi_read_timeout 250;
fastcgi_cache_bypass $cookie_phpsessid;
fastcgi_no_cache $cookie_phpsessid;
fastcgi_intercept_errors on;
fastcgi_param HTTPS off;
5. Добавить пользователя apache в группу video
usermod -a -G video apache
6. Добавить сервисы в автозагрузку
systemctl enable --now mysqld
systemctl enable --now nginx
systemctl enable --now zoneminder
systemctl enable --now spawn-fcgi
systemctl enable --now php8.1-fpm
Запуск Zoneminder
Чтобы запустить Zoneminder откройте браузер и перейдите по адресу http://localhost/
Смена языка
Чтобы поменять язык сделайте следующее:
- Options
- System
- LANG_DEFAULT
- ru_ru
Решение проблем
1. Ошибка в /var/log/messages
Jun 11 17:13:55 comp-core2-duo-d82748 zms[6530]: FAT [Can't open memory map file /dev/shm/zm.mmap.26, probably not enough space free: Permission denied]
Решение. Проверить от имени какого пользователя запущен сервис
ps aux|egrep '(apache|zm|php-fpm|fcgiwrap)'
должен быть везде apache, при необходимости поправить конфиги: spawn-fcgi, php5-fpm.conf и zm.conf.
PS. Вообще на любые сообщения с Permission denied лучше сразу смотреть от имени какого пользователя запущен сервис.
2. Ошибка при запуске nginx
Checking configuration sanity for nginx: nginx: [emerg] the same path name "/var/spool/nginx/tmp/fastcgi" in /etc/nginx/nginx.conf:15 has the different levels than in /etc/nginx/sites-enabled.d/zm-fcgi.inc:6
Решение. Закомментировать в файле /etc/nginx/nginx.conf
#fastcgi_temp_path /var/spool/nginx/tmp/fastcgi;
3. Повторяющееся предупреждение в /var/log/nginx/error.log
PHP message: PHP Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Yekaterinburg' for 'YEKT/6.0/no DST' instead in /usr/share/zoneminder/www/includes/functions.php on line 1440
PHP message: PHP Warning: strtotime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Yekaterinburg' for 'YEKT/6.0/no DST' instead in /usr/share/zoneminder/www/includes/functions.php on line 1440
Решение. Прописать в конфиге php в /etc/php/5.5/fpm/php.ini таймзону в секции [Date]
date.timezone = Asia/Yekaterinburg