Main

Установка на чистой Raspberry Pi

Описанные ниже действия производятся на "читой" системе Raspbian Wheezy. Процедура установки не эталонная и, возможно, не оптимальная, поэтому замечания и пожелания приветствуются.

Установка пакетов

После загрузки первым делом запускаем raspi-config и расширяем файловую систему на всю карточку (extend partitition), а так же выставляем временную зону (time zone).

sudo raspi-config

Далее устанавливаем обновления ядра и компонентов операционной системы.

sudo apt-get update
sudo apt-get upgrade
sudo apt-get clean

Или же делаем следующее:

sudo su
apt-get -y update && apt-get -y dist-upgrade && apt-get -y autoremove && apt-get -y autoclean

удаляем ненужные локали (у меня освободилось около 150 метров!):

apt-get install localepurge

отключаем screen saver в консолях:

nano /etc/kbd/config

BLANK_TIME=30 заменяем на BLANK_TIME=0

Следующим шагом ставим все необходимы пакеты.

sudo apt-get install -y ffmpeg ntpdate mc apache2 apache2-utils  php5 libapache2-mod-php5 php5-common mysql-client php-pear php5-mysql php5-curl php5-gd php5-idn php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-json mplayer libusb-1.0-0 libusb-1.0-0-dev mpd 

После установки мы должны получить работающий веб-сервер и на всякий случай проверим так ли это, зайдя браузером по сетевому адресу, который получила наша плата. Например, это может быть http://192.168.0.58/

Настройка веб-сервера

Немного подкрутим настройки веб-сервера Apache, а точнее сделаем так, чтобы процессы веб-сервера работали от имени пользователя pi (не уверен, что это необходимо, но тем не менее...)

Останавливаем сервер:

sudo service apache2 stop

Редактируем файл /etc/apache2/envvars (здесь и ниже все изменения в файлах настроек представлены в виде списка изменяемых параметров -- остальные параметры остаются такими, какие они есть):

APACHE_RUN_USER=pi
APACHE_RUN_GROUP=pi

Меняем права на папки веб-сервера и запускаем его снова:

sudo chown pi:pi /var/www
sudo chmod 777 /var/www
sudo chown pi:pi /var/lock/apache2
sudo chown pi:pi /var/log/apache2/

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

sudo a2enmod rewrite

Так же включаем обработку .htaccess в файле /etc/apache2/site-enable/default:

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

Кстати, там же можем закомментировать строчку с CustomLog -- лишний лог, лишняя нагрузка на файловую систему.

Перезапускаем apache:

sudo service apache2 restart

Настройка PHP

Немного изменяем настройки PHP (отключаем лишние сообщения об ошибках, выключаем логи, меняем максимальный размер файла для загрузки).

Редактируем /etc/php5/apache2/php.ini:

error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT
display_errors = On
log_errors = Off
post_max_size = 50M
upload_max_filesize = 50M

Перезапускаем веб-сервер, чтобы настройки вступили в силу:

sudo service apache2 restart

Так же немного правим файл настроек PHP для вызова из командной строки. Редактируем /etc/php5/cli/php.ini

error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT
display_errors = On

Настройка базы данных

Устанавливаем пакет mysql-сервера (в процессе установки будет запрошен пароль для root-а базы данных, ставим его к примеру rootpsw):

sudo apt-get install -y mysql-server

Для удобства установим еще phpmyadmin (в процессе будет запрошен тип веб-сервера, выбираем Apache2, а так же пароль для администраторского аккаунта -- его мы установили выше в rootpsw; кроме того будет запрошен дополнительный пароль для phpmyadmin, его поставим phpmyadminpsw):

sudo apt-get install -y phpmyadmin

После установки phpmyadmin рекомендуется перезапустить систему:

sudo shutdown -r now

Проверим, что он работает, перейдя по ссылке http://IP/phpmyadmin/
Для входа используем root / rootpsw

И, раз уж мы здесь, создадим базу данных db_terminal (используем collation utf8-general-ci) и импортируем в неё дамп из дистрибутива в файле db_terminal.sql (сам дамп можно скачать отсюда)

Настройка FTP

Так же для удобства я обычно запускаю FTP-сервер. Устанавливаем пакет vsftpd:

sudo apt-get install vsftpd

Немного модифицируем файл настроек /etc/vsftpd.conf:

#anonymous_enable=YES
local_enable=YES
write_enable=YES

Перезапускаем сервис:

sudo service vsftpd restart

Загрузка и установка MajorDoMo

Скачиваем последнюю версию системы из исходников:

cd /var/www
sudo rm -rf *
sudo git clone --depth=1 https://github.com/sergejey/majordomo.git ./

Переименовываем файл config.php.sample в config.php и редактируем его со следующими параметрами:

Define('DB_PASSWORD', 'rootpsw');

Меняем права на папки и файлы:

chown -Rf pi:pi *
chmod -Rf 0777 *
chmod -Rf 0777 ../www

Для авто-запуска и удобного управления majordomo создадим файл /etc/init.d/majordomo:

#!/bin/sh
### BEGIN INIT INFO
# Provides: SmartLiving
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

dir="/var/www/"
user="root"
cmd="php /var/www/cycle.php"

name=`basename $0`
pid_file="/var/run/$name.pid"
stdout_log="/var/log/$name.log"
stderr_log="/var/log/$name.err"

get_pid() {
    cat "$pid_file"
}

is_running() {
    [ -f "$pid_file" ] && ps `get_pid` > /dev/null 2>&1
}

case "$1" in
    start)
    if is_running; then
        echo "Already started"
    else
        echo "Starting $name"
        cd "$dir"

(while true; do
    sudo -u "$user" $cmd
done)>> "$stdout_log" 2>> "$stderr_log" &

        echo $! > "$pid_file"
        if ! is_running; then
            echo "Unable to start, see $stdout_log and $stderr_log"
            exit 1
        fi
    fi
    ;;
    stop)
    if is_running; then
        echo -n "Stopping $name.."
        kill `get_pid`
        sudo killall php
        for i in {1..10}
        do
            if ! is_running; then
                break
            fi

            echo -n "."
            sleep 1
        done
        echo

        if is_running; then
            echo "Not stopped; may still be shutting down or shutdown may have failed"
            exit 1
        else
            echo "Stopped"
            if [ -f "$pid_file" ]; then
                rm "$pid_file"
            fi
        fi
    else
        echo "Not running"
        sudo killall php
    fi
    ;;
    restart)
    $0 stop
    if is_running; then
        echo "Unable to stop, will not attempt to start"
        exit 1
    fi
    $0 start
    ;;
    status)
    if is_running; then
        echo "Running"
    else
        echo "Stopped"
        exit 1
    fi
    ;;
    *)
    echo "Usage: $0 {start|stop|restart|status}"
    exit 1
    ;;
esac

exit 0

Выставим на него права и добавим в авто-загрузку:

chmod 0755 /etc/init.d/majordomo
sudo update-rc.d majordomo defaults

Оптимизация для работы с SD-картой

С большего всё работает, но MajorDoMo достаточно интенсивно работает с файловой системой, что пагубно отражается на сроке жизни SD-карты, а поэтому нам нужно это как-то оптимизировать.

Перед внесением изменений остановим сервис majordomo и базу данных mysql:

sudo service majordomo stop
sudo service mysql stop

Перейдём в папку /var/www и создадим там папку database_backup для периодического скидывания базы данных на карту памяти:

cd /var/www
mkdir database_backup
chmod 0777 database_backup

Активируем цикл периодического сохранения базы данных (он запустится автоматически при следующем запуске системы):

cp /var/www/scripts/periodical_db_save.php /var/www/scripts/cycle_db_save.php

Отключим swap-файлы:

sudo swapoff --all
sudo apt-get remove dphys-swapfile

Т.к. часть папок мы перенесём в файловую систему tmpfs, то при загрузке нам надо будет воссоздавать необходимую структуру, ведь эти файлы будут жить до следующей перезагрузки. Создаём файл /etc/init.d/prepare-dirs:

#!/bin/bash
#
### BEGIN INIT INFO
# Provides:          prepare-dirs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Required-Start:
# Required-Stop:
# Short-Description: Create needed directories on /var/log/ for tmpfs at startup
# Description:       Create needed directories on /var/log/ for tmpfs at startup
### END INIT INFO
# needed Dirs
DIR[0]=/var/log/apache2
DIR[1]=/var/log/cups
DIR[2]=/var/log/apt
DIR[3]=/var/log/ConsoleKit
DIR[4]=/var/log/fsck
DIR[5]=/var/log/mysql
DIR[6]=/var/log/news
DIR[7]=/var/log/ntpstats
DIR[8]=/var/log/samba
DIR[9]=/var/log/lastlog
DIR[10]=/var/log/exim
DIR[11]=/var/log/watchdog
DIR[12]=/tmp/mysql
DIR[13]=/var/www/cached
DIR[14]=/var/www/debmes
DIR[15]=/var/log/mpd
DIR[16]=/var/www/cached/urls
DIR[17]=/var/www/cached/voice
case "${1:-''}" in
  start)
        typeset -i i=0 max=${#DIR[*]}
        while (( i < max ))
        do
                mkdir  ${DIR[$i]}
                chmod 777 ${DIR[$i]}
                i=i+1
        done
        # set rights
        chown pi:pi ${DIR[0]}
        cp -R /var/lib/mysql/* /tmp/mysql/
        chown -Rf mysql:mysql /tmp/mysql/*
        chown mysql:mysql /tmp/mysql
    ;;
  stop)
    ;;
  restart)
   ;;
  reload|force-reload)
   ;;
  status)
   ;;
  *)
   echo "Usage: $SELF start"
   exit 1
   ;;
esac

Меняем на него права и ставим в авто-запуск:

sudo chmod 755 /etc/init.d/prepare-dirs
sudo update-rc.d prepare-dirs defaults 01 99

Далее вносим правки в настройку файловой системы tmpfs. Добавляем в файл /etc/fstab следующее:

tmpfs /tmp tmpfs defaults,noatime,nosuid,size=200m 0 0
tmpfs /var/tmp tmpfs defaults,noatime,nosuid,size=200m 0 0
tmpfs /var/run tmpfs defaults,noatime,nosuid,mode=0755,size=2m 0 0
tmpfs   /var/log                tmpfs   size=20M,defaults,noatime,mode=0755 0 0 
tmpfs   /var/cache/apt/archives tmpfs   size=200M,defaults,noexec,nosuid,nodev,mode=0755 0 0
tmpfs   /var/www/cached                tmpfs   size=100M,defaults,noatime,mode=0755 0 0 

Вносим изменение в /etc/mysql/my.conf, в частности меняем путь к файлам базы данных:

datadir         = /tmp/mysql

... и добавляем (чтобы сократить размер базы файлов данных):

ignore_builtin_innodb
default_storage_engine=MyISAM

Перезапускаем систему

sudo shutdown -r now

Запуск Watchdog-а

Watchdog позволяет автоматически перезапустить систему в случае каких-либо критических зависаний.

Загружаемый встроенный модуль ядра watchdog:

$ sudo modprobe bcm2708_wdog

Для автозагрузки модуля добавляем его в файл /etc/modules командой:

echo "bcm2708_wdog" | sudo tee -a /etc/modules

Теперь проверим, что он добавился командой lsmod, должны быть такие строки:

bcm2708_wdog 3537 0

Ставим демона watchdog:

sudo apt-get install watchdog chkconfig
sudo chkconfig watchdog on
sudo /etc/init.d/watchdog start

Изменяем настройки /etc/watchdog.conf:

watchdog-device = /dev/watchdog
watchdog-timeout = 14

Запускаем watchdog:

sudo /etc/init.d/watchdog restart

 

MajorDomo

Информация

Проекты

Партнёры

edit SideBar

 
 
 

 

Blix theme adapted by David Gilbert, powered by PmWiki