Установка веб сервера Nginx

Если вам надо, чтоб сайт работал быстро - нужно использовать веб сервер Nginx, который отличается от других веб серверов своей простотой, быстротой и надёжностью. На данный момент, большинство крупнейших интернет компаний, располагающих высоконагруженными веб ресурсами используют именно Nginx.

Установка Nginx, MySQL, PHP

Устанавливать PHP будем в режиме PHP-FPM (PHP-FPM (FastCGI Process Manager), который является альтернативой PHP FastCGI, и который имеет дополнительные возможности. PHP-FPM работает как демон, запускаемый при старте системы и по умолчанию слушает запросы на порту 9000.

apt-get install nginx
sudo apt-get install mysql-server mysql-client
apt-get install php5-fpm

mysql при установке попросит ввести имя пользователя и пароль. В случае необходимости его потом можно сменить.

Смотрим модули, которые можно установить для PHP

aptitude search php

Устанавливаем необходимые модули:

apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick \
php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode \
php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Настраиваем установленные программы

Для того, чтоб подружить nginx с PHP, нам нужно внести некоторые правки в конфигурационный файл:

vi /etc/nginx/nginx.conf

Сначала изменяем количество рабочих процессов (worker processes) и установим keepalive_timeout к более-менее адекватному значению в соответствии с возможностями сервера:

worker_processes 4;
keepalive_timeout 2;

Виртуальные хосты

Виртуальные хосты определяются блоком server {}.

В файле /etc/nginx/sites-available/default определен виртуальный хост по умолчанию.

Создайте копию этого файла и откройте его на редактирование любым текстовым редактором:

cd /etc/nginx/sites-available/
sudo cp default new-site
sudo vi new-site

Учтите, что для работы с конфигурационными файлами сервера нужны рутовые права, поэтому вначале должна стоять команда sudo.

Нас интересует секция, обозначенная server { ... }

Разкоментируйте обе Listen строки, для того, чтоб nginx слушал запросы на 80 порту как по IPv4 так и по IPv6 протоколам.

listen   80; ## listen for ipv4; this line is default and implied
listen   [::]:80 default ipv6only=on; ## listen for ipv6

Следующие две строки определяют корневую папку веб сервера и индексные файлы. Поправьте путь корневой папки в соответствии с вашими требованиями. К индексным файлам добавьте index.php.

root /usr/share/nginx/www;
index index.php index.html index.htm;

server_name - DNS имя, которое сопоставлено IP адресу данного веб сервера. Символ подчерка обозначает виртуальный хост по умолчанию.

# Make site accessible from http://localhost/
#server_name _;
server_name new-site.profhelp.com.ua

Добавление обработки PHP файлов

В конфигурационном файле по умолчанию этот блок закоментирован - разкомментируйте его. Проверте, чтоб конфиг выглядел так:

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                include fastcgi_params;
        }

Остальные параметры конфигурационного файла пока можно не трогать.

Обратите внимание, что в секции location ~ \.php$ { ... } добавлен параметр try_files $uri =404; Он предназначен для предотвращения запуска произвольного PHP кода на вашем сервере. Эта проблема актуальна для серверов, на которых разрешена выгрузка файлов и включен PHP FastCGI интерпретатор. Так-же, как вариант, можно прописать в файле /etc/php5/fpm/php.ini параметр cgi.fix_pathinfo = 0;.

Сохраните изменения и перегрузите конфигурацию nginx и создайте символическую ссылку в директории /etc/nginx/sites-enabled/, для того, чтоб конфигурация была загружена сервером:

sudo ln -s /etc/nginx/sites-available/new-site /etc/nginx/sites-enabled/new-site

Перезагрузите конфигурацию nginx:

/etc/init.d/nginx reload

По умолчанию, PHP-FPM слушает на порту 9000 лупбэк интерфейса. Так как сервер один, нет необходимости перегружать лупбэк интерфейс:

vi /etc/php5/fpm/pool.d/www.conf

Закомментируйте существующую строку, устанавливая точку с запятой перед ней. Добавьте строку, приведенную ниже:

;listen = 127.0.0.1:9000
listen = /tmp/php5-fpm.sock

Сохраните изменения и перезагрузите сервис php5-fpm:

service php5-fpm restart

Теперь снова откройте конфигурационный файл nginx:

vi /etc/nginx/sites-available/default

Измените для всех виртуальных хостов строку fastcgi_pass 127.0.0.1:9000; на строку  fastcgi_pass unix:/tmp/php5-fpm.sock; например так:

 location ~ \.php$ {
 try_files $uri =404;
 fastcgi_split_path_info ^(.+\.php)(/.+)$;
 ;fastcgi_pass 127.0.0.1:9000;
 fastcgi_pass unix:/tmp/php5-fpm.sock;
 fastcgi_index index.php;
 include fastcgi_params;
 }

Перезагрузите конфигурацию nginx:

sudo /etc/init.d/nginx reload

Теперь давайте проверим, что сервер у нас может отображать php скрипты. Создайте в корневой папке веб сервера файл с расширением .php (можно index.php), откройте его на редактирование, вставьте код из следующего блока и сохраните изменения:

<?php
  phpinfo();
?>

После открытия в браузере адреса http://вашего-сервер/ваш-файл.php вы должны увидеть страницу следующего плана:

Полезные ссылки

Добавить комментарий

You must have Javascript enabled to use this form.