Установка справочника

Итак, приступим...
Для установки данной программы вам понадобятся следующие заранее настроенные службы - вэб-сервер "Apache" (http://httpd.apache.org) c включённой поддержкой "PHP5" c библиотеками "GDlib ver.2", "DOM XML", "LDAP", "SMTP" и сервер баз данных "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 php5-gd php5-ldap php-mail ssh ntpdate exim4 heirloom-mailx

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

$sudo tar -xjvf personal2.5.5.tar.bz2
$sudo cp -r personal /var/www

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

$sudo chown www-data:www-data /var/www/personal/Instructions
$sudo chown www-data:www-data /var/www/personal/NormDoc
$sudo chown www-data:www-data /var/www/personal/photo

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/ проверьте наличие файлов:
gd2.ini с содержимым extension=php_gd2.so (для работы с картинками),
mysql.ini с содержимым extension=mysql.so (для работы с MySQL-сервером),
dom.ini с содержимым extension=dom.so (для корректной работы парсера погоды),
либо соответсвующих настроек в php.ini
12. В конфигурационном файле php.ini обратите внимание на следующие строки:

...
post_max_size = 16M (ограничиваем максимальный размер передаваемого файла)
file_uploads = On (разрешаем закачивать файлы)
upload_max_filesize = 16M (ограничиваем максимальный размер закачиваемого файла)
magic_quotes_gpc = off
session.cookie_httponly = true (запрещаем читать наши cookie скриптам а-ля JavaScript и сокращаем поверхность для XSS атак)
...

Чтобы сервер Apache не выдавал ошибку при запуске, добавляем в конец конфига следующую строчку:

$sudo nano -w /etc/apache2/apache2.conf

ServerName Имя_сервера

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

$sudo service apache2 restart

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

$sudo nano -w .bashrc

export MANPAGER="/usr/bin/most -s"

14. Отредактируйте файлы config.php (находящимся в папках personal и personal/admin), укажите адрес сервера MySQL, по умолчанию установлено значение - localhost или 127.0.0.1 и измените права доступа к ним на "только для чтения". Для Linux установите chmod 444.

картинка Обратите внимание на то, что при установке проекта вы вводите логин и пароль администратора MySQL сервера (который ни куда не сохраняется!), после установки справочник работает от пользователя указанного в файлах config.php (который можно при желании поменять).

15. Сконфигурируйте какой-нибудь МТА клиент (если хотите, чтобы заработала рассылка новостей через электронную почту и другие плюшки...)
Например вот так:

$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

16. Загрузите дамп базы данных на сервер "MySQL". Сделать это довольно просто:
 Зайдите на страничку "personal/install.php", заполните необходимые поля и нажмите кнопку Проверить если проверка прошла успешно, жмите Установить.
(не забудте после установки удалить файлики "personal/install.php", "personal/install_run.php" и "personal/admin/util/sql/.MakeBasePersonal.sql"!)
17. Заходим на страничку http://127.0.0.1/personal либо http://127.0.0.1/personal/admin
(для второй ссылки логин:admin, пароль:admin).
18. Если вы не подключаетесь к БД снаружи, лучше удалить внешних пользователей. Сделать это можно из программы управления сервером или из консоли 3-мя командами; вводить без скобок естесственно (DROP USER 'personal_admin'@'%';) (DROP USER 'personal_exim'@'%';) (DROP USER 'personal_user'@'%';).

картинка Пользователям *nix, справочник пишет в папки personal/photo, personal/photo-knows, personal/photo-news, personal/NormDoc, personal/Instructions, personal/replica, personal/print-logs не забудьте переназначить права на доступ (если в этом будет необходимость)...

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

$sudo nano -w /var/www/personal/utils/check-know-cmd.php

require_once "/var/www/personal/config.php";
$srch_dir = "/var/www/personal/photo-knows";
$srch_dir2 = "/var/www/personal/photo-news";

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

$sudo chmod a+x /var/www/personal/utils/check-know-cmd.php

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

$ sudo crontab -u www-data -e

15 1 * * 6 /usr/bin/php /var/www/personal/utils/check-know-cmd.php > /dev/null 2>&1

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

$sudo /usr/bin/php /var/www/personal/utils/check-know-cmd.php

Utilites for checking picture using in Knowledge base of Personal project

Found - 4 files

File - small20110504135011.png using
File - big20110504135011.png using
File - big20110504140753 do not using, deleted
File - small20110504140753 do not using, deleted
...

Operation complete.

На этом всё, справочник установлен и готов к работе.