Настройка сервера под управлением Debian с нуля
Задачи возложенные на сервер:
- Резервное копирование данных с помощью программного RAID 1
- Видеосервер с базой данных MySQL вместо стандартной MiriaDB
- Веб сервер для размещения сайтов и прочего
Настройка RAID
Есть два одинаковых, неразмеченных, ССД по 120 Гб. При установке нам будет предложено разметить пространство автоматически или в ручную, нажимаем Manual.
Для достижения поставленной задачи будут созданы следующие разделы
- Swaparea – 2Gb
- / (основная система) – 90Gb
- /videorecords – 28Gb
Размечаем первый диск, нажимаем на FREE SPACE.
Файл подкачки делаем Primal, где файловая система выбираем Использовать для RAID
Системную область делаем Priamal, ставим метку Загрузочный, Использоваться для RAID
Для видеозаписей делаем Logcal, Использовать для RAID
Второй диск нужно разметить точно так же как и первый.
После настройки переходим в пункт Конфигурация RAID, создать MD оставляем настройки по умолчанию и по порядку, в нашем случае 3 раза, создаем разделы для SWAP, /, /videorecord. То есть три раза создаем MD каждый раз отмечая галочкой соответствующие разделы на двух дисках.
После успешного выполнения операции у нас появятся 3 области RAID, щелкаем на каждую из них и настраиваем:
- Swap – пункт Не использовать меняем на Swaparea
- / - пункт Не использовать меняем на Ext4 монтировать как /
- Видеораздел пункт Не использовать меняем на 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