Итак, настал новый 2018 год и в этом году будут такие же интересные заметки, как и в прошлом. Сегодня я хочу показать, как развернуть систему умного дома MajorDoMo на систему Ubuntu в частности релиз Ubuntu Xenial Server amd64. В настоящее время я использую MajorDoMo на Ubuntu Trusty Server на HP MicroServer Gen8 и мне этого хватает с головой, как по мощности так и удобству управления.
Ладно ниже пошаговые шаги, как установить MajorDoMo на Ubuntu Xenial Server amd64:
Работает!
ekzorchik@srv-xenial:~$ sudo rm -Rf /var/lib/apt/lists
ekzorchik@srv-xenial:~$ sudo nano /etc/default/apport
enabled=0
ekzorchik@srv-xenial:~$ sudo nano /etc/update-manager/release-upgrades
Prompt=never
ekzorchik@srv-xenial:~$ sudo apt-get update && sudo apt-get upgrade -y
ekzorchik@srv-xenial:~$ sudo rm -f /etc/localtime
ekzorchik@srv-xenial:~$ sudo ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime
ekzorchik@srv-server:~$ sudo apt-get install ntpdate -y
ekzorchik@srv-server:~$ sudo ntpdate -s 0.pool.ntp.org
ошибок быть не должно
ekzorchik@srv-server:~$ sudo crontab -e
@reboot /usr/sbin/ntpdate -s 0.pool.ntp.org > /dev/null
ekzorchik@srv-server:~$ sudo nano /etc/profile
export LC_ALL="en_US.UTF-8"
ekzorchik@srv-server:~$ source /etc/profile
ekzorchik@srv-xenial:~$ sudo reboot
ekzorchik@srv-xenial:~$ sudo apt-get install apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php libapache2-mod-php7.0 php7.0-bz2 php7.0-cli php7.0-common php7.0-curl php7.0-gd php7.0-json php7.0-mbstring php7.0-mcrypt php7.0-mysql php7.0-opcache php7.0-readline php7.0-xml dbconfig-mysql mysql-client-5.7 mysql-client-core-5.7 mysql-common mysql-server mysql-server-5.7 mysql-server-core-5.7 php-mysql php7.0-mysql git -y
New password for the MySQL "root" user:
712mbddr@
Repeat password for the MySQL "root" user:
712mbddr@
ekzorchik@srv-xenial:~$ sudo nano /etc/apache2/apache2.conf
ServerName srv-xenial
Включаю модуль Apache 2:
ekzorchik@srv-xenial:~$ sudo a2enmod rewrite
Загружаю сервис MajorDoMo с GIT аккаунта автора:
ekzorchik@srv-xenial:~$ git clone https://github.com/sergejey/majordomo.git
ekzorchik@srv-xenial:~$ sudo mv majordomo/* /var/www/
ekzorchik@srv-xenial:~$ sudo cp majordomo/.htaccess /var/www/
Затем создаю базу пользователя и пароль под сервис MajorDoMo:
ekzorchik@srv-server:~$ mysql -u root -p712mbddr@ -e "create database db_terminal character set utf8"
mysql: [Warning] Using a password on the command line interface can be insecure.
ekzorchik@srv-server:~$ mysql -u root -p712mbddr@ db_terminal < /var/www/db_terminal.sql
ekzorchik@srv-server:~$ mysql -u root -p712mbddr@ -e "create user 'us_majordomo'@'localhost' identified by '612mbddr@'"
ekzorchik@srv-server:~$ mysql -u root -p712mbddr@ -e "grant all on db_terminal.* to 'us_majordomo'@'localhost';"
ekzorchik@srv-server:~$ mysql -u root -p712mbddr@ -e "flush privileges;"
Далее нужно прописать в конфигурационном файле сервиса MajorDoMo данные по пользователю MySQL, базе и паролю:
ekzorchik@srv-xenial:~$ sudo cp /var/www/config.php.sample /var/www/config.php
ekzorchik@srv-xenial:~$ sudo nano /var/www/config.php
Define('DB_HOST', 'localhost');
Define('DB_NAME', 'db_terminal');
Define('DB_USER', 'us_majordomo');
Define('DB_PASSWORD', '612mbddr@');
Так же необходимо отключить режим “Strict mode” для MySQL
ekzorchik@srv-xenial:~$ sudo nano /etc/mysql/conf.d/disable_strict_mode.cnf
[mysqld]
sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
ekzorchik@srv-xenial:~$ sudo nano /etc/apache2/apache2.conf
Search (to replace): AllowOverride None
Replace with: AllowOverride All
Replace this instance? A
ekzorchik@srv-xenial:~$ sudo nano /etc/apache2/sites-available/000-default.conf
#DocumentRoot /var/www/html
DocumentRoot /var/www
ekzorchik@srv-xenial:~$ sudo nano /etc/php/7.0/apache2/php.ini
short_open_tag = On
error_reporting = E_ALL & E_NOTICE & ~E_DEPRECATED & ~E_STRICT
max_execution_time = 300
max_input_time = 180
post_max_size = 200M
upload_max_filesize = 50M
max_file_uploads = 150
и в этом файле проделываем точно такие же настройки: ekzorchik@srv-xenial:~$ sudo nano /etc/php/7.0/cli/php.ini
Далее необходимо создать файл описание сервиса для запуска основного цикла системы:
ekzorchik@srv-xenial:~$ sudo nano /etc/systemd/system/majordomo.service
[Unit]
Description=MajorDoMo
[Service]
Requires=mysql.service
Requires=apache2.service
Type=simple
WorkingDirectory=/var/www
ExecStart=/usr/bin/php /var/www/cycle.php
Restart=always
[Install]
WantedBy=multi-user.target
ekzorchik@srv-xenial:~$ sudo chmod +x /etc/systemd/system/majordomo.service
Теперь перезапускаю:
ekzorchik@srv-xenial:~$ sudo systemctl daemon-reload
ekzorchik@srv-xenial:~$ sudo systemctl enable majordomo.service
ekzorchik@srv-xenial:~$ sudo systemctl start majordomo.service
ekzorchik@srv-xenial:~$ sudo systemctl status majordomo.service
● majordomo.service - MajorDoMo
Loaded: loaded (/etc/systemd/system/majordomo.service; enabled; vendor preset: enable
Active: active (running) since Tue 2017-12-19 15:41:00 MSK; 2s ago
Main PID: 2249 (php)
Tasks: 1
Memory: 6.4M
CPU: 56ms
CGroup: /system.slice/majordomo.service
└─2249 /usr/bin/php /var/www/cycle.php
Dec 19 15:41:00 srv-xenial systemd[1]: Started MajorDoMo.
Dec 19 15:41:00 srv-xenial php[2249]: Connecting to database...
ekzorchik@srv-xenial:~$ sudo apache2ctl restart
ekzorchik@srv-xenial:~$ sudo find /var/www/ -type d -exec chmod 0777 {} \;
ekzorchik@srv-xenial:~$ sudo find /var/www/ -type f -exec chmod 0666 {} \;
ekzorchik@srv-xenial:~$ sudo chown -R www-data:www-data /var/www/
ekzorchik@srv-server:~$ sudo crontab -e
@reboot /usr/bin/php /var/www/cycle.php
ekzorchik@srv-xenial:~$ sudo reboot
Заработало.
На этом у меня всё, с уважением Олло Александр aka ekzorchik.