1432 April 3, 2021, 8:47 p.m.

Настройка сервера под управлением Debian с нуля

Задачи возложенные на сервер:

  1. Резервное копирование данных с помощью программного RAID 1
  2. Видеосервер с базой данных MySQL вместо стандартной MiriaDB
  3. Веб сервер для размещения сайтов и прочего

Настройка RAID

Есть два одинаковых, неразмеченных, ССД по 120 Гб. При установке нам будет предложено разметить пространство автоматически или в ручную, нажимаем Manual.

Для достижения поставленной задачи будут созданы следующие разделы

  1. Swaparea – 2Gb
  2. / (основная система) – 90Gb
  3. /videorecords – 28Gb

Размечаем первый диск, нажимаем на FREE SPACE.

Файл подкачки делаем Primal, где файловая система выбираем Использовать для RAID
Системную область делаем Priamal, ставим метку Загрузочный, Использоваться для RAID
Для видеозаписей делаем Logcal, Использовать для RAID

Второй диск нужно разметить точно так же как и первый.

После настройки переходим в пункт Конфигурация RAID, создать MD оставляем настройки по умолчанию и по порядку, в нашем случае 3 раза, создаем разделы для SWAP, /, /videorecord. То есть три раза создаем MD каждый раз отмечая галочкой соответствующие разделы на двух дисках.

После успешного выполнения операции у нас появятся 3 области RAID, щелкаем на каждую из них и настраиваем:

  1. Swap – пункт Не использовать меняем на Swaparea
  2. / - пункт Не использовать меняем на Ext4 монтировать как /
  3. Видеораздел пункт Не использовать меняем на Ext4, монтировать как вписываем вручную /videorecords

Нажимаем на завершение разметки, если все сделано верно тогда установка пойдет дальше без ошибок.

ВАЖНО на этапе разметки запомнить пути ваших дисков, например /dev/sda /dev/sdb

По ходу установки будет предложено сделать записи для загрузчика, выбираем вписать вручную и вписываем ранее запомненные пути до дисков через пробел.

Установка MySQL

Устанавливаем SUDO

apt install sudo

Устанавливаем gnupg

sudo apt install gnupg

Переходим во временную папку, скачиваем файл конфигурации, настраиваем, устанавливаем

cd /tmp
wget https://dev.mysql.com/get/mysql-apt-config_0.8.13-1_all.deb
sudo dpkg -i mysql-apt-config*

Выбираем нужную версию и жмем Ок

sudo apt update
sudo apt install mysql-server

В процессе установки будет предложено выбрать метод шифрования, выбираем Legacy, так ZoneMinder не умеет работать с новым методом.

После установки вводим

sudo systemctl status mysql

Если статут зеленый, установка прошла успешно

Установка ZoneMinder

Устанавливаем Веб сервер, PHP, мод php для apache модуль для обращения к бд.

sudo apt install apache2 php libapache2-mod-php php-mysql

Добавляем репозиторий

sudo nano /etc/apt/sources.lis

# Zoneminder repo
deb https://zmrepo.zoneminder.com/debian/release-1.34 buster/

Устанавливаем модуль для работы с https

sudo apt install apt-transport-https

Качаем модуль ZoneMinder

wget -O - https://zmrepo.zoneminder.com/debian/archive-keyring.gpg | sudo apt-key add –

Качаем и устанавливаем ZoneMinder

sudo apt update
sudo apt install zoneminder
sudo systemctl enable zoneminder.service
sudo systemctl start zoneminder
sudo a2enconf zoneminder
sudo a2enmod rewrite
sudo service apache2 reload

При обращении по адресу ваш_ип/zm будет ошибка подключения к БД

Unable to connect to ZM db.SQLSTATE[HY000] [1045] Access denied for user ‘zmuser’@’localhost’ (using password: YES)

Это нормально, приступаем к конфигурации.

Для отладки я разрешил пользователю root авторизоваться по SSH:

sudo nano /etc/ssh/sshd_config

Добавляю строку

PermitRootLogin yes

Перезапускаю сервис

Авторизовались в WinSCP переходим по пути /etc/zm/zm.conf

Настраиваем логин и пароль для пользователя к базе данных чтобы никто другой не смог подключиться по настройкам по-умолчанию.

Создаем БД для zoneminder

mysql –u root –p< /usr/share/zoneminder/db/zm_create.sql

Переходим в БД создаем пользователя и даем ему права на БД.

CREATE USER 'ИМЯ ПОЛЬЗОВАТЕЛЯ'@'localhost' IDENTIFIED BY 'ПАРОЛЬ';
GRANT ALL PRIVILEGES ON zm.* TO 'ИМЯ ПОЛЬЗОВАТЕЛЯ'@'localhost';
FLUSH PRIVILEGES;

Если все сделано верно то по пути http://ваш_ип/zm выдаст окно соглашения.

Подключаем отдельную область для записей

sudo chown -R www-data:www-data /videorecords

Переходим в опции zm > storage и указываем путь до нового хранилища

Указываем пункт do delete – NO чтобы при переполнении хранилища удалялись только старые записи, а не все полностью.

По факту файлы там храниться не будут поэтому переходим в

/etc/zm/conf.d/ 01-system-paths.conf меняем там путь по умолчанию на тот который нужен и перезагружаем zoneminder

Устанавливаем часовые пояса в системе, php.ini, MySQL и zoneminder

Система

timedatectl list-timezones – смотрим список
timedatectl set-timezone Europe/Moscow – Устанавливаем свой

php.ini

sudo nano /etc/php/7.3/apache2/php.ini > data.timezone

zoneminder

option > system > timezone (устанавливаем свое) > save

MySQL

musql –u root –p
mysql> SELECT NOW(); - проверяем время
SET time_zone = '+05:00'; - задаем вашу зону
quit;

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

Alarm Check Method — AlarmedPixels
Min/Max Pixel Threshold (0-255) — 15
Min/Max Alarmed Area — 1

Для того, чтобы обезопасить сайт от постороннего вмешательства, предлагаю установить дополнительную авторизацию со стороны Apache. Создаем файл с логином и паролем, в шифрованном виде:

htpasswd -c /etc/apache2/.htpasswd ИМЯ ПОЛЬЗОВАТЕЛЯ > задаем пароль

В конфигурационный файл заносим изменения

/etc/apache2/conf-available/zoneminder.conf

Настройка Apache Подключаем модуль SSL

sudo a2enmod ssl

Создаем папку для сертификатов Конфигурируем Virtual Hosts

Подробно описывать не буду, так как итак все понятно Подключаем новый конфигурационный файл

sudo a2ensite название файла
sudo systemctl reload apache2

Теперь сайт доступен по защищенному протоколу

если вы устанавливаете какой-либо готовый сайт убедитесь, чтобы у папки был владелец www-data

Источники