Skip to content

Instantly share code, notes, and snippets.

@g3rhard
Last active April 2, 2018 16:24
Show Gist options
  • Save g3rhard/f6c7b37b11711b733a20233cda9e1179 to your computer and use it in GitHub Desktop.
Save g3rhard/f6c7b37b11711b733a20233cda9e1179 to your computer and use it in GitHub Desktop.
Install ZoneMinder with h264 archive storage
#!/bin/bash
# http://zoneminder.readthedocs.io/en/latest/installationguide/ubuntu.html#easy-way-ubuntu-16-04
#Задаем пароль для пользователя root для MySQL
COOKIES_PASSWORD="PASSWORD"
#Задаем часовой пояс для PHP
TIMEZONE="Asia/Irkutsk"
# Настраививаем автоматический ввод пароля для админа mysql.
# http://stackoverflow.com/a/7740571
echo "mysql-server mysql-server/root_password password $COOKIES_PASSWORD" | debconf-set-selections
echo "mysql-server mysql-server/root_password_again password $COOKIES_PASSWORD" | debconf-set-selections
# Устанавливаем лампу (linux, apache, mysql, php)
tasksel install lamp-server
# проверяем установлены ли пакеты
apt install -y software-properties-common python-software-properties
# Добавляем репу разрабов zoneminder с поддержкой записи архива в h264.
add-apt-repository -y ppa:iconnor/zoneminder-feature-h264-videostorage
# Добавляем последнюю сборку FFMPEG
add-apt-repository -y ppa:jonathonf/ffmpeg-3
# Обновляем индексы, чтобы новая репа увиделась.
apt-get update
# принудительное обновление всей системы. На всякий случай.
apt-get -y upgrade
# Удаляем конфиг мускуля.
rm /etc/mysql/my.cnf
# Копируем новый конфиг:
cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/my.cnf
# Добавляем строку "sql_mode = NO_ENGINE_SUBSTITUTION" в раздел "[mysqld]" в конфиге /etc/mysql/my.cnf.
sed -i 's/\[mysqld\]/\[mysqld\]\nsql_mode = NO_ENGINE_SUBSTITUTION/' /etc/mysql/my.cnf
# Рестартим базу мускуля.
systemctl restart mysql
# Устанавливаем собственно zoneminder и дополнительные утилиты.
apt install -y htop zoneminder ffmpeg
# http://stackoverflow.com/a/20033673
# Говорим мускулю создать БД для проги из заранее приготовленного шаблона.
mysql --user=root --password="$COOKIES_PASSWORD" < /usr/share/zoneminder/db/zm_create.sql
# Ещё донастраиваем. Я в бд не шарю, но эта строка всё равно из официального руководства взята. И она пашет. Инфа - сотка.
mysql --user=root --password="$COOKIES_PASSWORD" -e "grant select,insert,update,delete,create,alter,index,lock tables on zm.* to 'zmuser'@localhost identified by 'zmpass';"
# Меняем ugo права на файл конфига.
chmod 740 /etc/zm/zm.conf
# Меняем владельца и группу. Рулит root, читать может пользователь www-data.
chown root:www-data /etc/zm/zm.conf
# Меняем пользователя:группу на весь каталог /usr/share/zoneminder/ и всё что внутри до самого конца.
chown -R www-data:www-data /usr/share/zoneminder/
# Втыкаем конфиг зонемайндера в апач.
a2enconf zoneminder
# Разрешаем модули для корректной работы.
a2enmod cgi
a2enmod cgid
a2enmod rewrite
# Разрешаем сервису запускаться в принципе. При старте системы.
systemctl enable zoneminder
# Запускаем.
systemctl start zoneminder
# Добавляем в модуль [Date] временную зону (строка date.timezone = Europe/Moscow) в конфиг /etc/php/7.0/apache2/php.ini
sed -i 's|\[Date\]|\[Date\]\ndate.timezone = $TIMEZONE|' /etc/php/7.0/apache2/php.ini
# Согласно форуму - лучше всё-таки добавить пользователя от которого запускается веб-сервер (www-data) в группу в которой разрешено иметь доступ к вебкамерам (video).
# http://zoneminder.readthedocs.io/en/latest/installationguide/ubuntu.html#socket-sendto-or-no-live-streaming
# https://forums.zoneminder.com/viewtopic.php?t=23361
adduser www-data video
# Рестартим апач:
systemctl reload apache2
# http://zoneminder.readthedocs.io/en/latest/installationguide/ubuntu.html#socket-sendto-or-no-live-streaming
# http://www.cyberciti.biz/faq/mysql-command-to-show-list-of-databases-on-server/
# http://www.shellhacks.com/ru/Kak-Vypolnit-Komandu-MySQL-iz-Linux-BASH-Shell
# http://stackoverflow.com/questions/28462376/updating-data-in-mysql-db-from-bash-script
# http://sitear.ru/material/mysql-primery
# "-e" - после неё идёт внутренняя кухня мускуля с собсно мускулевым синтаксисом. "use zm" - использовать БД zm. Остальные комманды будут выпоняться уже в ней. Типа как cd. Всё, что с апдейта и дальше - я получил через тыкание в phpmyadmin, только грохнул эти кавычки: `.
mysql --user=root --password="$COOKIES_PASSWORD" -e "use zm ; UPDATE Config SET Value = '/zm/cgi-bin/nph-zms' WHERE Config.Name = 'ZM_PATH_ZMS';"
# Чистим мусор.
aptitude clean
# Ребутим тачку, чтобы точняк-точняк всё применилось:
reboot
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment