Установка на Linux

Материал из MajorDoMo инфо


Внимание!!! Инструкция была написана под операционную систему Ubuntu 18.10 и тестировалась только на ней! В случае если у Вас установлена другая операционная система Linux то возможно, на каком-то из шагов, у Вас возникнут ошибки. В данном случае, рекомендуется сообщить об этих ошибках в чат в Telegram или же на форум. Перед началом работы необходимо убедиться что в системе установлен пакет sudo. Для этого нужно выполнить команду:

sudo

В случае если в ответ будет отображено сообщение подобного плана:

bash: sudo: command not found

Это будет обозначать, что пакет sudo по умолчанию не установлен в Вашей ОС. Потому его необходимо установить.

Для это необходимо выполнить следующие команды:

su -

Будет запрошен пароль пользователя от которого выполняется команда. Внимание!!! При вводе пароля, символы не будут отображаться на экране! После успешного ввода пароля, в случае если вид консоли изменился и принял подобный вид:

root@localhost:~#

Производится установка sudo командой:

apt install sudo

После успешной установки пакета, необходимо добавить пользователя, от которого будет производиться установка, в группу sudo. Это делается командой:

usermod -aG sudo USERNAME

Где: USERNAME - это имя пользователя. Для Raspberry PI это обычно пользователь: pi. По завершении этих действий, необходимо выйти в окружение обычного пользователя. Это выполняется командой:

exit 1 exit Приглашающее сообщение в консоли, должно принять подобный вид:

pi@localhost:~$ 1 pi@localhost:~$ Обновление кеша пакетов и обновление установленных пакетов (в случае если для них есть обновления) sudo apt-get update sudo apt-get upgrade 1 2 sudo apt-get update sudo apt-get upgrade Установим ещё пару приложений которые будем использовать в процессе установки

sudo apt-get install nano wget unzip -y 1 sudo apt-get install nano wget unzip -y Устанавливаем SSH sudo apt-get install ssh -y 1 sudo apt-get install ssh -y Устанавливаем MySQL sudo apt-get install mysql-server mysql-client -y 1 sudo apt-get install mysql-server mysql-client -y Когда запросит установить пароль для root – укажите любой пароль, который Вы запомните. Этот пароль понадобится в дальнейшем.

Важно!!! Если установщик не запросил пароль, то выполните в консоли команду:

sudo mysql_secure_installation 1 sudo mysql_secure_installation И пройдите по всем шагам. И в этих шагах укажите пароль пользователя root.

Создание пользователя и БД MySQL: Для начала создадим БД командой:

sudo mysql -uroot -p -e "CREATE DATABASE db_terminal;" 1 sudo mysql -uroot -p -e "CREATE DATABASE db_terminal;" После выполнения этой команды, и далее по параграфу, MySQL будет просить ввести пароль пользователя root, который мы указывали выше. Вводим его где будет необходимо и нажимаем Enter. Важно!!! При вводе пароля символы не будут отображены на экране. Далее создаём пользователя для работы с этой БД:

sudo mysql -uroot -p -e "CREATE USER 'majordomo'@'%' IDENTIFIED BY 'password';" 1 sudo mysql -uroot -p -e "CREATE USER 'majordomo'@'%' IDENTIFIED BY 'password';" password - необходимо заменить на ваш пароль, который тоже необходимо запомнить. Этот пароль будет использоваться для работы MajorDoMo с БД, а так же для входа в phpMyAdmin ниже по инструкции. Важно!!! Рекомендуется использовать сложный пароль, так как в случае если будет открыт доступ к MajorDoMo и phpMyAdmin извне, то есть вероятность того, что простой пароль будет взломан и тот, кто это сделает, сможет получить доступ к важным данным в Вашей MajorDoMo. Для предоставления только что созданному пользователю привилегий, необходимо выполнить команду:

sudo mysql -uroot -p -e "GRANT ALL PRIVILEGES ON *.* TO 'majordomo'@'%';" 1 sudo mysql -uroot -p -e "GRANT ALL PRIVILEGES ON *.* TO 'majordomo'@'%';" И в завершение, необходимо обновить привилегии:

sudo mysql -uroot -p -e "FLUSH PRIVILEGES;" 1 sudo mysql -uroot -p -e "FLUSH PRIVILEGES;" Установка WEB сервера В качестве web сервера можно поставить разные пакеты.

Установка на основе Apache. sudo apt-get install apache2 apache2-utils -y 1 sudo apt-get install apache2 apache2-utils -y Правим конфиг Апача

sudo nano /etc/apache2/sites-available/default 1 sudo nano /etc/apache2/sites-available/default Если такого файла нет, он может называться по-другому. Например:

000-default.conf 1 000-default.conf В этом файле находим раздел:

<Directory /> 1 <Directory /> И заменяем во всех совпадениях

AllowOverride None 1 AllowOverride None на

AllowOverride All 1 AllowOverride All Сохраняемся и выходим: Ctrl-O Ctrl-X В более новых версиях Apache конфигурационный файл может не содержать директив "AllowOverride". В таком случае необходимо вручную привести файл к виду:

<VirtualHost *:80>

 DocumentRoot /var/www/html
 <Directory />
   Options FollowSymLinks
   AllowOverride All
 </Directory>
 <Directory /var/www/html>
   Options Indexes FollowSymLinks MultiViews
   AllowOverride All
   Order allow,deny
   allow from all
 </Directory>
 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
 <Directory "/usr/lib/cgi-bin">
   AllowOverride None
   Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
   Order allow,deny
   Allow from all
 </Directory>
 ErrorLog ${APACHE_LOG_DIR}/error.log
 CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 <VirtualHost *:80>

 DocumentRoot /var/www/html
 <Directory />
   Options FollowSymLinks
   AllowOverride All
 </Directory>
 <Directory /var/www/html>
   Options Indexes FollowSymLinks MultiViews
   AllowOverride All
   Order allow,deny
   allow from all
 </Directory>

 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
 <Directory "/usr/lib/cgi-bin">
   AllowOverride None
   Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
   Order allow,deny
   Allow from all
 </Directory>

 ErrorLog ${APACHE_LOG_DIR}/error.log
 CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost> Удаляем стандартный index.html файл командой:

sudo rm -f /var/www/html/index.html 1 sudo rm -f /var/www/html/index.html И перезапускаем Апач:

sudo apache2ctl restart 1 sudo apache2ctl restart Если при перезапуске выдаст примерно такой ответ:

apache2: 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 1 apache2: 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

sudo nano /etc/apache2/apache2.conf 1 sudo nano /etc/apache2/apache2.conf Вставив в него такую строку:

ServerName localhost 1 ServerName localhost Сохраняемся и выходим: Ctrl-O Ctrl-X

Перезапускаем Апач

sudo apache2ctl restart 1 sudo apache2ctl restart Если ваша версия Apache отличается от рассматриваемой, то пути к файлам конфигурации могут быть такими:

sudo nano /etc/apache2/sites-available/default.conf 1 sudo nano /etc/apache2/sites-available/default.conf sudo nano /etc/apache2/httpd.conf 1 sudo nano /etc/apache2/httpd.conf Устанавливаем PHP sudo apt-get install php php-cgi php-cli php-pear php-mysql php-mbstring php-xml -y 1 sudo apt-get install php php-cgi php-cli php-pear php-mysql php-mbstring php-xml -y curl и его библиотеки:

sudo apt-get install curl libcurl3 libcurl3-dev php-curl -y 1 sudo apt-get install curl libcurl3 libcurl3-dev php-curl -y Для apache

sudo apt-get install libapache2-mod-php -y 1 sudo apt-get install libapache2-mod-php -y Для последних версий Апача необходимо включить работу с коротким тегом <? /?> для этого откройте файл php.ini командой:

sudo nano /etc/php/7.0/apache2/php.ini 1 sudo nano /etc/php/7.0/apache2/php.ini Необходимо заменить или вставить строку:

short_open_tag = On 1 short_open_tag = On Устанавливаем PHPMYADMIN sudo apt-get install phpmyadmin -y 1 sudo apt-get install phpmyadmin -y Установщик изначально спросит о том, к какой версии web сервера необходимо произвести настройку. Необходимо выбрать версию apache2 путём нажатия пробела и Enter.

Установщик спросит необходимость конфигурирования баз данных при помощи "dbconfig-common". Отвечаем утвердительно путём нажатия Enter.

Далее установщик спрашивает пароль MySQL сервера. Этот пароль задавался в разделе "Устанавливаем MySQL" данного руководства. Вводим указанный пароль и подтверждаем его ещё раз.

Включаем mod_rewrite sudo a2enmod rewrite 1 sudo a2enmod rewrite Перезапускаем Апач

sudo apache2ctl restart 1 sudo apache2ctl restart Настройка PHP В обоих конфигурационных файлах для web сервера:

sudo nano /etc/php/7.0/apache2/php.ini 1 sudo nano /etc/php/7.0/apache2/php.ini И файл запуска php скриптов из командной строки:

sudo nano /etc/php/7.0/cli/php.ini 1 sudo nano /etc/php/7.0/cli/php.ini Строку error_reporting привести к виду:

error_reporting = E_ALL & ~E_NOTICE 1 error_reporting = E_ALL & ~E_NOTICE А так же строки:

max_execution_time - С 30 меняем на 90 1 max_execution_time - С 30 меняем на 90 max_input_time - С 60 на 180 1 max_input_time - С 60 на 180 post_max_size - С 8M на 200M 1 post_max_size - С 8M на 200M upload_max_filesize - С 2M на 50M 1 upload_max_filesize - С 2M на 50M max_file_uploads - С 20 на 150 1 max_file_uploads - С 20 на 150 Для применения изменений, необходимо перезапустить Apache:

sudo /etc/init.d/apache2 restart 1 sudo /etc/init.d/apache2 restart Устанавливаем MajorDoMo Скачиваем дистрибутив Majordomo, разархивируем и копируем содержимое majordomo-master в директорию /var/www/html:

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 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 Настройка прав на файлы и директории Установка рекомендуемых прав выполняется следующими командами: Для файлов:

sudo find /var/www/html/ -type f -exec chmod 0644 {} \; 1 sudo find /var/www/html/ -type f -exec chmod 0644 {} \; Для директорий:

sudo find /var/www/html/ -type d -exec chmod 0755 {} \; 1 sudo find /var/www/html/ -type d -exec chmod 0755 {} \; Проверяем права командой:

ls -lh /var/www/html 1 ls -lh /var/www/html Права будут выглядеть подобно: Для директорий:

drwxr-xr-x 1 drwxr-xr-x Для файлов:

-rw-r--r-- 1 -rw-r--r-- Установка собственника и группы на файлы и директории Majordomo (а именно сервисы: apache и php) работает от пользователя www-data. Права доступа к каталогу /var/www/html, где лежат файлы Majordomo по умолчанию принадлежат root. Изменим владельца директории /var/www/html на www-data.

sudo chown -R www-data:www-data /var/www/html 1 sudo chown -R www-data:www-data /var/www/html Проверяем:

ls -lh /var/www/html 1 ls -lh /var/www/html Вывод должен быть подобный:

-rw-r--r-- 1 www-data www-data 12K May 26 22:19 cycle.php 1 -rw-r--r-- 1 www-data www-data 12K May 26 22:19 cycle.php Теперь необходимо предоставить доступ пользователю www-data к медиа устройствам. Для этого его необходимо добавить в группу audio.

Это делается командой usermod:

sudo usermod -a -G audio www-data 1 sudo usermod -a -G audio www-data Проверяем, что он появился в группе:

cat /etc/group | grep audio 1 cat /etc/group | grep audio Если всё в порядке, то вывод будет подобный:

audio:x:29:www-data 1 audio:x:29:www-data Дальнейшие команды нужно использовать только в случае если у Вас по какой-то причине система не работает совсем или не работает частично. В большинстве случаев на моменте начального конфигурирования, проблемы с системой возникают из-за неправильно установленных прав.

Меняем права доступа к файлам по принципу: всем-всё.

sudo find /var/www/html/ -type f -exec chmod 0666 {} \; 1 sudo find /var/www/html/ -type f -exec chmod 0666 {} \; И директориям

sudo find /var/www/html/ -type d -exec chmod 0777 {} \; 1 sudo find /var/www/html/ -type d -exec chmod 0777 {} \; Проверяем права командой:

ls -lh /var/www/html 1 ls -lh /var/www/html Права будут выглядеть подобно: Для директорий:

drwxrwxrwx 1 drwxrwxrwx Для файлов:

-rw-rw-rw- 1 -rw-rw-rw- В случае если права по какой-то причине не установились, то можно сделать вариант в котором устанавливаются полные права для всех рекурсивно по директориям и файлам. Команда выглядит так:

sudo chmod -R 777 /var/www/html 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". В нижней части окна нажать "Вперёд". После успешного импорта должна отобразится зелёная строка с подобным текстом:

Импорт успешно завершён, выполнено 171 запросов. (db_terminal.sql) 1 Импорт успешно завершён, выполнено 171 запросов. (db_terminal.sql)

В случае если возникли проблемы с импортом БД используя phpMyAdmin, есть возможность импортировать дамп БД используя командную строку. Для этого скачайте дамп файл командой:

sudo wget -O /tmp/db_terminal.sql https://raw.githubusercontent.com/sergejey/majordomo/master/db_terminal.sql 1 sudo wget -O /tmp/db_terminal.sql https://raw.githubusercontent.com/sergejey/majordomo/master/db_terminal.sql И импортируйте его:

sudo mysql -umajordomo -p db_terminal < /tmp/db_terminal.sql 1 sudo mysql -umajordomo -p db_terminal < /tmp/db_terminal.sql Будет запрошен пароль пользователя majordomo, который был задан на шаге: "Создание пользователя и БД MySQL".

Правим основной конфиг Изначально копируем пример конфига в рабочий конфиг:

sudo cp /var/www/html/config.php.sample /var/www/html/config.php 1 sudo cp /var/www/html/config.php.sample /var/www/html/config.php Установим собственника и группу для конфига:

sudo chown www-data: /var/www/html/config.php 1 sudo chown www-data: /var/www/html/config.php И открываем конфиг для редактирования:

sudo nano /var/www/html/config.php 1 sudo nano /var/www/html/config.php Прописываем имя пользователя и пароль пользователя БД. Для этого нужно исправить строки:

Define('DB_USER', 'majordomo'); Define('DB_PASSWORD', ); 1 2 Define('DB_USER', 'majordomo'); Define('DB_PASSWORD', ); Где: DB_USER - пользователь majordomo который был создан на шаге: "Создание пользователя и БД MySQL". DB_PASSWORD - пароль от этого пользователя, который был задан на том же шаге. Сохраняем файл, и выходим из редактора. Все, теперь можно зайти на веб интерфейс Majordomo.

http://localhost/ 1 http://localhost/ Или:

http://sever_ip/ 1 http://sever_ip/ Если установка выполняется не на локальную машину. При первом входе должна быть отображена страница: "Hello, world! :)" на которой необходимо выбрать тайм зону, язык системы и цветовую тему. По завершении нажать кнопку "Continue". В случае если такая страница не отобразилась, открыть её можно по ссылке:

http://localhost/popup/first_start.html 1 http://localhost/popup/first_start.html Основной цикл Вариант 1. Systemd unit. Предпочтительный Код юнита:

[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 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 Для этого открываем файл:

sudo nano /etc/systemd/system/majordomo.service 1 sudo nano /etc/systemd/system/majordomo.service И вставляем в него код, который представлен выше. Для автозапуска MajorDoMo при старте системы, необходимо выполнить команду:

sudo systemctl enable majordomo 1 sudo systemctl enable majordomo И для запуска MajorDoMo необходимо выполнить:

sudo systemctl start majordomo 1 sudo systemctl start majordomo Основной цикл Вариант 2. Если не сработал первый вариант Запуск основного цикла добавляем в Cron, для пользователя www-data, так как файлы МД принадлежат этому пользователю.

sudo crontab -e -u www-data 1 sudo crontab -e -u www-data В открывшемся окне добавляем строку:

@reboot /usr/bin/php /var/www/html/cycle.php 1 @reboot /usr/bin/php /var/www/html/cycle.php И обязательно! ставим Enter для того чтобы в конце открытого файла был перенос строки. Сохраняем и перезапускаем компьютер:

sudo reboot 1 sudo reboot После запуска циклов можно открыть MajorDoMo по адресу:

http://localhost/ 1 http://localhost/ В случае если MajorDoMo устанавливалась на локальный компьютер. Или:

http://IP_ADDRESS/ 1 http://IP_ADDRESS/ Если MajorDoMo устанавливалась на удалённый сервер.

Если не выполняются onNewMinute и onNewHour Нужно проверить настройку BASE_URL в config.php. Если Вы используете домен, а не IP, тогда добавьте в файл /etc/hosts строку вида:

127.0.0.1 domain.com 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