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

Итак, приступим...
Для установки данной программы вам понадобятся следующие заранее настроенные службы - вэб-сервер "Apache2" (http://httpd.apache.org) c включённой поддержкой "PHP5" (http://www.php.net) и библиотеками "libssh2-php", "php5-mysql" и "libapache2-mod-php5" и сервер баз данных "MySQL" 5.x версии (http://www.mysql.org).
Ну а теперь непосредственно о установке (сразу оговорюсь - ставил на Ubuntu 9.10):
1. Устанавливаем сервер (изначально он ставится без GUI но, позже мы всё исправим, в MySQL так будет удобней заглядывать...)
2. Настраиваем сетевой интерфейс:

$sudo nano -w /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 10.10.10.1
netmask 255.255.255.0
network 10.10.10.0
broadcast 10.10.10.255
gateway 10.10.10.2

3. Настраиваем DNS:

$sudo nano -w /etc/resolv.conf
domain Ваш домен
search Ваш домен
nameserver ip-адрес вашего dns сервера
nameserver ip-адрес вашего dns сервера (таких записей может быть несколько)

после чего перезапускаем сеть и проверяем всё ли работает.

$sudo /etc/init.d/networking restart
$ping -c3 ya.ru

4. Натсраиваем firewall

$sudo iptables -F
$sudo iptables -P INPUT DROP
$sudo iptables -P OUTPUT ACCEPT
$sudo iptables -P FORWARD DROP
$sudo iptables -A INPUT -m state --state INVALID -j DROP
$sudo iptables -A OUTPUT -m state --state INVALID -j DROP
$sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$sudo iptables -A INPUT -i lo -j ACCEPT
$sudo iptables -A INPUT -p icmp -i eth0 -j ACCEPT
$sudo iptables -A INPUT -p tcp -i eth0 -s 10.10.10.5 --dport 22 -j ACCEPT (если нужно)
$sudo iptables -A INPUT -p tcp -i eth0 -s 10.10.10.5 --dport 80 -j ACCEPT

сохраним настройки в файл

#iptables-save > /etc/firewall.conf

Создадим скрипт для автоматического подъёма правил

$sudo nano -w /etc/network/if-pre-up.d/00-iptables
#!/bin/bash
iptables-restore < /etc/firewall.conf

Сделаем его исполняемым

$sudo chmod +x /etc/network/if-pre-up.d/00-iptables

5. Настраиваем apt

$sudo nano -w /etc/apt/apt.conf
Acquire::http::Proxy "http://ip-address:port/";

либо можно сделать файлик с таким же содержимым по пути /etc/apt/apt.conf.d/proxy
не забудьте про /etc/apt/sources.list

$sudo aptitude update
$sudo aptitude dist-upgrade

6. Накатываем пакеты.

$sudo aptitude install most mc xserver-xorg-core gdm gnome-core gnome-themes-ubuntu language-pack-gnome-ru-base indicator-session gnome-utils gnome-system-tools update-manager update-notifier firefox firefox-gnome-support synaptic mysql-server mysql-query-browser libapache2-mod-php5 php5-mysql php5-cli libssh2-php php-mail openssh-server ntpdate exim4 heirloom-mailx

7. Распакуйте содержимое архива и скопируйте в соответствующую папку вэб-сервера.

$sudo tar -xjvf manydhcp1.12.2.tar.bz2
$sudo cp -r manydhcp /var/www

8. Меняем права на папку.

$sudo chown www-data:www-data /var/www/manydhcp/temp

9.Перезапускаем MySQL-сервер.

$sudo service mysql restart

10. Отредактируйте файлы config.php и config_a.php (находящихся в папке manydhcp), укажите адрес сервера MySQL, по умолчанию установлено значение - localhost или 127.0.0.1 и измените права доступа к ним на "только для чтения". Для Linux установите chmod 444.
11. Поскольку данная настройка из файла /etc/php5/apache2/php.ini перехала в папку /etc/php5/apache2/conf.d/ проверьте наличие файлов:
ssh2.ini с содержимым extension=ssh2.so (для работы SSH),
mysql.ini с содержимым extension=mysql.so (для работы с MySQL-сервером),
либо соответсвующих настроек в php.ini
Чтобы сервер Apache не выдавал ошибку при запуске, добавляем в конец конфига следующую строчку:

$sudo nano -w /etc/apache2/apache2.conf
ServerName Имя_сервера

после чего перезапускаем Apache-сервер.

$sudo service apache2 restart

12. Покрасим консольный вывод манов

$sudo nano -w .bashrc
export MANPAGER="/usr/bin/most -s"

13. Подключаем проверку доступности адресов (обратите внимание на то, что указаны полные пути до файлов с настройками)

$sudo nano -w /var/www/manydhcp/service/pingercmd.php
require_once "/var/www/manydhcp/config_a.php";
require_once "/var/www/manydhcp/utils/functions.php";

Делаем файл исполняемым

$sudo chmod a+x /var/www/manydhcp/service/pingercmd.php

Добавляем задание в Cron

$ sudo crontab -u www-data -e
15 12 * * 1-5 /usr/bin/php /var/www/manydhcp/service/pingercmd.php > /dev/null 2>&1

После заполнения базы работу скрипта можно будет проверить следующим образом

$sudo /usr/bin/php /var/www/manydhcp/service/pingercmd.php
Utilites for ping ip-addresses of project ManyDHCP starting
10.10.1.1 - OK
10.10.1.2 - Offline
...

14. Сконфигурируйте какой-нибудь МТА клиент, например вот так:

$sudo aptitude install exim4
$sudo dpkg-reconfigure exim4-config

Общий тип почтовой конфигурации: отправка почты через smarthost; локальная почта отсутствует
Почтовое имя системы: yandex.ru(если взять за пример яндекс-почту)
IP-адреса, с которых следует ожидать входящие соединения SMTP: 127.0.0.1
Другие места назначения, для которых должна приниматься почта: (оставил пустым)
Видимое доменное имя локальных пользователей: yandex.ru
IP-адрес или имя хоста являющегося исходящим smarthost: smtp.yandex.ru
Машины, для которых доступна релейная передача почты: (оставил пустым)
Сокращать количество DNS-запросов до минимума (дозвон по требованию)?: Нет
Разделить конфигурацию на маленькие файлы?: Нет
Далее в консоли правим файл:

$sudo nano -w /etc/exim4/passwd.client
smtp.yandex.ru:Ваш логин:Ваш пароль

Разрешаем логиниться на сервер без использования TLS
(безопасность естественно при этом пострадает, делать или нет решать вам):

$sudo nano /etc/exim4/exim4.conf.localmacros
AUTH_CLIENT_ALLOW_NOTLS_PASSWORDS = 1

У меня EXIM ломился на почтовый сервер от имени пользователя www-data, чтобы исправить данное недоразумение правим ещё один файлик:

$sudo nano -w /etc/email-addresses
www-data: Ваш логин@yandex.ru (пользователь от которого работает Apache)
user: Ваш логин@yandex.ru (пользователь от которого вы будете запускать скрипты, для автоматизации неких действий)

Предлагаем EXIM перечитать конфигурационные файлы:

$sudo service exim4 reload

Подключаем EXIM к PHP:

$sudo nano -w /etc/php5/apache2/php.ini
sendmail_path = /usr/sbin/exim4 -t

после чего перезапускаем Apache-сервер.

$sudo service apache2 restart

15. Установите проект на сервер MySQL:
Зайдите на страничку "http://server_name/manydhcp/install.php", заполните необходимые поля и нажмите кнопку Проверить если проверка прошла успешно, жмите Установить.
(не забудте после установки удалить файлики "manydhcp/install.php", "manydhcp/install_run.php"!)
16. Заходим на страничку http://server_name/manydhcp
(логин:admin, пароль:admin).
На этом всё, проект установлен и готов к работе, можно приступать к настройке ответной части (DHCP сервера)

# Немного о резервном копировании...

Можно например вот так:

$sudo mkdir /var/log/manydhcp-backup
$sudo chown root:root /var/log/manydhcp-backup
$sudo nano -w /root/ManyDHCP-backup
#!/bin/bash
#Script for backup ManyDHCP project
find /var/log/manydhcp-backup/ -name "www*.tgz" -mtime +30 -delete;
mysqldump -u manydhcp_admin -pВашПароль --databases db_manydhcp --add-drop-database > /var/www/htdocs/manydhcp/dump.db.manydhcp.sql;
cd /var/www/;
tar -czf /var/log/manydhcp-backup/www-$(date +"%Y-%m-%d").tgz manydhcp;
sleep 10;
ps aux|grep mysql|mail -s "ManyDHCP-backup" -a /var/log/manydhcp-backup/www-$(date +"%Y-%m-%d").tgz it-cfg@domain.ru

$sudo chmod +x /root/ManyDHCP-backup
$ sudo crontab -u root -e
20 1 2 1-12 * /bin/bash /root/ManyDHCP-backup > /dev/null 2>&1

P.S.: пользователям *nix, справочник пишет в папку manydhcp/temp не забудьте переназначить права на доступ(если будет необходимо)...