дружим ispCP + nginx
16 Январь 2012, 19:22
Итак, я решил поставbть себе хостинг-панель ispCP на Debian Squeeze. Как я это делал рассписывать не буду в рунете полно документации на этот счет, я лишь опишу как добавил поддержку nginx этой панелью. Тут я стану развивать тему взятую с форума ispCP о добавлении на "фронт" nginx - вот URL: http://isp-control.net/forum/thread-8322.html . За основу была взята статья и скрипт Nikolay Yatsyshyn (koffua[@]gmail.com) - вот URL на статью автора: http://isp-control.net/documentation/ru/scripte/nginx_module/installation
В чем состоит задача:
1. Перенести апач на порт 8181
2. Настроить nginx
3. Заставить nginx вести корректные логи
4. Добавить автоматическую генерацию conf файлов nginx при изменении\добавлении\удалении доменов\алиасов\субдоменов.
1. Переходим в /etc/ispcp/apache и во всех абсолютно файлах заменяем любое упоминание порта 80 на нужный нам - 8181.
Далее ищем в файле /etc/init.d/ispcp_network строку SERVICES= и добавляем в нее наш порт 8181 и рестартим службы
# /etc/init.d/ispcp_network restart
# /etc/init.d/apache2 restart
проверяем что apache висит на нужном нам порту, не занимает 80 и доступен по порту 8181:
# netstst -pan | grep LISTEN
# lynx 10.0.0.1:8181
Здесь 10.0.0.1 - ip-адрес сервера в сети (у вас он наверняка отличается).
Также в файле /etc/apache2/apache2.conf добавлем строчку LISTEN 127.0.0.1:80
Это нужно для того, чтобы корректно отрабатывалась статистика awstats.
2. Устанавливаем nginx из репозитория:
# apt-get install nginx
удаляем файл:
# rm -f /etc/nginx/sites-enabled/default
Качаем модифицированный мною скрипт Николая (см. выше) - вот URL: http://it-korolkov.ru/blog/files/ispcp-nginx.tar.gz, - и распаковываем в /etc/nginx. Открываем файл ispcp-nginx.conf и правим параметры (адрес, пароль на БД) под себя.
После этих процедур создаём пользователя в MySQL базе:
# mysql -u root -p ispcp
>USE ispcp
>grant select on ispcp.domain to 'nginx'@'localhost' identified by 'пароль из ispcp-nginx.conf';
>grant select on ispcp.subdomain to 'nginx'@'localhost' identified by 'пароль из ispcp-nginx.conf';
>grant select on ispcp.domain_aliasses to 'nginx'@'localhost' identified by 'пароль из ispcp-nginx.conf';
>exit
Далее в БД ispcp в таблице config добавляем строку PORT_NGINX со значением 80;tcp;NGINX;1;1;10.0.0.1
и заменем значение строки PORT_HTTP на 8181;tcp;HTTP;1;0;10.0.0.1
Это делать не обязательно, сие позволяет корректно в даминке отображать статусы сервисов и их порты. Да, и опять таки напоминаю, что 10.0.0.1 - это мой ip сервера, - замените на свой.
Теперь запускаме скрипт
# ./ispcp-nginx.pl
Если все ок, то рестартим сервисы и проверяем как все работает.
# /etc/init.d/nginx restart
# /etc/init.d/ispcp_daemon restart
Убеждаемся, что nginx проксирует запросы на апач, при этом сам отдавая статику.
3. Скрип Николая не позволяет корреткно панельки вести логирование и считать трафик. В моем скрипте на уровне я добавил сроки для ведения логирования на уровне nginx. Но чтобы запросы не дублировались и в логах апача, в нем надо отключить логирование. Т.е. все логи будет вести один nginx. Для этого переходим в /etc/ispcp/apache и во всех абсолютно файлах там комментируем строки, если таковые встречаются:
CustomLog "||/var/www/ispcp/engine/ispcp-apache-logger" ispcplog
ErrorLog "||/var/www/ispcp/engine/ispcp-apache-logger -t error"
Так же делаем это и для всех текущих конфигов в /etc/apache2 и перезагружаем апач:
# /etc/init.d/apache2 retsart
Это поможет не терять нужную нам статистику и логи на уровне nginx. Здесь надо бы еще понаблюдать и посчитать, коректно ли все пишет, например трафик. Если кто найдет косяки - пишите в коменты - будем решать.
4. Чтобы изменния применялись сразу и для nginx, достаточно в скрипт построения конфигов апача для доменов и алиасов добавить нужные строчки. Открываем файл для редактирования:
# nano /var/www/ispcp/engine/ispcp-serv-mngr
Находим в нем процедуру sub restart_httpd и в конце между строками
$rs;
}
дописываем свою: system('/etc/nginx/ispcp-nginx.pl');
Ну вот и все. Всем приятных будней)
2 Ответа(ов) на "дружим ispCP + nginx"
22 Ноябрь 2012, 03:13
netstst -pan | grep LISTEN
NETSTAT (у Вас небольшая опечатка)
30 Ноябрь 2012, 22:08
Спасибо за замечание