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

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

Материал из ЗАметки
Версия от 16:13, 15 апреля 2012; Admin (обсуждение | вклад) (Новая страница: «Если Вы являетесь пользователем ISPmanager, нижеизложенная информация пригодится Вам лишь д...»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)

Если Вы являетесь пользователем 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;

  1. 88.88.88.11 нужно заменить на IP Вашего сервера

server_name mysite.ru www.mysite.ru;

  1. Здесь и далее вместо mysite.ru указывается имя Вашего сайта
  2. Эта секция описывает параметры, по которых фронтенд обменевается с бэкендом, #такие, как адрес бэкенда, параметры прямого редиректа, параметры передачи заголовков, максимальный размер принимаемых файлов и пр. 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; }

  1. Эта секция отвечает за местонахождение и типы статичных файлов, обрабатываемых 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 -динамические.

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