Table of Contents

Установка модуля

Информация о версии

Версия модуля 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>

Устанавливаем mod_rpaf

Устанавливаем необходмые модули

# 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'];
?>

Установка nginx

	# 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 перечитать свои конфиги

Заходим в админку и обслуживаемые сайты и проверяем работу.