Main

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

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

Перед началом работы обновим apt-get:

sudo apt-get update
sudo apt-get upgrade

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

sudo apt-get install nano wget -y

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

sudo apt-get install ssh -y

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

sudo apt-get install mysql-server mysql-client -y

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

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

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

Устанавливаем PHP5:

sudo apt-get install php5-cgi php5-cli php5 php-pear php5-xcache -y
sudo apt-get install curl libcurl3 libcurl3-dev php5-curl -y

Для apache

sudo apt-get install libapache2-mod-php5 -y

Для последних версий Апача необходимо включить работу с коротким тегом <? /?> для этого в /etc/php5/apache2/php.ini надо выставить short_open_tag = On

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

sudo apt-get install phpmyadmin -y

В процессе установки он попросит пароль для пользователя MySQL (который мы указали ранее) и новый пароль для подключения к phpmyadmin

Создадим ссылку в www

sudo ln -s /usr/share/phpmyadmin /var/www/phpmyadmin

Включаем mod_rewrite

sudo a2enmod rewrite

Убираем нотификации в логах PHP:

В обоих конфигах: Для веб-сервера

sudo nano /etc/php5/apache2/php.ini

Для запуска из командной строки

sudo nano /etc/php5/cli/php.ini

для error_reporting задать:

error_reporting  =  E_ALL & ~E_NOTICE

Update: Если вы переносите базу с windows-версии или переустановили Linux, то необходимо также изменить в php.ini

max_execution_time с 30 меняем на 90
max_input_time поменяем с 60 на 180 
post_max_size меняем с 8M на 200M 
upload_max_filesize меняем с 2M на 50M 
max_file_uploads меняем с 20 на 150

Обязательно перезапускаем Апач, чтобы изменения вступили в силу

sudo /etc/init.d/apache2 restart

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

Скачиваем дистрибутив Majordomo (имя последней версии можно посмотреть тут http://smartliving.ru/Main/Download), разархивируем и копируем содержимое html в папку /var/www/

mkdir /home/majordomo
cd /home/majordomo
wget http://majordomo.smartliving.ru/download/_majordomo_linux_100b.tar.gz
tar xvfz _majordomo_linux_100b.tar.gz
sudo cp -rp /home/majordomo/html/* /var/www
sudo cp -rp /home/majordomo/html/.htaccess /var/www

Первый вариант настройки прав (777)

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

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

и папкам

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

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

ls -lh /var/www

если права по какой-то причине не дались, а об этом говорят минусы вместо rwxrwxrwx. То есть совсем железобетонный вариант:

sudo chmod -R 777 /var/www

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

Второй вариант настройки прав (www-data).

Другое решение проблемы с правами следующее. Мажордом работает от пользователя www-data. Права доступа к каталогу /var/www, где лежат файлы Мажордом по умолчанию принадлежат root. Изменим владельца папки /var/www на www-data.

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

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

sudo usermod -a -G audio www-data

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

cat /etc/group | grep audio

ищем строку похожую на

audio:x:29:pi,www-data

для окончательной проверки еще можно запустить из консоли:

Код:
sudo -u www-data /usr/bin/mplayer /var/www/cached/voice/имяфайла.mp3

Должен быть звук. Перезапускаемся (чтобы пользователь обновился). И теперь пробуем через web интерфейс получить сообщение.

Если звук не появился, заходим в утилиту "top" и смотрим под каким пользователем запущен основной скрипт "cycle.php". Если под root или другим пользователем, и нет звука, то убиваем процесс и запускаем скрипт под своим текущем пользователем. И проверяем

Код:
sudo -u ваш_текущий_пользователь /usr/bin/mplayer /var/www/cached/voice/имяфайла.mp3

В случае появления звука, использовать автозапуск системы, согласно пункту "Основной цикл Вариант 1", описанному ниже.

Создание базы данных

Заходим по адресу http://majordomo_IP/phpmyadmin (http://localhost/phpmyadmin4) Создаем базу данных db_terminal и импортируем в нее db_terminal из папки с дистрибутивом. Создаем пользователя и даем ему права на базу данных.

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

sudo nano /var/www/config.php

Прописываем имя пользователя и пароль пользователя БД. Подробнее здесь здесь.

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

http://majordomo_IP/  (http://localhost/)

Основной цикл Вариант 1 (например для RPI, Ubuntu)

Запуск основного цикла добавляем в Cron, для пользователя majordomo (заменить на своего, под которым запущена система)

crontab -e -u majordomo

Или для ROOT

sudo nano /etc/crontab -e

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

@reboot /usr/bin/php /var/www/cycle.php

сохраняем, перезапускаем апач

Основной цикл Вариант 2 (например для Ubuntu)

для Ubuntu (Системы запуск которой основан на "Upstart init daemon job configuration") правильный вид запуска будет таким. Положить конфигурационый фал majordomo.conf в каталог

sudo nano /etc/init/majordomo.conf

Файл majordomo.conf

description     "MajorDoMo"
author          "http://smartliving.ru"

start on runlevel [2345]
stop on runlevel [!2345]

console none
respawn

script
  exec /usr/bin/php /var/www/cycle.php
end script

После этого можно запускать и останавливать главный цикл без перезагрузок ОС.

sudo start majordomo
sudo stop majordomo

Возможные проблемы.

Если не открывается /menu.html в браузере, то дело в том, что не отрабатывает .htaccess -- либо он не отрабатывает вовсе, либо не работает та часть, которая связана с модулем mod_rewrite. В первом случае надо проверить наличие AllowOverride All (есть), а во втором проверить что в настройках httpd.conf подключен модуль mod_rewrite (раскомментирована строчка типа LoadModule rewrite_module modules/mod_rewrite.so)

Arduino

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

sudo apt-get install arduino -y

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

stty -F /dev/ttyUSB0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts -hupcl

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

Установим owfs

sudo apt-get install owfs

Настройка:

nano /etc/owfs.conf

Правим:

! server: server = localhost:4304
# USB device: DS9490
server: usb = all
######################### OWFS ##########################
mountpoint = /mnt/1wire
allow_other
####################### OWHTTPD #########################
http: port = 2121
####################### OWFTPD ##########################
ftp: port = 2120
####################### OWSERVER ########################
server: port = localhost:4304

Разное:

sudo apt-get install motion -y (пакет для видеонаблюдения)
sudo apt-get install lm-sensors -y  (пакет для мониторинга температуры системы, частоты вращения кулеров ...)
sudo apt-get install hddtemp -y (пакет для мониторинга температуры жесткого диска)

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

dpkg-reconfigure hddtemp

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

Установка Midnight Commander

sudo apt-get install mc -y

МЕДИА.

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

sudo apt-get install mplayer -y

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

sudo apt-get install vlc -y

Автозапуск

crontab -e -u majordomo_Юзер
в конец:
@reboot vlc -I http

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

sudo nano /usr/share/vlc/lua/http/.hosts

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

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

sudo apt-get install smbfs -y

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

sudo mkdir /media/music

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

sudo nano /etc/fstab

в конец

//IP_адрес_медиатеки/music /media/music cifs guest,iocharset=utf8 0 0

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

В /etc/apache2/ есть папки sites-available и sites-enabled.

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

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

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

a2dissite default
a2ensite default
service apache2 reload

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

для этого

sudo cp /etc/apache2/sites-available/default "имя нового сайта"

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

nano  /etc/apache2/sites-available/"имя нового сайта"
обратите внимание, что с 13ой убунты. по умолчанию отрабатываются только файлы с расширением *.conf
при потребности, можно изменить в конфиге апача
<VirtualHost *:80>
        ServerAdmin e-mail@site.com
        ServerName  www.address.com
        ServerAlias address.com

        DocumentRoot /home/user/site
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
        <Directory /home/user/site>
                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

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

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

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

a2ensite "имя нового сайта"

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

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

service apache2 reload

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

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

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

crontab -e

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

@reboot /usr/sbin/ntpdate -s ntp.time.in.ua > /dev/null

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

/usr/sbin/ntpdate -s ntp.time.in.ua

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

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

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

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

sudo apt-get install imagemagick libav-tools libjpeg8-dev subversion

Сборка

sudo svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer/ mjpg-streamer
cd mjpg-streamer
make

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

sudo gpasswd -a majordomo video

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

sudo crontab -e -u majordomo

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

@reboot /home/majordomo/mjpg-streamer/mjpg_streamer -i "/home/majordomo/mjpg-streamer/input_uvc.so -r 1280x720" -o "/home/majordomo/mjpg-streamer/output_http.so -w /home/majordomo/mjpg-streamer/www -p 8181"

где 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:

apt-get install nginx openssl -y

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

mkdir /etc/nginx/ssl
chown root:root /etc/nginx/ssl
chmod 700 /etc/nginx/ssl

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

cd /etc/nginx/ssl
openssl req -new -x509 -days 9999 -nodes -newkey rsa:2048 -out cert.pem -keyout cert.key

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

openssl req -new -x509 -days 9999 -nodes -newkey rsa:2048 -out cert.pem -keyout cert.key -subj "/C=US/ST=New York/L=Brooklyn/O=Example Brooklyn Company/CN=YOURDOMAIN.EXAMPLE"

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

server {
    listen          *:443 ssl;

    ssl                 on;
    ssl_certificate     /etc/nginx/ssl/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/cert.key;
    location / {
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://localhost:80/;
    }
}

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

service nginx restart

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

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

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

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

127.0.0.1 domain.com

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

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

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

MajorDomo

Информация

Проекты

Партнёры

edit SideBar

 
 
 

Blix theme adapted by David Gilbert, powered by PmWiki