Сейчас 126 заметки.

Установка и настройка Web-сервера (Linux+Nginx+Apache2)

Материал из ЗАметки

Если Вы являетесь пользователем ISPmanager, нижеизложенная информация пригодится Вам лишь для ознакомления. Его функционал позволяет создать такую связку достаточно быстро и без манипуляции с командной строкой. Недостаток лишь в том, что ISPmanager не позволяет произвести более тонкую настройку, и даже если вручную внести дополнительные коррективы в конфигурацию, созданную ISPmanager, после первой же перезагрузки он перепишет конфигурацию по-своему. Данная конфигурация сбалансирована для выполнения самого широкого круга задач, и одна из функций ISPmanager - ее поддерживать.

Данный мануал был протестирован на CentOS 5.6 и Debian Squeeze. Связка работает в том же виде и на других дистрибутивах, но по причине наибольшей популярности первых, мы будем говорить именно о них. Основная часть данной статьи посвящена CentOS, но различия с Debian заключаются только в названиях пакетных менеджеров и нескольких незначительных моментах. Все особенности установки для Debian описаны в заключительной части данной статьи. Команды и примеры файлов конфигурации, не указанные в этом разделе, подходят для обеих систем.

Установка nginx

Для того, чтобы установить Nginx, нам понадобится репозиторий EPEL. В принципе, данный пакет есть и в основном репозитории CentOS, но в EPEL пакет собран с ключом enable_rpaf, дающим возможность посредством rpaf-модуля взаимодействовать нашей будущей связке. Чтобы подключить EPEL, введем в консоли:

$ rpm -ihv http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm

Если на сервере установлена 64-битная система - команда будет немного другой:

$ rpm -ihv http://centos.alt.ru/repository/centos/5/x86_64/centalt-release-5-3.noarch.rpm

Далее сама установка:

$ yum install nginx

Теперь, если в браузере ввести IP-адрес сервера, он покажет тестовую страницу Nginx Конфигурация Nginx

Следующий этап - изменение файла конфигурации Nginx*. Наш конфиг файл должен выглядеть примерно так:

user www-data;
error_log /var/log/nginx/error.log debug;
pid /var/run/nginx.pid;
worker_rlimit_nofile 80000;
events {
worker_connections 2048;
}

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main ‘$remote_addr – $remote_user [$time_local] $status ‘
‘»$request» $body_bytes_sent «$http_referer» ‘
‘»$http_user_agent» «http_x_forwarded_for»‘;
access_log /var/log/nginx/access.log main;

server {
listen 88.88.88.11:80;
# 88.88.88.11 нужно заменить на IP Вашего сервера
server_name mysite.ru www.mysite.ru;
#Здесь и далее вместо mysite.ru указывается имя Вашего сайта
#Эта секция описывает параметры, по которых фронтенд обменевается с бэкендом, #такие, как адрес бэкенда, параметры прямого редиректа, параметры передачи заголовков, максимальный размер принимаемых файлов и пр. server_name_in_redirect off;
access_log /var/log/nginx/host.access.log main;
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
proxy_connect_timeout 90;
}
#Эта секция отвечает за местонахождение и типы статичных файлов, обрабатываемых Nginx. Динамические файлы мы будем отсылать на Apache
location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|js)$ {
root /var/www/mysite.ru;
}
}


Установка Apache2

В списке пакетов для CentOS Apache2 значится как httpd, потому:

yum install httpd

Приводим соответствующую часть файла конфигурации Apache /etc/httpd/conf/httpd.conf к такому виду:


Listen 127.0.0.1:8080
NameVirtualHost 127.0.0.1:8080
<VirtualHost 127.0.0.1:8080>
  1. В этой строке указывается адрес почтового ящика администратора сервера, т. е. Ваш. Имя-пример "mysite.ru" здесь и далее необходимо заменить на имя Вашего сайта
ServerAdmin webmaster@mysite.ru
DocumentRoot /var/www/mysite.ru/
ServerName mysite.ru
ErrorLog logs/mysite.ru-error_log
CustomLog logs/mysite.ru-access_log common
</VirtualHost>


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

Он служит для передачи нашему backend, в данном случае, Apache, сведений об ip-адресе. Без использования данного модуля могут быть проблемы со скриптами, в которых используется ip адрес посетителя и перестанет правильно работать механизм ограничения доступа по ip адресам с помощью .htaccess.

Получаем пакет:

$ rpm -ihv http://centos.alt.ru/repository/centos/5/x86_64/centalt-release-5-3.noarch.rpm

Отключаем репозиторий, чтобы система не «притащила» ненужных нам обновлений пакетов

vim /etc/yum.repos.d/centalt.repo

Выставляем enabled=0

Устанавливаем пакет:

yum -y --enablerepo=CentALT install mod_rpaf


Настройка rpaf-модуля

Откроем файл конфигурации Apache2 и допишем в конец файла следующие строки:

LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname Off
RPAFproxy_ips 127.0.0.1
RPAFheader X-Real-IP

После всех описанных манипуляций перезапустим Apache и Nginx

$ service httpd restart && service nginx restart

Напоминаем, что полная перезагрузка Вашего сервера в данном случае не обязательна.

Теперь связка работает, Nginx обрабатывает статичные данные, Apache -динамические.

Обращаем Ваше внимание, что данный пример настройки действителен для одного хоста. В случае наличия более чем одного сайта, содержимое файлов конфигурации будет отличаться.