Установка MajorDoMo на OrangePi Prime

Установка MajorDoMo на OrangePi Prime (Armbian 23.x)

1. Обновление системы

sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y

2. Базовые утилиты

sudo apt install -y sudo git curl wget unzip htop mc net-tools

3. Настройка пользователя

Создай пользователя pi (если не сделал) и добавь в sudo:

sudo usermod -aG sudo pi

4. Проверка памяти

Armbian по умолчанию включает zram swap (~1 ГБ). Проверить:

free -h swapon --show

Должен быть /dev/zram0.

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

apt-get install ssh -y

5. Установка MariaDB

sudo apt install -y mariadb-server mariadb-client

Настройка безопасности:

sudo mysql_secure_installation

Задай пароль root, на все вопросы отвечай Y.


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

mysql -uroot -p -e "CREATE DATABASE db_terminal;" mysql -uroot -p -e "CREATE USER 'majordomo'@'localhost' IDENTIFIED BY 'СЛОЖНЫЙ_ПАРОЛЬ';" mysql -uroot -p -e "GRANT ALL PRIVILEGES ON db_terminal.* TO 'majordomo'@'localhost';" mysql -uroot -p -e "FLUSH PRIVILEGES;"

7. Установка Apache

sudo apt install -y apache2 apache2-utils

Конфиг виртуального хоста /etc/apache2/sites-available/000-default.conf или /etc/apache2/sites-available/default:

<VirtualHost *:80> ServerName localhost DocumentRoot /var/www/html <Directory /var/www/html> Options FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>

Включаем модуль rewrite:

sudo a2enmod rewrite sudo systemctl restart apache2

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

rm -f /var/www/html/index.html

И перезапускаем Апач:

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

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

nano /etc/apache2/apache2.conf

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

ServerName localhost

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

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

apache2ctl restart

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

nano /etc/apache2/sites-available/default.conf

nano /etc/apache2/httpd.conf

8. Установка PHP

sudo apt install -y php php-cli php-common libapache2-mod-php \ php-mysql php-gd php-curl php-xml php-mbstring php-zip

Перезапуск:

sudo systemctl restart apache2

9. Настройка PHP

В обоих файлах /etc/php/8.2/apache2/php.ini и /etc/php/8.2/cli/php.ini поправь строки:

memory_limit = 256M max_execution_time = 90 max_input_time = 180 upload_max_filesize = 200M post_max_size = 200M max_file_uploads = 150 error_reporting = E_ALL & ~E_NOTICE date.timezone = Europe/Berlin
short_open_tag = On если используешь старые скрипты

OPcache (очень рекомендую для скорости)

Обычно пакет уже стоит; проверь и включи в /etc/php/8.2/apache2/php.ini или /etc/php/8.2/mods-available/opcache.ini

opcache.enable = 1 opcache.memory_consumption = 128 opcache.interned_strings_buffer = 16 opcache.max_accelerated_files = 10000 opcache.validate_timestamps = 1 opcache.revalidate_freq = 2

Прочие полезные твики

Если в формах много полей (интеграции/таблицы) max_input_vars = 4000 Сессии живут дольше (если админка простаивает) session.gc_maxlifetime = 28800

Перезапуск Apache:

sudo systemctl restart apache2


10. Установка phpMyAdmin (первый вариант)

Загрузите phpMyAdmin на сервере Debian 10
phpMyAdmin не включен в репозиторий программного обеспечения Debian 10, поэтому мы должны вручную загрузить программное обеспечение.
Перейдите на страницу загрузки phpMyAdmin, чтобы проверить последнюю стабильную версию.
Затем выполните следующую команду, чтобы загрузить его.

wget https://files.phpmyadmin.net/phpMyAdmin/5.2.0/phpMyAdmin-5.2.0-all-languages.zip

Подсказка: Вы всегда можете использовать вышеуказанный формат URL для загрузки последней стабильной версии phpMyAdmin.
Просто замените 5.2.0 на номер последней версии.

Распакуйте.

apt install unzip
unzip phpMyAdmin-5.2.0-all-languages.zip


Переместите phpMyadmin  в /usr/share/каталог.

mv phpMyAdmin-5.2.0-all-languages /usr/share/phpmyadmin

Затем сделайте веб-сервером user ( www-data) в качестве владельца этого каталога.

chown -R www-data:www-data /usr/share/phpmyadmin

Создание конфигурации Apache для phpMyAdmin


Если вы хотите получить доступ к веб-интерфейсу phpMyAdmin из подкаталога, создайте фрагмент конфигурации с помощью следующей команды.



sudo nano /etc/apache2/conf-available/phpmyadmin.conf

Вставьте следующий текст в файл.

# phpMyAdmin on Apache 2.4 / PHP 8.x
Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php
    AllowOverride None
    Require all granted
</Directory>

# Закрываем служебные папки
<Directory /usr/share/phpmyadmin/templates>
    Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
    Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
    Require all denied
</Directory>


Сохраните и закройте файл. Затем включите этот фрагмент конфигурации.

a2enconf phpmyadmin.conf
sudo systemctl reload apache2


Установка phpMyAdmin (второй вариант из пакета)

sudo apt install -y phpmyadmin sudo a2enconf phpmyadmin sudo systemctl reload apache2

После этого панель доступна по адресу:
http://IP_OrangePi/phpmyadmin

Входи как пользователь majordomo (не root).

Нам также нужно создать временную папку phpMyAdmin.

mkdir -p /var/lib/phpmyadmin/tmp
chown www-data:www-data /var/lib/phpmyadmin/tmp


Перезагрузите Apache, чтобы изменения вступили в силу.

systemctl reload apache2

Включаем mod_rewrite

a2enmod rewrite

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

apache2ctl restart


11. Установка MajorDoMo (первый вариант)

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

mkdir ~/majordomo
cd ~/majordomo
wget https://github.com/sergejey/majordomo/archive/master.zip
unzip master.zip
cp -rp ~/majordomo/majordomo-master/* /var/www/html
cp -rp ~/majordomo/majordomo-master/.htaccess /var/www/html
rm -rf ~/majordomo


Установка MajorDoMo (второй вариант)

cd /var/www/html sudo rm -rf * sudo git clone https://github.com/sergejey/majordomo.git . sudo chown -R www-data:www-data /var/www/html


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

find /var/www/html/ -type f -exec chmod 0644 {} \;

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

find /var/www/html/ -type d -exec chmod 0755 {} \;

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

ls -lh /var/www/html

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

drwxr-xr-x

Для файлов:

-rw-r--r--

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

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

chown -R www-data:www-data /var/www/html

Проверяем:

ls -lh /var/www/html

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

-rw-r--r--  1 www-data www-data  12K May 26 22:19 cycle.php

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

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

usermod -a -G audio www-data

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

cat /etc/group | grep audio

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

audio:x:29:www-data


Далее пользователю www-data предоставляем доступ к выполнению команд через sudo.
Открываем файл visudo

sudo visudo

И добавляем строку

www-data ALL=(ALL) NOPASSWD:ALL → огромная дыра в безопасности.

Лучше такая запись:

www-data ALL=(ALL) NOPASSWD:/sbin/reboot,/sbin/poweroff,/usr/bin/systemctl restart majordomo

Тогда PHP сможет запускать только эти команды.
Сохраните и закройте файл.

Создай конфиг:

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

cp /var/www/html/config.php.sample /var/www/html/config.php

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

chown www-data: /var/www/html/config.php

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

nano /var/www/html/config.php


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

Define('DB_USER', 'majordomo');
Define('DB_PASSWORD', '');

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

Сохраняем файл, и выходим из редактора.

12. Импорт БД

Заходим по адресу:
Или:

Если phpadmin не открывается, замените localhost на IP вашего сервера, к примеру http://192.168.178.22/phpmyadmin

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

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

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

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

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


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

wget -O /tmp/db_terminal.sql https://raw.githubusercontent.com/sergejey/majordomo/master/db_terminal.sql

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

mysql -umajordomo -p db_terminal < /tmp/db_terminal.sql

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

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


Или: Если установка выполняется не на локальную машину.


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


14. Основной цикл Systemd unit. Открываем файл:

nano /etc/systemd/system/majordomo.service

И вставляем в него код юнита:

[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


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

systemctl daemon-reload
systemctl enable majordomo

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

systemctl start majordomo

Осталось только перезапустить систему командой:

sudo shutdown -r now

Всем успеха! Материал взят и малость переделан под свои нужды с сайта Majordomo.

Комментарии

Популярные сообщения из этого блога

Motor Shield L293D + Arduino

Перенос Armbian на SSD

Радиореле 220В 433МГц c кодировкой сигнала eV1527