Установка и настройка
В рамках задания нужно установить на машину ADMIN_PC - базу данных MYSQL , nginx, php-fpm и zoneminder. Задание разобрано на АЛЬТ Сервере в минимальной установке. Сразу оговорюсь, что вся работа происходила под пользователем root. Если возникают какие-то ошибки, то можно посмотреть их внизу этой страницы - Zoneminder — ALT Linux Wiki. Большинство информации по установке и запуску я брал отсюда.
Для начала нужно обновить списки репозиториев:
apt-get update
Устанавливаем MYSQL
apt-get install MySQL-server
Далее стартуем MYSQL
systemctl enable mysqld
systemctl start mysqld
Для входа в оболочку управления MYSQL пишем:
mysql -u root
Теперь нужно сменить пароль для пользователя root, все дальнейшие команды будут писать в оболочке MYSQL на языке запросов SQL. В начала каждого запроса написано mysql>
, писать это не нужно, это сделано для вашего понимания, что эти команды выполняются в оболочке MYSQL.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxXX.1234';
mysql> create user 'zm'@'localhost' identified by 'zmpass';
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 'zm'@localhost;
mysql> exit;
Стоит отметить что все строчки нужно закрывать кавычками. Также после задачи пароля пользователю root , вход в оболочку MYSQL будет происходить командой:
mysql -u root -p
Флаг -p указывает что мы логинимся с паролем, без пароля нас не будет пускать в консоль MYSQL. Теперь нужно перезагрузить MYSQL. Делается это командой ниже:
systemctl restart mysqld
Теперь нужно установить все зависимости:
apt-get install zoneminder nginx spawn-fcgi php8.1-fpm-fcgi fcgiwrap
Далее нужно настраивать конфиги, для этого нужен текстовый редактор, можете выбрать любой. Vi, Vim, mcedit и тд. Разницы в целом нет. Мне очень нравиться nano поэтому дальше я буду использовать его.
apt-get install nano #устанавливаю нано, опять таки, разницы нет.
Далее нужно открыть конфиг ZoneMinder и подключить его к базе данных:
nano /etc/zm/zm.conf
После открытия нужно внести изменения вот в эти строчки:
Если были использованы данные которые я указал выше в SQL-запросах то все успешно подключиться после включения сервиса.
systemctl enable --now zoneminder
Для сохранения файла и выхода из него в nano используется сочетание клавиш Ctrl+o (Для сохранения) -> Ctrl+x (Для выхода).
Теперь конфигурируем все по порядку. Начнем с fcgi:
nano /etc/sysconfig/spawn-fcgi
Нужно заменить несколько строчек:
- означает что мы не удаляем строчку, а заменяем нынешнее значение на значение из строчки с +
- USERID=_spawn_fcgi #Тут мы удаляем _spawn_fcgi
+ USERID=apache #И меняем на это значение
- FCGIPROGRAM="/usr/bin/fcgiwrap" #меняем путь с /bin/
+ FCGIPROGRAM="/usr/sbin/fcgiwrap" #на /sbin/
Конфиг в конечном итоге выглядит так:
Теперь перейдем на настройке Nginx:
nano /etc/nginx/nginx.conf
В конфиге нужно закомментировать одну строчку:
- fastcgi_temp_path /var/spool/nginx/tmp/fastcgi #было
+ #fastcgi_temp_path /var/spool/nginx/tmp/fastcgi #должно стать
Весь конфиг:
Теперь нужно создать файл конфига для нашего сайта, сразу оговорочка, IP вместе с FQDN я не задал как в задании :
touch /etc/nginx/sites-enabled.d/zoneminder.conf
nano /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;
}
Теперь нужно прописать конфиг для корректной работы fcgi:
touch /etc/nginx/sites-enabled.d/zm-fcgi.inc
nano /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;
Теперь нужно добавить пользователя в группу. У меня это не сработало сразу, ниже есть решение этой проблемы если вдруг выдаст ошибку.
usermod -a -G video apache# команда для создания пользователя, может не сработать и выдать ошибку что такой команды не найдено
chmod 777 /etc/sudoers
nano /etc/sudoers
Дописываем в конфиг который открылся:
root ALL=(ALL:ALL) ALL
Выходим из конфига и сохраняем его. Теперь пишем:
chmod 774 /etc/sudoers
И после этого повторно выполняем команду:
usermod -a -G video apache
После этого запускаем все сервисы:
systemctl enable --now mysqld
systemctl enable --now nginx
systemctl enable --now zoneminder
systemctl enable --now spawn-fcgi
systemctl enable --now php8.1-fpm
Если что-то выдает ошибки то отлавливаем их с помощью:
systemctl status имя_сервиса_который_вывел_ошибку
Теперь нам нужно узнать ip нашего компьютера:
ip a
вводим в адресную строку браузера:
http://ip_адрес_машины
И получаем:
Тут нужно нажать на кнопку apply.
После этого сразу перейти в настройки, в глобальных настройках(System) нужно найти эти пункты и настроить их как на картинках у меня:
После этого нужно долистать до самого низа страницы и увидеть там кнопку Save в правом нижнем углу.
Теперь нужно создать пользователя как этого требует задание. Для этого переходим во вкладку пользователи:
В ней нажимаем "Добавить пользователя"
Создаем пользователя с данными как в задании:
Подключение камер появиться позже, когда они будут у меня на руках и я смогу их потыкать.