Идеальный сервер - Ubuntu/Debian с nginx [ISPConfig 3]

Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

UbuntuДанная статья является тестовым материалом, для идеальных серверов под управлением операционных систем Ubunu и Debian выполнив который Вы установите Nginx. Nginx является свободным и открытым исходным кодом, служащий для повышения производительности HTTP-сервера. Nginx известен своей стабильностью, богатым набором функций, простой конфигурации, и низкое потребление ресурсов. В этом материале показано, как можно установить Nginx на Ubuntu server 11.04 и Debian 6.0 таким образом, что бы каждый созданный хост в панели управлнения хостингом ISPConfig 3 работал в Nginx, а не в Apache. Напоминаю, что этот материал относиться к категории готовый сервер, поэтому выполненный сервер по этому материалу, а так же обсуждение и информацию по тестированию Вы можите найти на нашем форуме в теме Ubuntu/Debian c nginx + скачать.

Nginx хостинг

В данной статье я использую сервера под управлением Ubuntu server 11.04 который Вы можете установить по учебнику описаному ранее Идеальный сервер - Ubuntu 11.04 [ISPConfig 3], а так же, может быть выполненная под Идеальный сервер - Debian 6.0 [ISPConfig 3]. Я выполняю все шаги в этом учебнике с привилегиями супер пользователя, для этого убедитесь, что Вы вошли в систему с правами root:

  • sudo su

Установка nginx ubuntu

Установленный Nginx получает все внешние хосты, а прокси Apache будет работать в фоне на другом порту. Таким образом, Nginx будет обрабатывать статические файлы, а PHP будет оставлено на Apache. Вы также можете оставить все домены Nginx.

Настройка Apache

Для того что бы Apache работал на порту 82, отредактируем конфигурационный файл:

  • nano /etc/apache2/ports.conf

Я предполагаю, что Ваш виртуальный хост вида *:80 вместо IP:80:

[...]
NameVirtualHost *:82
Listen 82
[...]

Аналогично поменяем порт для корневого хоста (хост сервера по умолчанию открываемый по IP адресу сервера):

  • nano /etc/apache2/sites-available/default
<VirtualHost *:82>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
[...]

Перезапустите Apache и используя NetStat проверим, работает ли он на порту 82:

  • /etc/init.d/apache2 restart
  • netstat -tunap | grep apache2
tcp 0 0 0.0.0.0:82 0.0.0.0:* LISTEN 7630/apache2

Теперь Вы должны изменить ISPConfig шаблоны Apache. Скопируйте их в вашу conf-custom директорию:

  • cd /usr/local/ispconfig/server/
  • cp conf/apache_ispconfig.conf.master conf-custom/
  • cp conf/vhost.conf.master conf-custom/

Откройте два файла и изменить :80 на :82. Чтобы быть уверенным запустить GREP команду и убедитесь:

  • nano /usr/local/ispconfig/server/conf-custom/apache_ispconfig.conf.master
  • nano /usr/local/ispconfig/server/conf-custom/vhost.conf.master

Теперь проверим:

  • grep :82 -i /usr/local/ispconfig/server/conf-custom/*
/usr/local/ispconfig/server/conf-custom/apache_ispconfig.conf.master:NameVirtualHost {tmpl_var name="ip_address"}:82
/usr/local/ispconfig/server/conf-custom/vhost.conf.master: :82>

Вы увидите как все запросы проходят с локального хоста (127.0.0.1). Чтобы увидеть пользователи с реальных IP адресов, Вам придется установить libapache2-mod-rpaf:

  • apt-get install libapache2-mod-rpaf

Добавьте следующее в /etc/apache2/apache2.conf:

  • nano /etc/apache2/apache2.conf
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 YOU_IP_ADDRESS

Установка и настройка Nginx

Включим lenny-backports хранилище, Вы найдете инструкции на backports.org.

  • apt-get install nginx

Удалить виртуальный хост по умолчанию:

  • rm /etc/nginx/sites-available/default

Откройте файл:

  • nano /etc/nginx/sites-available/default

Добавьте следующее содержимое в файл:

server {
listen 80 default;
server_name _;
server_name_in_redirect off;
default_type text/html;
#### Non WWW host goes to $sup variable ####
set $sup $host;
if ($host ~* ^(www\.)(.+)) { #if WWW?
set $sup $2; # cut WWW and write it into $sup
}
access_log /var/log/ispconfig/httpd/$host/access.log;
location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf|flv|html|htm|mp3)$ {
root /var/www/$sup/web; 
access_log off;
expires 30d;
}
location / {
root /var/www/$sup/web;
index index.html index.htm index.php;
access_log off;
#proxy_pass http://$host:82;
proxy_pass http://127.0.0.1:82;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

Перезапускаем Apache и Nginx:

  • /etc/init.d/apache2 restart
  • service nginx restart

Вот и все. Nginx будет обслуживать все ваши статические файлы, такие как изображения даже HTML-файлы, а PHP будут направлены в Apache.

Хотелось бы выразить благодарность за проделанную работу Andrey Kozhokaru, которые поделился своими трудом ISPconfig + nginx: WWW and no-WWW в своем блоге www.amgeekblog.com. Напоминаю, что этот материал относиться к категории готовый сервер, поэтому выполненный сервер по этому материалу, а так же обсуждение и информацию по тестированию Вы можите найти на нашем форуме в теме Ubuntu/Debian c nginx + скачать.