Nginx в cpanel (nginx-cpl v3)
В этой статье рассмотрю установку nginx на cpanel с автоматическим обновлением конфиг файлов при добавлении новый акаунтов/сайтов в цпанель. Реализован через демон.
В cpanel толком не реализована работа с nginx. Есть 2 плагина, один платный а другой заброшенный давным-давно. Есть еще LiteSpeed но он платный. А зачем нам платить если руки растут с того места?
Установка nginx
Устанавливаем nginx , любым удобным для вас способом. Из исходников или репозитория уже скомпилированный. Лучше конечно из исходников с нужными модулями, но не критично. Главное чтобы был модули ssl_module, stub_status_module, realip_module, http_v2_module.
Находим место где хранятся конфиг файлы. Стандартно это «/etc/nginx»
Добавьте nginx в автозапуск
> chkconfig nginx on
Установка демона/сервиса
Скопируйте содержимое архива в “/usr/share/nginx-cpl/sh-mod/” это каталог по умолчанию
Файлы:
config.php – конфиг демона. Описан ниже
deamon.sh – тело демона
function.php – функции для скриптов
gen-vhosts-consol.php – консольный скрипт для принудительного обновления конфигурационных фалов nginx для доменов
gen-vhosts.php – консольный скрипт с проверкой актуальности обновлений конфигурационных файлов nginx для доменов
nginx-cpl.log – лог файл
nginx-cpl3 – файл службы
Скопируйте файл службы «nginx-cpl3» в /etc/ init.d и установите права на файл +x
> chmod u+x /etc/init.d/nginx-cpl3
Автозапуск службы
> chkconfig nginx-cpl3 on
управление службой
> service nginx-cpl3 stop
> service nginx-cpl3 start
> service nginx-cpl3 status
После настройки, запустите службу
Для удобства можете настроить alias
> nano /root/.bashrc
и добавить строку
alias gen-vhosts-consol='php -f /usr/share/nginx-cpl/sh-mod/gen-vhosts-consol.php'
после этого можно просто из консоли вызывать скрипт
> gen-vhosts-consol
Настройка демона
Демон написан мной, но часть исходников заимствовано. Задача демона проверять раз в 10 секунд изменился ли конфиг апача (httpd.conf). если обновился, парсировать его и создавать nginx конфиги для доменов. 2 конфига для http и https.
config.php
define('APACHE_PORT_HTTPS', '1443');
define('APACHE_PORT_HTTP', '8080');https и http порты для apache. Эти порты будет спрятаны от внешки. И будет не стандартный, допустим 1443/8080
define('APACHE_CONF', '/usr/local/apache/conf/httpd.conf');
конфиг файл apache
define('NGINX_PORT_HTTPS', '443');
define('NGINX_PORT_HTTP', '80');https и http порты для nginx. Порты будут замешены вместо портов на котором apache. Так что указываем стандартный для данного протокола
define('NGINX_CONF', '/etc/nginx/vhosts/');
путь где будут созданы конфиг файлы nginx для доменов. Для удобства - это отельный каталог.
define('CPL_BASE', '/etc/nginx/nginx-cpl-v3/');
путь до каталога с демоном. Туда будут ложится служебные файлы и логи
deamon.sh
RUN_CHECK=$(php -f /usr/share/nginx-cpl/sh-mod/gen-vhosts.php)
указать путь для php и скрипта обновления
Дополнительные настройки.
В созданных конфигурационных файлах указаны пути для nginx параметров proxy и microcache. Они должны быть в папке «/etc/nginx/proxy/». Если вы не используете отдельных файлов для конфигурации, просто создайте пустые файлы "/etc/nginx/proxy/proxy.inc" и "/etc/nginx/proxy/microcache.inc" или закомментируйте строки в function.php
Настройка WHM
После установки nginx и настройки демона, запустите демон. Проверьте что создались файлы с доменами в каталоге /etc/nginx/vhosts
Перейдите в раздел whm – “Home » Server Configuration »Tweak Settings”
Измените параметры «Apache non-SSL IP/port» на 8080, «Apache SSL port» на 1443
Запустите сервис nginx
Закройте порты 8080 и 1443 от внешнего доступа