Zoneminder 1.32 на FreeBSD 12 установка и настройка

Версия: 1, ист. zoneminder-freebsd-installation-1-02.pdf
05/05/2020

Список используемых портов(пакетов):

  • zoneminder
  • nginx
  • mysql80-server: 8.0.20
  • php72-pdo_mysql
  • php72-gd
  • fcgiwrap
  • php72-session

1. Из портов ставил:

root@freebsd-1:~ # cd /usr/ports/multimedia/zoneminder
root@freebsd-1:~ # make install clean BATCH=yes
В моем случае из портов у меня ставилось(2ядра на процессоре 1.1ггц) более 6 часов, если нужно быстрее — ставьте пакетами: см. п.3

2. Остальные принадлежности ставим аналогично:

  • nginx
  • mysql57-server
  • php72-pdo_mysql
  • php72-gd
  • fcgiwrap
  • php72-session
3. FEMP Installation with pkg and configuration

3.1. Installation with pkg (skip if you used item 1 и 2 – Install zoneminder with pkg)
root@freebsd-1:~ # pkg install zoneminder nginx mysql57-server php72-pdo_mysql php72-gd fcgiwrap php72-session
3.2. Enable all new services

root@freebsd-1:~ # sysrc mysql_server_enable=»YES»
mysql_server_enable: -> YES
root@freebsd-1:~ # sysrc fcgiwrap_enable=»YES»
fcgiwrap_enable: -> YES
root@freebsd-1:~ # sysrc zoneminder_enable=»YES»
zoneminder_enable: -> YES
root@freebsd-1:~ # sysrc mysql_enable=»YES»
mysql_enable: -> YES
root@freebsd-1:~ # sysrc nginx_enable=»YES»
nginx_enable: -> YES
root@freebsd-1:~ # sysrc php_fpm_enable=»YES»
php_fpm_enable: -> YES

3.4. Check rc.conf

root@freebsd-1:~ # less /etc/rc.conf

hostname=»freebsd-1″
ifconfig_em0=»DHCP»
sshd_enable=»YES»
# Set dumpdev to «AUTO» to enable crash dumps, «NO» to disable dumpdev=»AUTO»
webmin_enable=YES
mysql_server_enable=»YES»
fcgiwrap_enable=»YES»
zoneminder_enable=»YES»
mysql_enable=»YES»
nginx_enable=»YES»
php_fpm_enable=»YES»
root@freebsd-1:~
4. Configure php

4.1. Edit php-fpm.conf

root@freebsd-1:~ # mcedit /usr/local/etc/php-fpm.d/www.conf
• Find the line: listen = 127.0.0.1:9000
• Replace with: listen = /var/run/php-fpm.sock
Will look like this:


• Two sessions below you will find the permission for unix socket, uncomment the three lines below:
listen.owner = www
listen.group = www
listen.mode = 0660

Will look like this:•

Uncomment env[PATH] = /usr/local/bin:/usr/bin:/bin
Will look like this:

• Save and close the file

5. Create php.ini

5.1. Copy the sample production file
root@freebsd-1:/ # cd /usr/local/etc
root@freebsd-1:/usr/local/etc # cp php.ini-production php.ini
5.2. Edit the file and set cgi.fix_pathinfo=0
root@freebsd-1:/ # mcedit php.ini

Will look like this:

5.3. Set your date time zone
◦ Uncomment date.timezone and type your time zone within single quotes (‘).
Notes: Check your time zone here: http://php.net/manual/en/timezones.php
I’m in EST, so will set to ‘Europe/Samara’ and will look like this:

• Save the file

5.4. Start php
root@freebsd-1:/usr/local/etc # service php-fpm start

6. Настройка MySQL

6.1. Запустить службу:

# service mysql-server start

6.2. Запустить мастера-настройщика

# mysql_secure_installation

Starting mysql.
root@freebsd-1:~ #
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we’ll need the current
password for the root user. If you’ve just installed MySQL, and
you haven’t set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
• Press ENTER and set your new password
Output: (Instructions in RED below)
Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
… Success!
By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
• Press ENTER on all following prompts (Instructions in RED below)
Remove anonymous users? [Y/n]Y
… Success!
Normally, root should only be allowed to connect from ‘localhost’. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n]Y
… Success!
By default, MySQL comes with a database named ‘test’ that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n]N
— Dropping test database…
… Success!
— Removing privileges on test database…
… Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n]Y
… Success!
All done! If you’ve completed all of the above steps, your MySQL
installation should now be secure.
Thanks for using MySQL!
Cleaning up…6.3. Restart MySQL

Перезапустить службу:

# service mysql-server restart

7. Настройка nginx

7.1 Запуск nginx
# service nginx start

7.2. Создать nginx.conf:
# mcedit /usr/local/etc/nginx/nginx.conf/nginx.conf

Вставить в него пример конфигурации:

user  www;
worker_processes  1;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
pid        /var/run/nginx.pid;
events {
  worker_connections  1024;  ## Default: 1024
}
http {
      include mime.types;
      default_type  application/octet-stream;
      log_format  main  '$remote_addr - $remote_user [$time_local] 
"$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';
      sendfile on;
      tcp_nopush on;
      tcp_nodelay on;
      keepalive_timeout  65;
      server_tokens off;
      gzip  on;
      gzip_buffers 64 8k;
      gzip_http_version 1.1;
      gzip_proxied any;
      gzip_types text/plain application/xml application/x-javascript 
text/css;
server {
        root /usr/local/www/zoneminder;
        try_files $uri $uri/ /index.php$is_args$args;
        index index.php;
        location = /cgi-bin/nph-zms {
           include fastcgi_params;
           fastcgi_param   SCRIPT_FILENAME 
$document_root$fastcgi_script_name;
           fastcgi_pass    unix:/var/run/fcgiwrap/fcgiwrap.sock;
                                     }
         location ~ \.php$ {
           include fastcgi_params;
           fastcgi_param   SCRIPT_FILENAME  
$document_root$fastcgi_script_name;
           fastcgi_pass    unix:/var/run/php-fpm.sock;
                            }
          location /api {
            rewrite ^/api/(.+)$ /api/index.php?p=$1 last;
                         }
       }
     }
}

7.3. Проверить nginx conf
# nginx -t

Перезапуск nginx
# service nginx restart

8. Настройка Zoneminder

8.1. Скопировать и вставить секцию в новый файл: /var/db/mysql/my.cnf

[server]
skip-networking
skip-name-resolve
innodb_flush_method = O_DIRECT
skip-innodb_doublewrite
innodb_file_per_table

root@freebsd-1:/ # mcedit /var/db/mysql/my.cnf

8.2. Restart MySQL
root@freebsd-1:/ # service mysql-server restart


8.3. Configure fcgiwrap.
Для выполнения perl-скриптов через nginx будем использовать fcgiwrap. Есть два способа работать с fcgiwrap — socket и ip.
Примечание: Я буду использовать 10 камер, поэтому sysrc fcgiwrap_flags=»-c 10”

Установка

# cd /usr/ports/www/fcgiwrap
# make install clean

Настройка через файл /etc/rc.conf.

Запуск # /usr/local/etc/rc.d/fcgiwrap start

Источник: https://www.site-motor.ru/docs/freebsd/www_fcgiwrap.html

[свернуть]

Указываем в rc.conf пользователя данного процесса, указываем количество процессов(10) и перезапускаем:

# sysrc fcgiwrap_user=»www»
# sysrc fcgiwrap_flags=»-c 10»
# service fcgiwrap restart

 

8.4. Подключаем файловую систему tmpfs.

Tmpfs дает ощутимый прирост при больших нагрузках, если очень много временных файлов хранится в разделе /tmp, ранее раздел располагался на жестком диске, сейчас же закрепим его в оперативной памяти, что даст больший прирост при чтении и записи.

Подгрузить драйвер для использования tmpfs как модуль в момент загрузки сервера. Для этого поместите в файл /boot/loader.conf следующую строку tmpfs_load="YES":

echo 'tmpfs_load="YES"' >> /boot/loader.conf

Если вы не включили опцию TMPFS в конфигурационный файл своего ядра, в текущем сеансе можно подгрузить данный модель командой:

kldload tmpfs

Затем Открываем /etc/fstab и добавляем следующу строку в него:

tmpfs /tmp tmpfs rw,nosuid,mode=01777 0 0

# mcedit /etc/fstab


Данная строка при следующем запуске системы осуществит монтирование в точку /tmp раздел размером «сколько надо», выделенными из оперативной памяти, с правами доступа “для всех” – 1777.

После перезагрузки системы проверяем:

8.5. Создаем пользвателя и БД  (Note the for this example I’m not changing the user or password. You should change
it to something only your know, but there are other steps involved to change other configuration files I won’t be
covering here)
# mysql -u root -p
Enter password: ← type your sql password
> CREATE DATABASE zm;
> GRANT ALL PRIVILEGES ON zm.* TO ‘zmuser’@’localhost’ IDENTIFIED BY ‘zmpass’;
> FLUSH PRIVILEGES;
> quit;

8.6. Populate the database

mysql -u root -p zm < /usr/local/share/zoneminder/db/zm_create.sql


8.7. Start zoneminder

mkdir /var/log/zm/

touch /var/log/zm/web_php.log

touch /var/log/zm/zmpkg.log

chown www:www mkdir /var/log/zm/*

root@freebsd-1:/usr/local/etc/nginx # service zoneminder start
root@freebsd-1:/usr/local/etc/nginx #
root@freebsd-1:/usr/local/etc/nginx # service zoneminder status
running9. Accesssing zoneminder
9.1. Obtain the IP address for your server Type the address on your browser. You should get the screen below:

zoneminder running with one camera addedScreens

10. Добавление камер в Zoneminder.

Переходим по адресу:  http://вашип и нажимаем кнопку Add New Monitor.

В открывшемся окне добавления камеры нас интересуют первые две вкладки: General и Source.
Заполняем вкладку General для D-Link DCS-930:

Name: DCS-930-1 — Имя камеры
Source Type — Remote — удаленная камера .

Function — Modect — записываем только, когда срабатывает Alert/Alarm.
Enabled — On —  включаем камеру.
Maximum FPS — 10 — частота изменения картинки.
Alarm Maximum FPS — 10 — частота изменения картинки при Alert/Alarm.

Автор: Электроник

Системный администратор широкого профиля. От ИТ до Маркетинга. Мастер на все руки.

Добавить комментарий

Ваш адрес email не будет опубликован.