Добрый день!
Да, на мой взгляд, Nginx в несколько раз быстрее сервера Apache. Некоторые возразят - ведь Apache можно оптимизировать и он тоже станет быстрым. Это правда, но, не надо забывать, что и Nginx можно очень сильно разогнать. Подробно про оптимизацию я обязательно напишу отдельную статью.
Немного теории о Nginx + php-fpm
В веб-сервере Apache php является подключаемым модулем, такая связка работает медленно и потребляет много ресурсов. Из-за этой неудачной архитектуры, Apache обычно не может обработать более 200-300 запросов в секунду даже на очень мощном сервере. В Nginx же применена другая архитектура - сам веб-сервер Nginx обрабатывает только запросы на статику (картинки, css и прочее), а выполнение php отдает другому программному серверу - php-fpm. Php-fpm (FastCGI Process Manager) - это полностью самостоятельное программное обеспечение, его можно установить на одном сервере с Nginx (для небольших проектов), либо вынести на отдельный сервер. Большие проекты обычно обслуживают по несколько серверов с Nginx, php-fpm и базами данных.
Заменяя сервер Apache на Nginx + php-fpm, вы сможете ускорить обработку запросов пользователей и сильно сэкономить на "железе". Веб проект с посещаемостью до 10000 уникальных посетителей в день вполне сможет жить на самом дешевом виртуальном сервере от DigitalOcean за 5$ в месяц. Кстати, если вы перейдете по этой ссылке - DigitalOcean, вы получите 10$ при регистрации, а это 2 месяца использования виртуального сервера. Никаких дополнительных условий при этом там нет.
Но перейдем к делу. Я буду описывать процесс установки и настройки на примере CentOS 6.x, но он не сильно будет отличаться и для других дистрибутивов Linux.
Установка Nginx:
1. Установка репозитария Nginx: в стандартных дистрибутивах Linux по умолчанию нет дистрибутива Nginx, поэтому добавим его в систему.
vi /etc/yum.repos.d/nginx.repo
Далее нажмите i для перехода в режим редактирования редактора vi и вставьте:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
Далее нажмите ":wq" и Enter для сохранения и выхода. Все, теперь Nginx доступен для автоматической установки через менеджер пакетов yum. Если вы используете другой дистрибутив Linux - перейдите на эту страницу для получения инструкций именно для вашей системы.
2. Установка Nginx из репозитария: теперь просто выполните команду установки.
yum install nginx
Установка php-fpm:
Php-fpm доступен по всех современных дистрибутивах по умолчанию, поэтому просто выполните установку:
yum install php-fpm
При этом будут установлен сам сервер и все вспомогательные пакеты. Если что-то не получается, можно собрать php-fpm из исходников самостоятельно, для подробных инструкций перейдите сюда.
Настройка и запуск Nginx + php-fpm:
1. Начнем с php-fpm: откройте файл конфигурации
vi /etc/php-fpm.d/www.conf
и пропишите там работу через сокет (так будет работать быстрее):
listen = /var/run/php5-fpm.sock
измените существующую строчку "listen =" или добавьте новую и удалите старую.
2. Теперь перейдем к Nginx: создайте файл конфигурации для своего первого сайта (site1 замените на название сайта, хотя будет работать и так)
vi /etc/nginx/conf.d/site1.conf
Ниже приведена минимальная конфигурация, можете просто ее скопировать. Все что надо заменить, выделено красным. В данной конфигурации настроена отдача статических файлов и доступ к одному php-файлу - index.php. Все современные CMS запускаются одним файлом, поэтому такая конфигурация подойдет для большинства задач. Если вам надо запускать другие php-файлы, пропишите их отдельно. В данной конфигурации файлы сайта надо положить в папку /home/mysite/public_html/
server {
listen [ip адрес сервера]:80;
server_name voprosoff.net;
resolver 8.8.8.8;
error_log /var/log/nginx/voprosoff_net_error.log warn;
root /home/voprosoff_net/public_html;
access_log /var/log/nginx/voprosoff_net-access.log;
charset utf-8;
index index.php;
location ~ .*(gif|jpg|jpeg|png|ico|swf|txt|pdf|doc|docx|exe|xls|xlsx|strings|zip|rar|7z)$ {
expires 1y;
}
location ~ .*(html|htm|js|css)$ {
expires 1y;
}
location ~ ^/index.php {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param SCRIPT_FILENAME /home/voprosoff_net/public_html/index.php;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_NAME /index.php;
}
}
Теперь положите файлы вашего первого сайта в папку /home/site1/public_html/ и мы готовы к запуску.
3. Запуск nginx + php-fpm:
service nginx start
service php-fpm start
Если вы все сделали правильно и нигде не ошиблись, результат будет такой:
Если у вас остались вопросы или нужны уточнения - пожалуйста, задайте вопрос или оставьте комментарий.
Я всегда рад помочь!
Удачи вам!