В статье описано как установить nginx в Ubuntu. Рассмотрим процесс настройки LEMP сервера на базе хостинга от DigitalOcean.
LEMP — аббревиатура, обозначающая комплекс программ для развертывания полного серверного окружения. Название формируется из входящих компонентов:
- Linux – операционная система Linux;
- Nginx (читается EnginX) — веб-сервер;
- MariaDB / MySQL — СУБД;
- PHP – язык программирования, используемый для создания веб-приложений (помимо PHP могут подразумеваться другие языки, такие как Perl и Python).
Данная связка серверного ПО пока мало распространена у большинства традиционных хостингов, но с каждым днем становится все более популярной.
Шаг первый — установка веб-сервера Nginx
sudo apt-get update
sudo apt-get install nginx
Теперь сервер Nginx установлен.
Проверить его работу, можно открыв браузер и перейдя на IP адрес того компьютера на котором устанавливали Nginx: http://server_domain_name_or_IP
Если это ваш локальный компьютер то достаточно набрать http://localhost
Вы должны увидеть стартовую страницу Nginx:
Старт и остановка сервера осуществляется командами:
sudo service nginx start
sudo service nginx stop
Так как у меня первоначально стоял Apache2, пришлось сначала остановить его и затем запустить Nginx:
sudo service apache2 stop
sudo service nginx start
Шаг второй — устанавливаем базу данных MySQL
sudo apt-get install mysql-server
В процессе установки вам будет предложено ввести пароль администратора MySQL, который вам стоит запомнить или записать.
Все, MySQL установлен, но еще не настроен до конца.
Во-первых, необходимо создать первичную структуру для хранения данных самой MySQL. Мы можем это сделать командой:
sudo mysql_install_db
Далее нам необходимо запустить сценарий безопасности, который изменит некоторые настройки идущие по умолчанию:
sudo mysql_secure_installation
Вам нужно будет ввести пароль администратора MySQL, который Вы выбрали во время установки.
Далее, вам будет предложено изменить его. Если в этом нет необходимости, введите «N» и нажмите «ENTER». После этого вам будет предложено удалить некоторых тестовых пользователей и базы данных. Вы должны просто нажимать «ENTER» при появлении вопросов, чтобы удалить опасные настройки по умолчанию.
После того, как сценарий завершиться, MySQL готов к использованию.
Шаг третий — установка PHP
После установки сервера Nginx и MySQL нам необходимо связующее звено — серверный язык/ который будет отрабатывать динамические запросы.
Поскольку Nginx не содержит встроенной обработки PHP как и некоторые другие веб-серверы, нам нужно установить php5-fpm (Менеджер процессов FastCGI). Благодаря ему Nginx сможет обрабатывать PHP запросы.
Помимо самого модуля, нам потребуется вспомогательный пакет, который позволит PHP общаться с нашей базы данных.
Давайте произведем установку, набрав в консоли:
sudo apt-get install php5-fpm php5-mysql
Повышаем безопасность PHP-FPM
Для повышения безопасности работы с PHP нам надо произвести донастройку.
Отроем на редактирование файл:
sudo nano /etc/php5/fpm/php.ini
после чего, найдем строчку содержащую «cgi.fix_pathinfo», которая по-умолчанию выглядит так:
;cgi.fix_pathinfo = 1
раскомментируем ее и изменим значение, должно получиться так:
cgi.fix_pathinfo = 0
Сохраните измененный файл.
Это призвано устранить опасность неправильно трактования (и возникающей уязвимости) запросов вида «/image.gif/foo.php»
Шаг четвертый — настройка работы NGINX с PHP
Теперь у нас есть все составляющие сервера. Нам необходимо лишь связать NGINX и PHP для того чтоб он мог отрабатывать динамический контент.
Сделаем настройку так называемых серверных блоков (то же самое, что виртуальные хосты у Apache):
sudo nano /etc/nginx/sites-available/default
Без комментов этот блок смотрится примерно так:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
server_name localhost;
location / {
try_files $uri $uri/ =404;
}
}
В него нужно внести небольшие изменения.
Во-первых, нужно внести index.php как первое значение директивы index, чтобы индексные файлы PHP обслуживались при запросе каталога.
На месте директивы server_name, надо указать доменное имя или общедоступный IP сервера.
Конфигурационный файл включает в себя несколько закомментированных строк, которые определяют процедуры обработки ошибок. Их нужно раскомментировать.
Также нужно будет раскомментировать часть другого раздела и добавить директиву try_files, чтобы убедиться, что Nginx не передает подозрительные запросы на процессор PHP.
В приведенном ниже блоке кода изменения выделены красным:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.php index.html index.htm;
server_name server_domain_name_or_IP;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
Вот и все – мы настроили сервер на основе NGINX для нашей Ubuntu 14.04 и знаем как установить nginx. Теперь перезагрузите его, чтобы все наши изменения вступили в силу:
sudo service nginx restart
559