Как установить MajorDoMo на Linux?

3. Как установить MajorDoMo? 18 комментариев

Как установить MajorDoMo на Linux

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

В первую очередь читайте readme.txt, который идёт вместе с дистрибутивом.

Перед началом работы необходимо убедиться что в системе установлен пакет sudo.

Для этого нужно выполнить команду:

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

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

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

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

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

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

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

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

Обновление кеша пакетов и обновление установленных пакетов (в случае если для них есть обновления)

Установим ещё пару приложений которые будем использовать в процессе установки

Устанавливаем SSH

Устанавливаем MySQL

Когда запросит установить пароль для root – укажите любой пароль, который Вы запомните. Этот пароль понадобится в дальнейшем.

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

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

Создание пользователя и БД MySQL:

Для начала создадим БД командой:

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

password - необходимо заменить на ваш пароль, который тоже необходимо запомнить. Этот пароль будет использоваться для работы MajorDoMo с БД, а так же для входа в phpMyAdmin ниже по инструкции.
Важно!!! Рекомендуется использовать сложный пароль, так как в случае если будет открыт доступ к MajorDoMo и phpMyAdmin извне, то есть вероятность того, что простой пароль будет взломан и тот, кто это сделает, сможет получить доступ к важным данным в Вашей MajorDoMo.
Для предоставления только что созданному пользователю привилегий, необходимо выполнить команду:

И в завершение, необходимо обновить привилегии:

Установка WEB сервера

В качестве web сервера можно поставить разные пакеты.

  • Установка на основе Apache.

    Правим конфиг Апача

    Если такого файла нет, он может называться по-другому. Например:

    В этом файле находим раздел:

    И заменяем во всех совпадениях

    на

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

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

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

    То необходимо поправить apache2.conf

    Вставив в него такую строку:

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

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

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

Устанавливаем PHP

curl и его библиотеки:

Для apache

Для последних версий Апача необходимо включить работу с коротким тегом <? /?> для этого откройте файл php.ini командой:

Необходимо заменить или вставить строку:

Устанавливаем PHPMYADMIN

Установщик изначально спросит о том, к какой версии web сервера необходимо произвести настройку. Необходимо выбрать версию apache2 путём нажатия пробела и Enter.

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

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

Включаем mod_rewrite

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

Настройка PHP

В обоих конфигурационных файлах для web сервера:

И файл запуска php скриптов из командной строки:

Строку error_reporting привести к виду:

А так же строки:

Для применения изменений, необходимо перезапустить Apache:

Устанавливаем MajorDoMo

Скачиваем дистрибутив Majordomo, разархивируем и копируем содержимое majordomo-master в директорию /var/www/html:

Настройка прав на файлы и директории

Установка рекомендуемых прав выполняется следующими командами:
Для файлов:

Для директорий:

Проверяем права командой:

Права будут выглядеть подобно:
Для директорий:

Для файлов:

Установка собственника и группы на файлы и директории

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

Проверяем:

Вывод должен быть подобный:

Теперь необходимо предоставить доступ пользователю www-data к медиа устройствам. Для этого его необходимо добавить в группу audio.

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

Проверяем, что он появился в группе:

Если всё в порядке, то вывод будет подобный:

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

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

И директориям

Проверяем права командой:

Права будут выглядеть подобно:
Для директорий:

Для файлов:

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

Необходимо заметить, что данный способ, не самый безопасный, но самый простой.

Импорт базы данных

Заходим по адресу:
http://localhost/phpmyadmin
Или:
http://localhost/phpmyadmin4

При входе будет запрошен логин, его необходимо указать как: majordomo, и пароль который который был задан на шаге: "Создание пользователя и БД MySQL".

В созданную ранее БД необходимо импортировать файл db_terminal.sql из директории с дистрибутивом. Скачать его можно по ссылке: db_termina.sql. Для скачивания нажмите правой кнопкой мыши на ссылку и выберите: "Сохранить ссылку как...".

Далее выполняем последовательность действий в phpMyAdmin для импорта sql файла.

  • В левой части окна выбрать БД db_terminal, путём нажатия один раз на её название.
  • В верхней части окна найти кнопку "Импорт".
  • В загрузившейся странице, в разделе "Импортируемый файл" нажать "Выберите файл" или "Обзор".
  • В открывшемся окне, выбрать ранее сохраненный файл "db_terminal.sql".
  • В нижней части окна нажать "Вперёд".

После успешного импорта должна отобразится зелёная строка с подобным текстом:


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

И импортируйте его:

Будет запрошен пароль пользователя majordomo, который был задан на шаге: "Создание пользователя и БД MySQL".

Правим основной конфиг

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

Установим собственника и группу для конфига:

И открываем конфиг для редактирования:

Прописываем имя пользователя и пароль пользователя БД. Для этого нужно исправить строки:

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

Все, теперь можно зайти на веб интерфейс Majordomo.

Или:

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

Основной цикл Вариант 1. Systemd unit. Предпочтительный

Код юнита:

Данный код необходимо скопировать в файл: /etc/systemd/system/majordomo.service Для этого открываем файл:

И вставляем в него код, который представлен выше.
Для автозапуска MajorDoMo при старте системы, необходимо выполнить команду:

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

Основной цикл Вариант 2. Если не сработал первый вариант

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

В открывшемся окне добавляем строку:

И обязательно! ставим Enter для того чтобы в конце открытого файла был перенос строки.
Сохраняем и перезапускаем компьютер:

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

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

Если MajorDoMo устанавливалась на удалённый сервер.

Arduino

Установка драйверов для Ардуины

Для настройки порта Ардуино Мега

Установка 1-wire

Установим owfs

Настройка:

Правим:

Разное

Для его нормальной работы необходимо запустить конфигуратор:

и выбрать "запустить с включённым SUID битом - да", "интервал проверок - 0", "запускать как сервис - нет"

Установка Midnight Commander

МЕДИА

Для проговаривания голосом:

Для проигрывания музыки

Автозапуск

Для доступа к vlc на порту 8080 с других машин необходимо в файле

раскоментировать нужную строчку. Без этого с других машин будет ошибка Forbidden 403.

Если есть необходимость проигрывать файлы с другой машины (например с NAS) необходимо примонтировать расшаренную директорию. Монтирование медиатеки: САМБА

Создаем точку монтирования

Автомонтирование

в конец

Установка в каталог, отличный от WWW

В /etc/apache2/ есть директории sites-available и sites-enabled.

default - отрабатывает /usr/var/www

если нужно просто установить в другую директорию и не использовать стандартный путь, можно изменить конфигурацию default

после изменения не забудьте

Если нужно использовать несколько сайтов - нужно создать дополнительные ссылки в /etc/apache2/sites-available

для этого

дальше нужно править его конфиг

Обратите внимание на ServerName, ServerAlias, DocumentRoot, Directory и 2шт AllowOverride

ServerName, ServerAlias - имя, при обращение с которым на данный сервер будет отрабатывать данный сайт (с www и без) DocumentRoot, Directory - путь к файлам

(так как подписано в sites-available)

Перегружаем конфиг apache2:

Принудительная синхронизация времени при загрузке

Ни в малине, ни в кубике нет часов и при запуске там всегда 01.01.1970. Это приводит к пропаданию последних записей из базы при перезагрузке. Поэтому необходимо прописать в крон при загрузке принудительную синхронизацию времени.

Под рутом набрать в консоли:

Вставить такую строчку:

Для начала советую набрать в командной строке

Если ошибок не будет, тогда уже вносить изменения в крон. Если будут ошибки - устранить

Подключение USB веб-камеры

Используем mjpg-streamer так как он не грузит процессор. Но детектора движения нет.

Установим необходимые пакеты

Сборка

Добавим пользователя (например у меня это majordomo) от которого будем запускать демон в группу video

Настроем запуск демона при перезагрузке

добавим строчку в конец

где 1280x720 - разрешение нашей камеры 8181 - порт вебсервера

Итого: вебинтерфейс камеры http://ip-adres:8181; видео: http://ip-adres:8181/?action=stream; фото: http://ip-adres:8181/?action=snapshot

Если нет картинки то читаем пост тут: https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=97983&start=25

Настройка HTTPS (Через nginx прокси)

Ставим nginx и openssl:

Создадим директорию где будем хранить сертификаты:

Перейдем в эту директорию и сгенерируем сертификат:

При генерации вас попросят указать некоторые данные, так как мы создаем сертификат для себя то заполнять их не обязательно. Но, если мы хотим использовать полученный сертификат для общения с другими сайтами, необходимо заполнить поле CN именем (или IP адресом) своего сервера, например так:

Настроим https прокси для MD с использованием нашего сертификата: (Тут предполагается, что MD крутится на этой-же машине, на 80 порту. Если нет, то пишем нужное в строке proxy_pass http://localhost:80/) Для этого приводим файл /etc/nginx/sites-enabled/default к следующему виду:

Перезапускаем nginx

Пробуем зайти к себе на сайт по https 🙂

Можно не генерировать самоподписанный сертификат, а взять бесплатный, например у StartSSL(как это сделать написано тут) или у WoSign(как это сделать написано тут)

Если не выполняются onNewMinute и onNewHour

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

Где domain.com - это Ваш домен который Вы используете. Комментарий Сергея с форума: Дело в том, что эти методы вызываются через внутреннюю функцию raseEvent, которая обращается к серверу через HTTP-запрос используя BASE_URL. Если он неправильный, то метод не вызовется.

Полезные темы на форуме

  1. Для быстрой установки необходимых атрибутов можно воспользоваться данным скриптом.
  2. Установка на Ubuntu
  3. Установка Системы Majordomo на Raspberry pi
  4. Установка на FreeBSD
  5. [РЕШЕНО] Проблема с установкой и настройкой на Ubuntu 13.04
  6. Установка на Debian подробная инструкция
  7. CubieBoard - попытка №1

 

Поделитесь в соц сетях

Теги:

 

 

18 thoughts on - Как установить MajorDoMo на Linux?

  • В пункте "Устанавливаем 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 не пускает в phpmyadmin. Пускает пользователя 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