Версия модуля | 0.7.1 |
---|---|
Версия руководства | 1.1 |
Разработчик | koffu |
Руководство | Enkil, DragonZX |
Дистрибутивы Linux | Debian (Lenny, Squeeze), Ubuntu 10.4 |
Версия панели | 1.0.5 и выше |
Русская поддержка | В официальной теме |
Считаем, что у Вас уже установлена, настроена и работает сама хостинг-панель, и Вы решили добавить в качестве фронт-энда к апачу nginx
Создаем папку для скрипта
<code># cd /usr/local/src # mkdir ispcp-nginx # cd ispcp-nginx</code>
Скачиваем последнюю версию скрипта с форума.
<code># wget http://repo.public-source.ru/ispcp-omega/mods/ispcp2nginx/ispcp-nginx-0.7.1.tar.gz # tar xvfz ispcp-nginx-0.7.1.tar.gz</code>
Создаем папку и копируем туда скрипт
<code># mkdir /usr/local/nginx # cp -r ispcp-nginx-0.7.1/* /usr/local/nginx # cd /usr/local/nginx</code>
Устанавливаем необходмые модули
# apt-get install libhtml-parser-perl libwww-perl libcompress-zlib-perl apache2-prefork-dev
Перезагружаем Apache
# /etc/init.d/apache2 restart
Скачиваем и устанавливаем mod_rpaf
# cd /usr/local/src # wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz # tar xzf mod_rpaf-0.6.tar.gz # cd mod_rpaf-0.6 # apxs2 -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
Создаем файл rpaf-2.0.load и вписываем туда
LoadModule rpaf_module /usr/lib/apache2/modules/mod_rpaf-2.0.so RPAFenable On RPAFsethostname On RPAFproxy_ips 127.0.0.0 x.x.x.x
Где 127.0.0.0 и x.x.x.x, это IP-адреса прокси серверов с которых приходит запрос от nginx Сохраняем и закачиваем файл в раздел /etc/apache2/mods-available/
Включаем модуль mod_rpaf
# a2enmod rpaf-2.0
Перезапускаем Apache
# /etc/init.d/apache2 restart
Всё. Теперь IP-адреса посетителей должны определять снова нормально.
Для проверки работы модуля mod_rpaf на любом из доменов, которые расположены на Вашем сервере, разместите файл test.php с содержимым:
<? echo $_SERVER['REMOTE_ADDR']; ?>
# wget http://sysoev.ru/nginx/nginx-0.8.50.tar.gz # tar xzf nginx-0.8.50.tar.gz # cd nginx-0.8.50 # aptitude install libpcre3-dev libssl-dev # ./configure --with-http_realip_module --with-http_addition_module --with-http_gzip_static_module --with-http_stub_status_module && make -j2 && make install # mkdir /var/log/nginx && chown www-data:www-data /var/log/nginx
После установки nginx создаём пользователя в MySQL базе.
<code># mysql -u root -p ispcp</code>
<code>USE ispcp grant select on ispcp.domain to 'nginx'@'localhost' identified by 'ваш пароль'; grant select on ispcp.subdomain to 'nginx'@'localhost' identified by 'ваш пароль'; grant select on ispcp.domain_aliasses to 'nginx'@'localhost' identified by 'ваш пароль'; exit</code>
Переносим админку панели на 443 порт
<code># mkdir /etc/apache2/ssl # openssl req -x509 -days 3650 -nodes -new -newkey rsa:2048 -out /etc/apache2/ssl/ispcpweb.pem -keyout /etc/apache2/ssl/ispcpweb.pem # chmod 600 /etc/apache2/ssl/ispcpweb.pem # a2enmod ssl</code>
Проверяем конфигурацию Apache
<code># nano /etc/apache2/ports.conf</code>
Вы увидите что-то наподобие
<code>NameVirtualHost 111.222.333.444:80 Listen 111.222.333.444:80</code>
Меняем порт, на котором работает админка
<code># nano /etc/apache2/sites-available/00_master.conf</code>
Полностью копируем секцию
<code><VirtualHost 111.222.333.444:80> содержимое секции </VirtualHost></code>
и немного изменяем содержимое секций
данный конфиг-файл должен содержать
<code><VirtualHost 111.222.333.444:80> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} содержимое секции </VirtualHost></code>
и ниже
<code><VirtualHost 111.222.333.444:443> SSLEngine on SSLCertificateFile /etc/apache2/ssl/ispcpweb.pem содержимое секции </VirtualHost></code>
Добавляем ротацию логов nginx
<code># nano /etc/logrotate.d/nginx /var/log/nginx/*.log { daily missingok rotate 20 compress delaycompress notifempty create 640 root adm sharedscripts postrotate if [ $(ps ax | grep nginx | grep -v grep | wc -l) = "0" ]; then killall -s HUP nginx; fi endscript }</code>
Изменяем настройки обращения к админке панели
<code># nano /etc/ispcp/ispcp.conf BASE_SERVER_VHOST_PREFIX = https://</code>
Для корректной работы phpmyadmin меняем содержимое
<code># nano /var/www/ispcp/gui/client/sql_auth.php</code>
на
<code>$fp = fsockopen('ssl://'.Config::get('BASE_SERVER_IP'), 443, $errno, $errstr, 5);</code>
Добавляем домены и поддомены, для которых надо переопределить конфигурацию, в папку /conf.d
touch /usr/local/nginx/conf.d/site1.ru touch /usr/local/nginx/conf.d/site2.ru touch /usr/local/nginx/conf.d/subdomain.site1.ru touch /usr/local/nginx/conf.d/subdomain.site2.ru
После запускаем скрипт
<code># ./ispcp-nginx.pl</code>
При корректной работе скрипта Вы должны увидеть примерно следующее
<fc #008000>//Writing global nginx configuration file... Writing nginx.conf...done Converted subdomain.site1.ru Converted site1.ru Converted subdomain.site2.ru Converted site2.ru Writing nginx virtual hosts configuration file... Writing vhosts.conf...done//</fc>
Проверяем синтаксис файлов конфигурации
<code>#nano /usr/local/nginx/sbin/nginx -t</code>
Должно быть примерно следующее
<code>the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok configuration file /usr/local/nginx/conf/nginx.conf test is successful</code>
Добавляем в Ваш скрипт iptables перенаправление всего входящего на сервер трафика по 80 порту на 81 порт
<code># iptables -t nat -A PREROUTING ! -s 127.0.0.1 -d ваш_ip_на_котром_слушает_апач -p tcp --dport 80 -j REDIRECT --to-ports 81</code>
Перезагружаемся или перезапускаем апач и nginx
<code># /etc/init.d/apache2 restart # kill -HUP `cat /var/run/nginx.pid`</code>
Последняя строка заставляет nginx перечитать свои конфиги
Заходим в админку и обслуживаемые сайты и проверяем работу.