Last active
April 2, 2018 16:24
-
-
Save g3rhard/f6c7b37b11711b733a20233cda9e1179 to your computer and use it in GitHub Desktop.
Install ZoneMinder with h264 archive storage
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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