Секреты установки панели ISP Manager на Debian 6

По умолчанию в Debian 6 идет PHP 5.3, который пока еще не поддерживается большинством CMS. Перед установкой ISP Manager подключим репозиторий с 5.2:

echo "deb http://ftp.debian.org/debian lenny main contrib non-free" >> /etc/apt/sources.list
echo "deb http://security.debian.org lenny/updates main contrib non-free" >> /etc/apt/sources.list
cat << EOF >> /etc/apt/preferences
Package: php5*
Pin: release a=oldstable
Pin-Priority: 700

Package: *
Pin: release a=stable
Pin-Priority: 600
EOF

apt-get update
apt-get install libkrb53

Установку ISP Manager лучше всего проводить в screen. В случае внезапного разрыва связи, вы всегда сможете вернуться на тот этап, где остановились. Если этого не сделать, то инсталлятор прервет работу вместе с обрывом ssh сессии. Итак, приступим:

 

wget "http://download.ispsystem.com/install.sh"
sh install.sh
В процессе установке вы можете поставить PHP 5.2, однако при этом apache, webmail и phpmyadmin надо выбирать lenny версий, для сохранения зависимостей. Если что — потом всегда это можно будет обновить.

 

Если же вы ошиблись и получили PHP 5.3, то нужно сделать даунгрейд до PHP 5.2. К сожалению, устаревший менеджер apt не позволяет этого сделать автоматически. Придется поработать вручную:

 

apt-get remove libapache2-mod-php5 php5 php5-cgi php5-cli php5-common php5-gd php5-mcrypt php5-mysql php5-suhosin phpmyadmin squirrelmail
apt-get -t oldstable install libapache2-mod-php5 php5 php5-cgi php5-cli php5-common php5-gd php5-mcrypt php5-mysql php5-suhosin phpmyadmin squirrelmail

 

Но и это еще не все. В Debian отключен контроль PHP за удалением сессий. Разработчики почему-то решили, что это надо вынести в cron, а создатели ISP Manager этого не учли. Исправляем эту ошибку:

echo "session.gc_probability = 1" > /etc/php5/conf.d/fix.ini
/etc/init.d/apache2 restart

Для защиты от медленных атак на веб сервер нам поможет nginx. К сожалению тот, что идет в комплекте — очень древний, и лучше поставить его с сайта разработчика:

wget http://nginx.org/keys/nginx_signing.key

apt-key add nginx_signing.key
echo "deb http://nginx.org/packages/debian/ squeeze nginx" >> /etc/apt/sources.list
echo "deb-src http://nginx.org/packages/debian/ squeeze nginx" >> /etc/apt/sources.list
apt-get update

 

Теперь зайдем в саму панель и установим там nginx нормальной версии. Перед этим надо остановить apache, иначе nginx не установится. Однако это еще не все. Конфигурация nginx по умолчанию никуда не годится. Сделаем нормальные настройки:

  • worker_processes ставим по числу ядер процессоров
  • error_log с warn заменяем на crit, нечего грузить диск ненужной информацией
  • worker_connections повышаем с 1024 на что-то более мощное, напрмие 1024000 и не забываем про worker_rlimit_nofile
  • sendfile отключаем и включаем aio
  • И не забываем рестартануть nginx после всего этого

Для мониторинга дисков нам нужен SMART:

 

apt-get install smartmontools
/etc/init.d/smartmontools start

Для удобства работы с mysql создадим файл my.cnf  в корне домашней директории такого содержания:

 

[client]
user=root
pass=пароль-к-mysql

Теперь не нужно будет каждый раз вводить пароль к mysql из консоли.
Поставим дополнительные утилиты для мониторинга и включим медленный лог:

apt-get install atop mtop mytop mysqltuner
sed -i 's/#log_slow_queries/log_slow_queries/g' /etc/mysql/my.cnf
/etc/init.d/mysql restart

Для скрытия листинга директорий нужно в /etc/apache2/conf.d/secure.conf дописать в строке Options -Indexes.

Для скрытия phpmyadmin нужно изменить его alias в файле /etc/apache2/conf.d/phpmyadmin.conf, иначе боты будут постоянно лезть по этому URL.

Кроме того можно перенести ssh на нестандартный порт и установить fail2ban для защиты от бутфорса.