Как установить MajorDoMo на Linux
Инструкция была написана под операционную систему Ubuntu 18.10 и тестировалась только на ней!
В случае если у Вас установлена другая операционная система Linux то возможно, на каком-то из шагов, у Вас возникнут ошибки. В данном случае, рекомендуется сообщить об этих ошибках в чат в Telegram или же на форум.
Перед началом работы необходимо убедиться что в системе установлен пакет sudo.
Для этого нужно выполнить команду:
1 |
sudo |
В случае если в ответ будет отображено сообщение подобного плана:
1 |
bash: sudo: command not found |
Это будет обозначать, что пакет sudo по умолчанию не установлен в Вашей ОС. Потому его необходимо установить.
Для это необходимо выполнить следующие команды:
1 |
su - |
Будет запрошен пароль пользователя от которого выполняется команда. Внимание!!! При вводе пароля, символы не будут отображаться на экране!
После успешного ввода пароля, в случае если вид консоли изменился и принял подобный вид:
1 |
root@localhost:~# |
Производится установка sudo командой:
1 |
apt install sudo |
После успешной установки пакета, необходимо добавить пользователя, от которого будет производиться установка, в группу sudo. Это делается командой:
1 |
usermod -aG sudo USERNAME |
Где:
USERNAME - это имя пользователя. Для Raspberry PI это обычно пользователь: pi.
По завершении этих действий, необходимо выйти в окружение обычного пользователя. Это выполняется командой:
1 |
exit |
Приглашающее сообщение в консоли, должно принять подобный вид:
1 |
pi@localhost:~$ |
Обновление кеша пакетов и обновление установленных пакетов (в случае если для них есть обновления)
1 2 |
sudo apt-get update sudo apt-get upgrade |
Установим ещё пару приложений которые будем использовать в процессе установки
1 |
sudo apt-get install nano wget unzip -y |
Устанавливаем SSH
1 |
sudo apt-get install ssh -y |
Устанавливаем MySQL
1 |
sudo apt-get install mysql-server mysql-client -y |
Когда запросит установить пароль для root – укажите любой пароль, который Вы запомните. Этот пароль понадобится в дальнейшем.
Важно!!! Если установщик не запросил пароль, то выполните в консоли команду:
1 |
sudo mysql_secure_installation |
И пройдите по всем шагам. И в этих шагах укажите пароль пользователя root.
Создание пользователя и БД MySQL:
Для начала создадим БД командой:
1 |
sudo mysql -uroot -p -e "CREATE DATABASE db_terminal;" |
После выполнения этой команды, и далее по параграфу, MySQL будет просить ввести пароль пользователя root, который мы указывали выше. Вводим его где будет необходимо и нажимаем Enter.
Важно!!! При вводе пароля символы не будут отображены на экране.
Далее создаём пользователя для работы с этой БД:
1 |
sudo mysql -uroot -p -e "CREATE USER 'majordomo'@'%' IDENTIFIED BY 'password';" |
password - необходимо заменить на ваш пароль, который тоже необходимо запомнить. Этот пароль будет использоваться для работы MajorDoMo с БД, а так же для входа в phpMyAdmin ниже по инструкции.
Важно!!! Рекомендуется использовать сложный пароль, так как в случае если будет открыт доступ к MajorDoMo и phpMyAdmin извне, то есть вероятность того, что простой пароль будет взломан и тот, кто это сделает, сможет получить доступ к важным данным в Вашей MajorDoMo.
Для предоставления только что созданному пользователю привилегий, необходимо выполнить команду:
1 |
sudo mysql -uroot -p -e "GRANT ALL PRIVILEGES ON *.* TO 'majordomo'@'%';" |
И в завершение, необходимо обновить привилегии:
1 |
sudo mysql -uroot -p -e "FLUSH PRIVILEGES;" |
Установка WEB сервера
В качестве web сервера можно поставить разные пакеты.
- Установка на основе Apache.
1sudo apt-get install apache2 apache2-utils -yПравим конфиг Апача
1sudo nano /etc/apache2/sites-available/defaultЕсли такого файла нет, он может называться по-другому. Например:
1000-default.confВ этом файле находим раздел:
1<Directory />И заменяем во всех совпадениях
1AllowOverride Noneна
1AllowOverride AllСохраняемся и выходим: Ctrl-O Ctrl-X
В более новых версиях Apache конфигурационный файл может не содержать директив "AllowOverride". В таком случае необходимо вручную привести файл к виду:123456789101112131415161718192021222324<VirtualHost *:80>DocumentRoot /var/www/html<Directory />Options FollowSymLinksAllowOverride All</Directory><Directory /var/www/html>Options Indexes FollowSymLinks MultiViewsAllowOverride AllOrder allow,denyallow from all</Directory>ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/<Directory "/usr/lib/cgi-bin">AllowOverride NoneOptions +ExecCGI -MultiViews +SymLinksIfOwnerMatchOrder allow,denyAllow from all</Directory>ErrorLog ${APACHE_LOG_DIR}/error.logCustomLog ${APACHE_LOG_DIR}/access.log combined</VirtualHost>Удаляем стандартный index.html файл командой:
1sudo rm -f /var/www/html/index.htmlИ перезапускаем Апач:
1sudo apache2ctl restartЕсли при перезапуске выдаст примерно такой ответ:
1apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this messageТо необходимо поправить apache2.conf
1sudo nano /etc/apache2/apache2.confВставив в него такую строку:
1ServerName localhostСохраняемся и выходим: Ctrl-O Ctrl-X
Перезапускаем Апач
1sudo apache2ctl restartЕсли ваша версия Apache отличается от рассматриваемой, то пути к файлам конфигурации могут быть такими:
1sudo nano /etc/apache2/sites-available/default.conf1sudo nano /etc/apache2/httpd.conf
Устанавливаем PHP
1 |
sudo apt-get install php php-cgi php-cli php-pear php-mysql php-mbstring php-xml -y |
curl и его библиотеки:
1 |
sudo apt-get install curl libcurl3 libcurl3-dev php-curl -y |
Для apache
1 |
sudo apt-get install libapache2-mod-php -y |
Для последних версий Апача необходимо включить работу с коротким тегом <? /?> для этого откройте файл php.ini командой:
1 |
sudo nano /etc/php/7.0/apache2/php.ini |
Необходимо заменить или вставить строку:
1 |
short_open_tag = On |
Устанавливаем PHPMYADMIN
1 |
sudo apt-get install phpmyadmin -y |
Установщик изначально спросит о том, к какой версии web сервера необходимо произвести настройку. Необходимо выбрать версию apache2 путём нажатия пробела и Enter.
Установщик спросит необходимость конфигурирования баз данных при помощи "dbconfig-common". Отвечаем утвердительно путём нажатия Enter.
Далее установщик спрашивает пароль MySQL сервера. Этот пароль задавался в разделе "Устанавливаем MySQL" данного руководства. Вводим указанный пароль и подтверждаем его ещё раз.
Включаем mod_rewrite
1 |
sudo a2enmod rewrite |
Перезапускаем Апач
1 |
sudo apache2ctl restart |
Настройка PHP
В обоих конфигурационных файлах для web сервера:
1 |
sudo nano /etc/php/7.0/apache2/php.ini |
И файл запуска php скриптов из командной строки:
1 |
sudo nano /etc/php/7.0/cli/php.ini |
Строку error_reporting привести к виду:
1 |
error_reporting = E_ALL & ~E_NOTICE |
А так же строки:
1 |
max_execution_time - С 30 меняем на 90 |
1 |
max_input_time - С 60 на 180 |
1 |
post_max_size - С 8M на 200M |
1 |
upload_max_filesize - С 2M на 50M |
1 |
max_file_uploads - С 20 на 150 |
Для применения изменений, необходимо перезапустить Apache:
1 |
sudo /etc/init.d/apache2 restart |
Устанавливаем MajorDoMo
Скачиваем дистрибутив Majordomo, разархивируем и копируем содержимое majordomo-master в директорию /var/www/html:
1 2 3 4 5 6 7 |
mkdir ~/majordomo cd ~/majordomo wget https://github.com/sergejey/majordomo/archive/master.zip unzip master.zip sudo cp -rp ~/majordomo/majordomo-master/* /var/www/html sudo cp -rp ~/majordomo/majordomo-master/.htaccess /var/www/html rm -rf ~/majordomo |
Настройка прав на файлы и директории
Установка рекомендуемых прав выполняется следующими командами:
Для файлов:
1 |
sudo find /var/www/html/ -type f -exec chmod 0644 {} \; |
Для директорий:
1 |
sudo find /var/www/html/ -type d -exec chmod 0755 {} \; |
Проверяем права командой:
1 |
ls -lh /var/www/html |
Права будут выглядеть подобно:
Для директорий:
1 |
drwxr-xr-x |
Для файлов:
1 |
-rw-r--r-- |
Установка собственника и группы на файлы и директории
Majordomo (а именно сервисы: apache и php) работает от пользователя www-data. Права доступа к каталогу /var/www/html, где лежат файлы Majordomo по умолчанию принадлежат root. Изменим владельца директории /var/www/html на www-data.
1 |
sudo chown -R www-data:www-data /var/www/html |
Проверяем:
1 |
ls -lh /var/www/html |
Вывод должен быть подобный:
1 |
-rw-r--r-- 1 www-data www-data 12K May 26 22:19 cycle.php |
Теперь необходимо предоставить доступ пользователю www-data к медиа устройствам. Для этого его необходимо добавить в группу audio.
Это делается командой usermod:
1 |
sudo usermod -a -G audio www-data |
Проверяем, что он появился в группе:
1 |
cat /etc/group | grep audio |
Если всё в порядке, то вывод будет подобный:
1 |
audio:x:29:www-data |
Дальнейшие команды нужно использовать только в случае если у Вас по какой-то причине система не работает совсем или не работает частично.
В большинстве случаев на моменте начального конфигурирования, проблемы с системой возникают из-за неправильно установленных прав.
Меняем права доступа к файлам по принципу: всем-всё.
1 |
sudo find /var/www/html/ -type f -exec chmod 0666 {} \; |
И директориям
1 |
sudo find /var/www/html/ -type d -exec chmod 0777 {} \; |
Проверяем права командой:
1 |
ls -lh /var/www/html |
Права будут выглядеть подобно:
Для директорий:
1 |
drwxrwxrwx |
Для файлов:
1 |
-rw-rw-rw- |
В случае если права по какой-то причине не установились, то можно сделать вариант в котором устанавливаются полные права для всех рекурсивно по директориям и файлам. Команда выглядит так:
1 |
sudo chmod -R 777 /var/www/html |
Необходимо заметить, что данный способ, не самый безопасный, но самый простой.
Импорт базы данных
Заходим по адресу:
http://localhost/phpmyadmin
Или:
http://localhost/phpmyadmin4
При входе будет запрошен логин, его необходимо указать как: majordomo, и пароль который который был задан на шаге: "Создание пользователя и БД MySQL".
В созданную ранее БД необходимо импортировать файл db_terminal.sql из директории с дистрибутивом. Скачать его можно по ссылке: db_termina.sql. Для скачивания нажмите правой кнопкой мыши на ссылку и выберите: "Сохранить ссылку как...".
Далее выполняем последовательность действий в phpMyAdmin для импорта sql файла.
- В левой части окна выбрать БД db_terminal, путём нажатия один раз на её название.
- В верхней части окна найти кнопку "Импорт".
- В загрузившейся странице, в разделе "Импортируемый файл" нажать "Выберите файл" или "Обзор".
- В открывшемся окне, выбрать ранее сохраненный файл "db_terminal.sql".
- В нижней части окна нажать "Вперёд".
После успешного импорта должна отобразится зелёная строка с подобным текстом:
1 |
Импорт успешно завершён, выполнено 171 запросов. (db_terminal.sql) |
В случае если возникли проблемы с импортом БД используя phpMyAdmin, есть возможность импортировать дамп БД используя командную строку. Для этого скачайте дамп файл командой:
1 |
sudo wget -O /tmp/db_terminal.sql https://raw.githubusercontent.com/sergejey/majordomo/master/db_terminal.sql |
И импортируйте его:
1 |
sudo mysql -umajordomo -p db_terminal < /tmp/db_terminal.sql |
Будет запрошен пароль пользователя majordomo, который был задан на шаге: "Создание пользователя и БД MySQL".
Правим основной конфиг
Изначально копируем пример конфига в рабочий конфиг:
1 |
sudo cp /var/www/html/config.php.sample /var/www/html/config.php |
Установим собственника и группу для конфига:
1 |
sudo chown www-data: /var/www/html/config.php |
И открываем конфиг для редактирования:
1 |
sudo nano /var/www/html/config.php |
Прописываем имя пользователя и пароль пользователя БД. Для этого нужно исправить строки:
1 2 |
Define('DB_USER', 'majordomo'); Define('DB_PASSWORD', ''); |
Где: DB_USER - пользователь majordomo который был создан на шаге: "Создание пользователя и БД MySQL".
DB_PASSWORD - пароль от этого пользователя, который был задан на том же шаге.
Сохраняем файл, и выходим из редактора.
Все, теперь можно зайти на веб интерфейс Majordomo.
1 |
http://localhost/ |
Или:
1 |
http://sever_ip/ |
Если установка выполняется не на локальную машину.
При первом входе должна быть отображена страница: "Hello, world! :)" на которой необходимо выбрать тайм зону, язык системы и цветовую тему. По завершении нажать кнопку "Continue".
В случае если такая страница не отобразилась, открыть её можно по ссылке:
1 |
http://localhost/popup/first_start.html |
Основной цикл Вариант 1. Systemd unit. Предпочтительный
Код юнита:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[Unit] Description=Majordomo cycles service Requires=network.target mysql.service apache2.service After=mysql.service apache2.service [Service] Type=simple User=www-data Group=www-data ExecStart=/usr/bin/php /var/www/html/cycle.php ExecStop=/usr/bin/pkill -f cycle_* KillSignal=SIGKILL KillMode=control-group RestartSec=1min Restart=on-failure [Install] WantedBy=multi-user.target |
Данный код необходимо скопировать в файл: /etc/systemd/system/majordomo.service Для этого открываем файл:
1 |
sudo nano /etc/systemd/system/majordomo.service |
И вставляем в него код, который представлен выше.
Для автозапуска MajorDoMo при старте системы, необходимо выполнить команду:
1 |
sudo systemctl enable majordomo |
И для запуска MajorDoMo необходимо выполнить:
1 |
sudo systemctl start majordomo |
Основной цикл Вариант 2. Если не сработал первый вариант
Запуск основного цикла добавляем в Cron, для пользователя www-data, так как файлы МД принадлежат этому пользователю.
1 |
sudo crontab -e -u www-data |
В открывшемся окне добавляем строку:
1 |
@reboot /usr/bin/php /var/www/html/cycle.php |
И обязательно! ставим Enter для того чтобы в конце открытого файла был перенос строки.
Сохраняем и перезапускаем компьютер:
1 |
sudo reboot |
После запуска циклов можно открыть MajorDoMo по адресу:
1 |
http://localhost/ |
В случае если MajorDoMo устанавливалась на локальный компьютер.
Или:
1 |
http://IP_ADDRESS/ |
Если MajorDoMo устанавливалась на удалённый сервер.
Если не выполняются onNewMinute и onNewHour
Нужно проверить настройку BASE_URL в config.php. Если Вы используете домен, а не IP, тогда добавьте в файл /etc/hosts строку вида:
1 |
127.0.0.1 domain.com |
Где domain.com - это Ваш домен который Вы используете. Комментарий Сергея с форума: Дело в том, что эти методы вызываются через внутреннюю функцию raseEvent, которая обращается к серверу через HTTP-запрос используя BASE_URL. Если он неправильный, то метод не вызовется.
На этом статья об установке MajorDoMo на Linux Ubuntu закончена.
Полезные темы на форуме
- Для быстрой установки необходимых атрибутов можно воспользоваться данным скриптом.
- Установка на Ubuntu
- Установка Системы Majordomo на Raspberry pi
- Установка на FreeBSD
- [РЕШЕНО] Проблема с установкой и настройкой на Ubuntu 13.04
- Установка на Debian подробная инструкция
- CubieBoard - попытка №1
18 thoughts on - Как установить MajorDoMo на Linux?
Код "error_reporting = E_ALL & ~E_NOTICE"
Заменить на "error_reporting = E_ALL & ~E_NOTICE"
🙂 "& amp;" без пробела заменить на "&"
http://majordomo.smartliving.ru/forum/viewtopic.php?f=3&t=3490&start=10#p42341
а это уже не работает? ставится без проблем и тремя командами)
В пункте "Устанавливаем PHP5:"
Где его взять? Может какие репозиториии добавить нужно?!?!?
Денис, в марте-апреле перешли на php 7 - не скорректировали инструкцию
"Возможные проблемы."
Проверил AllowOverride All, добавил в apache2.conf строку LoadModule rewrite_module modules/mod_rewrite.so, проконтролировал наличие этого файла, не запускается никак. localhost грузит страницу apache, localhost/popup/first_start.html грузит 404.
у меня при установке SQL пароль не спрашивал.
при установке PHP установил. теперь при входе в phpmyadmin данный пароль не принимает. как изменить пароль?
в общем пароль то установился, а пользователь был mysql
Установил на зерошку. Под рутом и mysql не пускает в phpmyadmin. Пускает пользователя phpmyadmin с установленным ранее паролем, но нет привилегий на создание БД.
С бубном настроил БД. Но проблема все таже, не грузится МД, грузится апач.
serenya, как вы настроил БД?
Меня под рутом не пускает, пустил под phpmyadmin и без привелегий.
Такая же фигня.
serenya, как вы настроил БД?
Меня под рутом не пускает, пустил под phpmyadmin и без привелегий.
там авторизация из под рута через сокет, гуглите сброс пароля mysql, как зайдете в пхп админ и все сделаете, советую поменять обратно, что бы не пускало по http.
Отключен удаленный root.
в /etc/mysql/my.cnf
закоментировать строку : bind-address = 127.0.0.1
sudo /etc/init.d/mysql restart
mysql -u root -p;
use mysql
select host, user from user;
update user set host='%' where user='root' and host='localhost';
flush privileges;
Сегодня поставил на дебиан 9 (на оранж зеро), правда пришлось минимальную частоту поднимать до 648000, а то протупливал таймеры в мажоре. Так вроде все гуд, очень быстренько пашет. Зеро верхняя с 512 оперативки
Допишите "Основной цикл Вариант 2", на Oреnmediavault (на Debian), на арасhe не ставится, только на nginx, черя чать вашей статьи, когда-то смог установить, решил повторить на прошлой неделе, потратил 3 дня, и повторить не смог. Так же пробовал с помощью готового скрипта, тоже не видит. Расстроился плюнул и установил Domoticz. Который появился в Oреnmediavault 4.* в виде плагина. а также есть и в Docer-CE. Почему не сделать так с MajorDomo? Было бы еще проще, нажать пару кнопок и пользуйся. Или хоть вручную, но с рабочим описанием. Продвинутые пользователи говорят, не надо все просто, но это для них, и многие скажут Вам спасибо, я бы и в виде денег. Посмотрите на сайте 4PDA, и подумал, может потому пользователей Domoticz в 2 раза больше, что с установкой нет проблем?
Важно: В момент запуска системы не все службы могут стартануть и скрипт запуска цикла не отрабатывается (не запускается), решением может стать добавление ожидания в 1 минуту перед стартом данного скрипта:
@reboot sleep 60 && /usr/bin/php /var/www/majordomo/www/cycle.php