Свежие комментарии
- Ehash1 к записи Как настроить демилитаризованную зону DMZ в Mikrotik Router OS
- Рол к записи Запуск административных инструментов из cmd
- Николай к записи Как настроить демилитаризованную зону DMZ в Mikrotik Router OS
Рубрики
Установка и настройка связки Nginx+Apache
Связка двух веб-серверов, один из которых выполняет функцию фонтенда (Nginx), другой — бэкенда (Apache2), предназначена для снижения общей нагрузки на сервер. Достигается это за счет того, что более легкий и не обремененный дополнительным функционалом Nginx первым принимает все запросы пользователей. Он самостоятельно выдает по запросам статический контент (изображения, html-файлы, javascript-скрипты..), не озадачивая этой функцией тяжеловесный Apache, который, в свою очередь, обрабатывает динамический контент. Apache не работает напрямую с пользователем, все их запросы проксируются Nginx, и ему же возвращаются ответы. Так достигается разделение труда: Nginx освобождает Apache от необходимости “общаться” с множеством пользователей и обрабатывать запросы на статику, которая составляет большую часть исходящего трафика. Apache не создает множества дочерних процессов, потребляющих оперативную память.
Данная связка часто применяется для обеспечения работы крупных ресурсов с большой посещаемостью. Для ресурсов с маленькой посещаемостью такая связка не даст ощутимого прироста производительности.
Если Вы являетесь пользователем ISPmanager, нижеизложенная информация пригодится Вам лишь для ознакомления. Его функционал позволяет создать такую связку достаточно быстро и без манипуляции с командной строкой.
Данная статья была протестирована на CentOS 5 и Debian Squeeze. Связка работает в том же виде и на других дистрибутивах, но по причине наибольшей популярности первых, мы будем говорить именно о них. Основная часть данной статьи посвящена CentOS, но различия с Debian заключаются только в названиях пакетных менеджеров и нескольких незначительных моментах. Все особенности установки для Debian описаны в заключительной части данной статьи. Команды и примеры файлов конфигурации, не указанные в этом разделе, подходят для обеих систем.
Установка nginx
CentOS
Для начала нам необходимо подключить репозитории EPEL и CentALT. Это нужно для того, чтобы мы смогли установить Nginx с поддержкой модуля RPAF и сам модуль для Apache.
Для подключения этих репозиториев введите в консоли команды:
# для 32-битных ОС rpm -ihv http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm rpm -ihv http://centos.alt.ru/repository/centos/5/i386/centalt-release-5-3.noarch.rpm # для 64-битных ОС rpm -ihv http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm rpm -ihv http://centos.alt.ru/repository/centos/5/x86_64/centalt-release-5-3.noarch.rpm
Далее, выполните команду установки пакета nginx:
yum install nginx
В большинстве случаев требуется, чтобы nginx загружался автоматически при запуске сервера. Для этого выполните следующую команду:
chkconfig nginx on
Debian/Ubuntu
Для установки пакета в ОС Debian или Ubuntu достаточно выполнить команду в консоли:
apt-get install nginx
Nginx автоматически будет добавлен в автозагрузку при запуске сервера.
Конфигурация Nginx
Следующий этап — изменение файла конфигурации Nginx. Путь к файлу конфигурации: /etc/nginx/nginx.conf
Наш конфиг файл должен выглядеть примерно так:
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 Вашего сервера
# здесь и далее вместо mysite.ru указывается имя Вашего сайта
server_name mysite.ru www.mysite.ru;
access_log /var/log/nginx/host.access.log main;
server_name_in_redirect off;
# Секция ниже описывает параметры, по которых фронтенд обменевается с бэкендом,
# такие, как адрес бэкенда, параметры прямого редиректа, параметры передачи заголовков,
# максимальный размер принимаемых файлов и пр.
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.
# Вы можете добавить по аналогии расширения файлов, которые будут отдаваться Nginx'ом.
# Динамические файлы мы будем отсылать на Apache
location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|js)$ {
root /var/www/mysite.ru;
}
}
}
Установка Apache2
CentOS
В списке пакетов для CentOS Apache2 значится как httpd, потому необходимо выполнить следующую команду в консоли:
yum install httpd
Debian/Ubuntu
Для Debian/Ubuntu установить Apache нужно командой:
apt-get install apache2
Конфигурация Apache
Приводим соответствующую часть файла конфигурации Apache к такому виду:
Файл конфигурации располагается:
Debian/Ubuntu: /etc/apache2/apache2.conf
CentOS: /etc/httpd/conf/httpd.conf
Listen 127.0.0.1:8080
NameVirtualHost 127.0.0.1:8080
# В строке ниже указывается адрес почтового ящика администратора сервера,
# т. е. Ваш. Имя-пример “mysite.ru” здесь и далее необходимо заменить на имя Вашего сайта
ServerAdmin [email protected]
DocumentRoot /var/www/mysite.ru/
ServerName mysite.ru
ErrorLog logs/mysite.ru-error_log
CustomLog logs/mysite.ru-access_log common
Установка модуля RPAF
Т.к. теперь все запросы к Apache приходят не от удалённых клиентов, а от Nginx, то в итоге IP-адрес клиента Apache определяет как локальный (127.0.0.1). Для решения этой проблемы нам нужен модуль RPAF. Он берет тело заголовка X-Forwarded-For, присланного от фронтенда (Nginx) и заменяет значение заголовка REMOTE_ADDR на бекенде (Apache).
CentOS
Установка в CentOS выполняется следующей командой:
yum install mod_rpaf
Debian/Ubuntu
В Debian или Ubuntu установка и включение модуля RPAF в Apache выполняется следующими командами:
apt-get install libapache2-mod-rpaf a2enmod rpaf
Настройка модуля RPAF
Файл конфигурации RPAF находится:
Debian/Ubuntu: /etc/apache2/mods-enabled/rpaf.conf
CentOS: /etc/httpd/conf.d/rpaf.conf
Он должен содержать следующие строки:
RPAFenable On
RPAFsethostname Off
RPAFproxy_ips 127.0.0.1
RPAFheader X-Real-IP
Если у вас установлена ОС CentOS, то в начало этого файла обязательно добавьте строку:
LoadModule rpaf_module modules/mod_rpaf-2.0.so
Завершение настройки (перезапуск сервисов)
На этом настройка связки закончена. Теперь нужно только перезапусть Apache и Nginx. Команды перезапуска сервисов различаются для ОС (из-за различий в названиях пакетов).
Для CentOS выполните команды:
/etc/init.d/httpd restart /etc/init.d/nginx restart
Для Debian и Ubuntu команды будут следующие:
/etc/init.d/apache2 restart /etc/init.d/nginx restart
Теперь связка работает, Nginx обрабатывает статичные данные, Apache — динамические.
Источник: http://lib.clodo.ru/web-server/webserver-lna.html
Рубрика: *CentOS
1 комментарий
Установка и настройка nginx + php-fpm на CentOS
Начнем с того что установка nginx + php-fpm нужна для того, что бы сэкономить оперативную память на вашем VPS. Для примера возьмем VPS с CentOS 5 (5.5), используя общедоступные репозитории CentOS 5 для простого обновления софта. Используем для этого репозиторий centalt.
1. Для начала обновим нашу систему:
yum -y update
2. Потом установим centalt репозиторий:
rpm -ihv http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm rpm -ihv http://centos.alt.ru/repository/centos/5/i386/centalt-release-5-3.noarch.rpm
3. Теперь установим nginx, php-fpm, vsftpd, phpMyAdmin, mysqld:
yum install nginx php-fpm php-gd php-mysql mysql-server
4. Создаем пользователя на нашем vps, от которого будем заливать файлы по ftp на сервер:
Добавляем в /etc/shells шелл /bin/date:
echo "/bin/date" >>/etc/shells
5. Теперь нам нужно определить id пользователя nginx:
id nginx
Получим:
uid=103(nginx) gid=103(nginx) groups=103(nginx)
Нас интересует uid. Таким образом, создаем пользователя:
useradd -u 103 -o -s /bin/date -p 123456 ftpkens
ftpkens — логин ftp-пользователя
123456 — желаемый пароль
Если мы хотим создать пользователя с uid nginx но при этом хотим иметь возможность подключаться по ssh и иметь привилегии su/sudo, можем выполнить это:
adduser -d /webserver/www/ -G wheel,nginx -s /bin/bash -p 123456 -u 103 -o -U admin
5. Следом установим пароль root mysql-сервера, так как будем использовать phpMyAdmin с ограничением по паролю пользователя mysql,
Указываем чтоб mysqld запускался автоматически при загрузки системы:
chkconfig mysqld on service mysqld start mysql_secure_installation
Там пишем два раза желаемый пароль root mysql, со всем соглашаемся.
6. Настраиваем php-fpm:
chkconfig php-fpm on nano /etc/php-fpm.conf
Там заменяем 2 строки:
nobody nobody
На:
nginx nginx
Запускаем php-fpm:
service php-fpm start
7. Настраиваем nginx:
chkconfig nginx on
nano /etc/nginx/nginx.conf
Корректируем примерно так ( невкоем случае не копируем отсюда!):
=======
user nginx;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
server {
listen 80;
server_name kens.me www.kens.me;
location / {
root /home/kensftp/kens.me;
index index.php index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/www/nginx-dist;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param script_FILENAME /home/kensftp/kens.me$fastcgi_script_name;
include fastcgi_params;
}
========
В worker_processes пишем колличество cpu в системе(у нас 1), kens.me — это имя сайта, который
мы будем хостить на сервере, kensftp — пользователь ftp.
Запускаем nginx:
service nginx start
8. Делаем так, чтоб phpMyAdmin был нам доступен по адресу http://kens.me/myadmin
ln -s /usr/share/phpMyAdmin /home/kensftp/kens.me/myadmin
9. После всего этого заходим на созданный нами ftp, используя данные, которые мы прописали в пункте 4, делаем
дирректорию kens.me и заливаем в нее контент сайта. Также, используя данные доступа root к mysql,
с помощью phpMyAdmin, создаем и заливаем базу данных.
Источник: 100.org.ua/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-nginx-php-fpm-%D0%BD%D0%B0-centos/
Рубрика: *CentOS
Оставить комментарий
RSS & RSS to Email