Установка Majordomo, phpmyadmin на Archlinux

Проблемы/вопросы, связанные с запуском под различными платформами и конфигурациями.

Модератор: immortal

Ответить
kd0t
Сообщения: 67
Зарегистрирован: Пт дек 27, 2013 11:20 pm
Благодарил (а): 5 раз
Поблагодарили: 2 раза

Установка Majordomo, phpmyadmin на Archlinux

Сообщение kd0t » Сб янв 04, 2014 3:42 am

На домашнем сервере висят сервисы: Majordomo, UPnP-сервер Plex, файл-сервер (Samba, NFS), система видеонаблюдения Motion (ранее был Zoneminder), торрент-клиент Transmission. Железо - пылившийся полгода на полке нетбук (HANNSbook SN10E2). Ось - Archlinux.
Удобным считаю сервер без GUI, практически все конфигурирование осуществляется по сети через SSH, поэтому базовая установка ограничена пакетами base, grub-bios,(base-devel для установки из AUR), далее с этого момента.
Первым делом отрешимся от сервера на чердаке (в кладовке), добавив в систему файловый менеджер и SSH-сервер:
 pacman -Sy && pacman -S --noconfirm mc openssh 
 systemctl enable sshd && systemctl start sshd
Настройка ssh для домашней сетиПоказать
Большинство из устройств домашней сети работают под управлением Linux, сюда же отношу и Android-устройства: сервер, рабочий ПК и ноубук - Arch, несколько роутеров исполняющих различные функции под OpenWRT, смарфоны, планшеты, тв-пк - Android. Для всех перечисленных платформ доступны SSH-сервер и клиент. Кроме доступа к консоли устройства, SSH обладает еще рядом несомненных преимуществ - возможностью проксирования, пробросом портов, графической оболочки и доступом к удаленной файловой системе посредством sftp. Для домашней сети удобна безпарольная аутентификация по ключу. Так, воспользовавшись на домашнем ПК утилитой ssh-keygen генерируем пару ключей, затем ssh-copi-id root@myserver - копирует мой ключ на серер (я делаю это в переборе практически для всех устройств дома кроме сматрфона и планшета, которые могут "потеряться"). Далее создаю для этих устройств файл config (Так повелось, что домен домашней сети по предложению OenWRT у меня lan, то есть сервер дразнится, например, server.lan).
touch ~/.ssh/config и заполняю примерно так:
Host *.lan
User root
Compression yes
ControlMaster yes
PasswordAuthentication no

Host server
Hostname server.lan

Host router
Hostname router.lan

Host pc
Hostname pc.lan

Host tvbox
Hostname tvbox.lan
User android
Port 2222

Host camview
Hostname camview.lan

Host phone
Hostname phone.lan
и копирую этот файл на необходимые устройства, устанавливая права доступа на запись и чтение только для владельца файла на данном устройстве. Теперь могу под Linux-Android - пользоваться безпарольной аутенификацией, подключаясь просто ssh server. Так же становится доступным из под Linux sftp-доступ ко всем девайсам, где запущен sshd. Большой плюс SSH в том, что мне не нужно открывать на роутере никаких портов во внешний мир ,кроме ssh, который я предлагаю для большей безопасности установить отличным от стандартного 22. Теперь для подключения извне к домашним сервисам я могу просто пробросить порты, получая при этом защищенное подключение из любой точки мира, пользуясь даже общественными сетями. Конечно ресурсов домашнего роутера в данном случае не хватит на, например, просмотр FullHD- видео из домашнего архива, но в остальном все ок :)
Вдохновила эта статья на Хабре
Если сервером выступает ноутбук, как в моем случае, целесообразно подправить файл /etc/systemd/logind.conf
#Ищем строку  HandleLidSwitch, раскоментируем и правим 
 HandleLidSwitch=ignore
Теперь при закрытии крышки ноутбука, он не будет уходить в гибернацию.
Далее, переместившись в уютное кресло, можно работать с сервером через ssh/sftp. (Для Windows-пользователей PuTTY, FileZilla).
Собственно, для запуска Majordomo необходимы только Apache, PHP, MySQL. Разумным считаю добавить сразу Phpmyadmin.
 pacman -S --noconfirm mariadb php php-apache php-mcrypt php-gd apache phpmyadmin #устанавливаем
 systemctl enable httpd mysqld && systemctl start mysqld #даем право на старт при загрузке системы Апачу  и  Мускулу, запускаем последний
 mysql_secure_installation  #устанавливаем пароль root'а к mysql
 systemctl restart mysqld
Настраиваем /etc/php/php.ini. Здесь есть скользкий момент, или запускать PHP в Safe Mode, как он настроен изначально, для нормальной работы Majordomo в этом случае нужно будет искать папки в которых живут важные для работы скрипты, которые в Safe Mode не работают (по себе знаю что такими функциями точно являются обновление Majordomo и установка программ из маркета дополнений), либо, если это не критично для вас, поступить как я и убрать все настройки опции open_basedir :
 short_open_tag = On # важно! majordomo
 open_basedir =  # !!!ВНИМАНИЕ!!!Если запуск PHP в Safe Mode не нужен, правим эту опцию так, иначе , смотри чуть выше
 error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE # важно! majordomo
# раскоментируем следующие модули php
extension=gd.so # для majordomo
 extension=iconv.so # важно! majordomo
 extension=mcrypt.so # для phpmyadmin
 extension=mysqli.so # для phpmyadmin
 extension=mysql.so # для majordomo, phpmyadmin
 extension=openssl.so # важно! majordomo
 
Редактируем /etc/httpd/conf/httpd.conf Настройки приведены для Apache 2.4 и выше :
# В конце блока LoadModule добавляем 
  LoadModule php5_module modules/libphp5.so
#Проверяем, чтобы был раскоментирован
  LoadModule rewrite_module modules/mod_rewrite.so # Важно для обработки .htaccess Majordomo
#Для нормального взаимодействия Apache 2.4.x и PHP меняем
#LoadModule mpm_event_module modules/mod_mpm_event.so на
  LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
# В секции <Directory "/srv/http"> меняем
 AllowOverride All #для majordomo
 Require all granted #для majordomo
# В конце файла добавляем
 Include conf/extra/php5_module.conf
 Include conf/extra/httpd-phpmyadmin.conf # для phpmyadmin
 
Добавляем в /etc/httpd/conf/mime.types :
 application/x-httpd-php       php    php5
#Создаем conf файл для phpmyadmin
 touch /etc/httpd/conf/extra/httpd-phpmyadmin.conf
#Заполняем его следующим содержимым в любимом редакторе
 Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"
 <Directory "/usr/share/webapps/phpMyAdmin">
        DirectoryIndex index.html index.php
        AllowOverride All
        Options FollowSymLinks
        Require all granted
 </Directory>
 
Проверяем конфиг апача:
 apachectl -S
Устанавливаем Majordomo :
 cd ~
 curl -O http://smartliving.ru/download/_majordo ... 70b.tar.gz
 tar xfz _majordomo_linux_070b.tar.gz
 chown -R http:http html
#!!!!Если хотим использовать базовую версию с сайта, далее идем таким путем:
 mv html/.htaccess /srv/http && mv html/* /srv/http && rm -R html
#!!!!Если хотим быть на передовой, можем использовать версию с git:
 pacman -S --noconfirm git
 git clone git://github.com/sergejey/majordomo /srv/http
 mkdir /srv/http/cached
 mv html/config.php /srv/http && rm -R html
 chown -R http:http /srv/http
#далее, для обновления системы в любой момент времени можем сделать:
 cd /srv/http
 git pull
 chown -R http:http /srv/http
 systemctl restart majordomo httpd
Создаем базу для Majordomo и импортируем в нее таблицы из дампа :
  mysql -u root -p # входим с паролем созданным ранее
  MariaDB [(none)]>  CREATE DATABASE db_terminal;
  MariaDB [(none)]> exit
  mysql -u root -p db_terminal < ~/db_terminal.sql
  rm ~/db_terminal.sql ~/_majordomo_linux_070b.tar.gz
Редактируем /srv/http/config.php,как минимум вписываем пароль к mysql .

Создаем юнит для запуска скриптов Majordomo :
 touch /etc/systemd/system/majordomo.service
# И заполняем его
 [Unit]
 Description=Majordomo Service
 After=mysql.service
 
 [Service]
 User=http
 ExecStart=/usr/bin/php /srv/http/cycle.php
 Restart=always

 [Install]
 WantedBy=multi-user.target
# затем выполняем
  systemctl enable majordomo && systemctl start httpd majordomo
Просмотреть лог выполнения скриптов Majordomo можно командой :
 systemctl status majordomo
Если хотим подарить Алисе голос :
 pacman -S --noconfirm alsa-utils mplayer
# Настраиваем громкость
 alsamixer
# Даем голос
 gpasswd -a http audio
Установка Majordomo на Archlinux завершена, phpmyadmin доступен по http://IP-сервера/phpmyadmin .
Автоочистка логов mysqlПоказать
Для автоочистки бинарных логов mysql внести в /etc/mysql/my.cnf:
[mysqld] # В этот блок

expire_logs_days = 7 # вносим строку , вместо 7  - нужное количество дней
 
Простой перенос баз mysqlПоказать
Если, по какой-либо причине, есть необходимость перенести БД в другое место, на другой носитель, - просто создаем символическую ссылку:
 systemctl stop mysqld
 mv /var/lib/mysql /куда-хочу-перенести/mysql
 ln -s /куда-перенес/mysql  /var/lib/mysql
 systemctl start mysqld
4 и более камер в motionПоказать
При необходимости работать более чем с 3-мя камерами в motion, создаем и запускаем копию демона:
 mkdir /etc/motion2 && cp /etc/motion/motion.conf /etc/motion2 && cp /usr/lib/systemd/system/motion.service /usr/lib/systemd/system/motion2.service;
#Если нужно, создаем новые thread.conf - файлы, не забываем прописать их в /etc/motion2/motion.conf
 touch /etc/motion2/thread{1..3}.conf
Правим при необходимости /etc/motion2/motion.conf, прописываем пути к thread-файлам, наполняем сами thread-файлы и правим файл настроек юнита systemd /usr/lib/systemd/system/motion2.service:

[Unit]
Description=Motion daemon
After=local-fs.target

[Service]
EnviromentFile=/etc/motion2/motion.conf
ExecStart=/usr/bin/motion2 -c /etc/motion2/motion.conf
Type=forking
#StandardOutput=null
StandardError=null

[Install]
WantedBy=multi-user.target
Управление:
 systemctl enable motion2 #разрешаем автозапуск
 systectl start motion2 #запускаем
 systemctl restart motion2 #перезапкскаем
 systemctl stop motion2 #останавливаем
 systemctl status motion2 #смотрим статус и логи
 
Если камер более 6-ти , соответственно создаем 3-ю копию демона и т.д.
Простое проксирование вывода motion и других приблуд apache'мПоказать
При использовании motion, для удобства работы вне домашней сети, можно настроить Apache проксировать его вывод.
Нахожу удобным для себя проксировать инерфейс веб-управления kodi(xbmc) и transmission, которые активно используются в домашней сети. Выше писал, для домашней сети роутер использует домен lan. kodi живет на паре домашних android tv-box'ов, transmission и motion работают на сервере.
Редактируем /etc/httpd/conf/httpd.conf Настройки приведены для Apache 2.4 и выше :
#Должна быть раскомментирована строка
LoadModule proxy_module modules/mod_proxy.so 
#Добавляем в конце файла строку
Include conf/extra/proxy_module.conf
Далее создаем этот самый proxy_module.conf:
touch /etc/httpd/conf/extra/proxy_module.conf 
и наполняем содержимым:
<IfModule proxy_module>
ProxyRequests Off
<Proxy *>
AddDefaultCharset off
Require all granted
</Proxy>
ProxyVia On

<Location /motion/kam>
ProxyPass http://127.0.0.1:8081
#http://127.0.0.1:8081, берем из нашего /etc/motion/motion.conf, если камера одна
#или из /etc/motion/thtread1.conf,- если камер несколько 
#добавляем аналогичные секции Location по аналогии из thread2 - threadN - для всех наших камер.
</Location>

<Location /tvbox> #Для проксирования веб-интефеса управления kodi(xbmc)
ProxyPass http://tvbox.lan:8080/
ProxyPassReverse http://tvbox.lan:8080/
</Location>

<Location /tvbox/jsonrpc>
ProxyPass http://tvbox.lan:8080/jsonrpc
ProxyPassReverse http://tvbox.lan:8080/jsonrpc
</Location>

<Location /jsonrpc>
ProxyPass http://tvbox.lan:8080/jsonrpc
ProxyPassReverse http://tvbox.lan:8080/jsonrpc
</Location>

<Location /transmission>
ProxyPass http://127.0.0.1:9091/transmission
ProxyPassReverse http://127.0.0.1:9091/transmission
</Location>
</IfModule>
Синхронизация времени в доманей сети посредством NTPПоказать
Для синхронизации времени в домашней сети удобно использовать локальный NTP-сервер. Таким образом мы уменьшаем нагрузку на сервера точного времени, сокращая в разы количество запросов к ним, и даже в отсутствии интернета можем быть уверенны в синхронности времени на всех поддерживающих NTP устройствах. Роль локального NTP-сервера у меня выполняет роутер, прошитый OpenWRT.(Он всегда в сети, не загружен как раньше файлообменом и другими видами спорта).Соответствующая статья по настройке. Для рутованных Android-клиентов прекрасно подойдет ClockSync. Для сервера, домашнего ПК и бука под Archlinux, достаточно задействовать встроенный в systemd сервис:
timedatectl set-ntp true и отредактировать файл /etc/systemd/timesyncd.conf с поправкой на ip своего локального ntp-сервера:
[Time]
NTP=192.168.1.1
FallbackNTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org
Затем перезапускаем сервис: systemctl restart systemd-timesyncd

Для желающих сделать NTP-сервером ПК с MD - вики по настройке..
Последний раз редактировалось kd0t Вт ноя 04, 2014 12:07 am, всего редактировалось 23 раза.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Установка Majordomo, phpmyadmin на Archlinux

Сообщение sergejey » Пн янв 06, 2014 12:08 am

Полезно, спасибо!

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
DiArt
Сообщения: 210
Зарегистрирован: Пт апр 12, 2013 2:27 pm
Откуда: Уфа
Благодарил (а): 28 раз
Поблагодарили: 16 раз

Re: Установка Majordomo, phpmyadmin на Archlinux

Сообщение DiArt » Ср янв 08, 2014 11:52 am

Я думаю необходимо в вики добавить эту информацию.
Система на Неттоп 3Q Nettop Qoo!
(Intel Celeron J1800, 2x2410 МГц, 4096 Мб, HDD 1000 Гб, HDMI, VGA , Wi-Fi, Ethernet, Ubuntu 14.04.2)
Вторая система на Raspberry Pi 3.
D-Link DCS-930L/Broadlink RM2-Pro/BroadLink SP3 CC/Ginzzu HS-K07W
Я в CONNECT
clark2
Сообщения: 10
Зарегистрирован: Пт янв 11, 2013 1:12 pm
Благодарил (а): 0
Поблагодарили: 1 раз

Re: Установка Majordomo, phpmyadmin на Archlinux

Сообщение clark2 » Сб янв 11, 2014 12:53 am

Класс!
Попробовал на Cubietruck , ArchLinux_nand.

Звук не заработал.
Подправил в lib/common.class.php
safe_exec('mplayer ' . $filename, $exclusive, $priority); на safe_exec('/usr/bin/mplayer ' . $filename, $exclusive, $priority);
Все ОК.

Теперь, я так понимаю, надо бы базу на винт перенести и еще может чего? Не подскажете?

PS
Ага, медиа не играет.
kd0t
Сообщения: 67
Зарегистрирован: Пт дек 27, 2013 11:20 pm
Благодарил (а): 5 раз
Поблагодарили: 2 раза

Re: Установка Majordomo, phpmyadmin на Archlinux

Сообщение kd0t » Сб янв 11, 2014 12:09 pm

clark2 писал(а):Класс!
Попробовал на Cubietruck , ArchLinux_nand.
Интересное решение, у Вас какая версия платы и что можете сказать по производительности? Базу и /srv - каталог вынес бы на отдельный винт однозначно. Медиа в Majordomo , насколько я понимаю, проигрывается vlc либо xbmc. Я отказался от этого - поднимать Х-ы на сервере мне неприемлемо в силу "религиозных" :D предрассудков. Вместо этого поставил UPnP - сервер PLEX, который вещает медиа на телефоны и домашние ПК с выводом на телевизор, где живет XBMC. Громоздко и неудобно, поэтому планирую каждому телевизору взять по андроид-донглу с HDMI-выходом и XBMC на борту.
clark2
Сообщения: 10
Зарегистрирован: Пт янв 11, 2013 1:12 pm
Благодарил (а): 0
Поблагодарили: 1 раз

Re: Установка Majordomo, phpmyadmin на Archlinux

Сообщение clark2 » Пн янв 13, 2014 1:21 am

Плата: Cubietruck (A20), Cubieboard3 Cortex-A7 Dual-Core 2GB RAM/8GB Flash with Wifi + BT + подключил аккумулятор LiPO 3,7V, 4000mAh
Попробовал так, на поиграться.
Установил ArchLinux_nand образ и по вашей инструкции MJD.

Для сравнения плата DN2800mt + HDD 2,5", Debian wheezy.

Оба линукса читаю данные одного температурного датчика с внешнего 1_wire сервера.
Глубоких настроек обеих линуксов не производилось.
Вложения
top_wheezy.jpg
Debian
top_wheezy.jpg (93.83 КБ) 16932 просмотра
top_cubier.jpg
Arch
top_cubier.jpg (96.39 КБ) 16932 просмотра
kd0t
Сообщения: 67
Зарегистрирован: Пт дек 27, 2013 11:20 pm
Благодарил (а): 5 раз
Поблагодарили: 2 раза

Re: Установка Majordomo, phpmyadmin на Archlinux

Сообщение kd0t » Пн янв 13, 2014 9:35 pm

clark2, спасибо Вам большое за сравнение. Для себя ищу замену нетбуку на роль сервера, присматривался к Cubieboard3 и платам с интегрированным CPU, которые несомненно выглядят вкуснее. Так же думаю под Majordomo и мускул в дальнейшем использовать отдельный винт.
clark2
Сообщения: 10
Зарегистрирован: Пт янв 11, 2013 1:12 pm
Благодарил (а): 0
Поблагодарили: 1 раз

Re: Установка Majordomo, phpmyadmin на Archlinux

Сообщение clark2 » Пн янв 13, 2014 11:13 pm

Еще платы интересные тем, что:
Cubietruck (ARM) - RTC and support for Li-battery;
DN2800MT (Atom) - msata, 8-19V DC power supply. Можно UPS типа ADD-155A прицепить.

Обе бесшумные.
Ответить