Сейчас 127 заметки.
Установка и настройка 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>
- В этой строке указывается адрес почтового ящика администратора сервера, т. е. Ваш. Имя-пример "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 -динамические.
Обращаем Ваше внимание, что данный пример настройки действителен для одного хоста. В случае наличия более чем одного сайта, содержимое файлов конфигурации будет отличаться.