Главная > FAQ > Установка и настройка nginx для уменьшения нагрузки Apache

Установка и настройка nginx для уменьшения нагрузки Apache

На файловом сервере в данный момент не очень много оперативки и как выяснилось в ходе тестов при некоторых условиях Apache умудряется захавать довольно много, что пришлось даже уменьшать число коннектов, которые держатся долго из-за большого размера файлов. Посоветовали использовать дополнительный легкий и быстрый вебсервер для раздачи статического содержимого. На место такого рекомендовали nginx. Опыта его использования у меня не было, поэтому разбирался с нуля. Так что если у вас будут советы или полезные дополнения, буду благодарен, если вы напишите их в комментариях.

1) Установка:

— Качаем дистрибутив NGINX с сайта автора:  http://sysoev.ru/nginx/download.html
За собой он тянет:
— библиотеки PCRE: http://www.pcre.org/
— библиотеки zlib: http://www.gzip.org/zlib/

Все 3 архива с исходниками качаем с помощью wget например сюда: /var/tmp/
Распаковываем все три дистрибутива.

Переходим в папку с nginx-0.8.43. Запускаем конфигуратор:

./configure
—sbin-path=/usr/local/nginx/nginx
—conf-path=/usr/local/nginx/nginx.conf
—pid-path=/usr/local/nginx/nginx.pid
—with-pcre=../pcre-4.4
—with-zlib=../zlib-1.1.3

Подробно об опциях конфигуратора здесь: http://sysoev.ru/nginx/docs/install.html

Если все прошло удачно (у меня там вываливались какие-то проблемы которые я решал просто следуя советам конфигуратора), то сам бинарник nginx будет лежать здесь: /usr/local/nginx/nginx, файл конфигурации здесь: /usr/local/nginx/nginx.conf

2) Настройка конфигурации:

Здесь возможно два варианта. В первом nginx работает параллельно с Apache на другом порту или на другом IP (я делал таким образом). Второй вариант когда nginx работает как прослойка между пользователем и Apache. Сложные запросы, отдавая тяжелому и медленному Апачу, а статику (картинки и видео раздавая напрямую) почти не потребляя ресурсов.
Об этих двух вариантах написано здесь: http://server-tuning.info/nginx/
По важным настройкам конфигурационного файла здесь: http://habrahabr.ru/blogs/nginx/66764/
Пример конфигурационного файла здесь: http://sysoev.ru/nginx/docs/example.html

Мой выглядит следующим образом:

user nobody;
worker_processes 2;

error_log logs/error.log;
pid logs/nginx.pid;

events {
worker_connections 2048;
}

http {
include mime.types;
default_type application/octet-stream;

log_format main ‘$remote_addr — $remote_user [$time_local] «$request» ‘
‘$status $body_bytes_sent «$http_referer» ‘
‘»$http_user_agent» «$http_x_forwarded_for»‘;

access_log logs/access.log main;

sendfile on;
keepalive_timeout 15;

server {
listen 8080;
server_name localhost example.ru www.example.ru;

location /download/ {
root /var/www/example.ru/data/public_html;
}
}
}

Если вкратце, то при обращении к папке /download/ на сервере по 8080 порту, файлики оттуда раздает nginx. То есть если кто-то запрашивает файл вида http://example.ru:8080/download/1.mp3 то раздачей файла будет заниматься nginx.

3) Запуск, остановка и автозапуск.

Для запуска достаточно просто запустить с консоли /usr/local/nginx/nginx для остановки /usr/local/nginx/nginx –s stop

Автозапуск после загрузки в разных операционных системах делается по-разному. Например, в CentOS или RedHat это делается так. Необходимо добавить запуск nginx в файл автозапуска: /etc/rc.d/rc.local

Его примерное содержимое после вашей правки будет выглядеть так:

#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don’t
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
/usr/local/nginx/nginx

Categories: FAQ Tags: , ,
  1. Пока что нет комментариев.
  1. Пока что нет уведомлений.