Skip to main content

NGINX на CentOS 7 — установка и настройка

Для получения последней версии NGINX создаем файл с настройками нового репозитория:

nano /etc/yum.repos.d/nginx.repo

И приводим его к следующему виду:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

Обновляем систему и список пакетов:

yum update

если система запросит подтверждение, отвечаем Y.

Устанавливаем NGINX следующей командой:

yum install nginx

По умолчанию, в CentOS работает брандмауэр, поэтому необходимо добавить рабочие порты 80 (http) и 443 (https) в правила на исключение:

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp

в данном примере добавлены порты 80 и 443. Первый используется в NGINX по умолчанию. Если планируется использовать другой, необходимо добавить его. Или наоборот — если не запланирована работа по безопасному протоколу https, можно его не включать.

Перезапускаем firewalld:

firewall-cmd --reload

Теперь добавляем NGINX в автозапуск при загрузке CentOS

systemctl enable nginx

И запускаем веб-сервер:

systemctl start nginx

Для проверки запустите браузер на другом компьютере и введите в адресную строку IP-адрес сервера, который был настроен. Должна загрузиться тестовая страница, например:

image.png

Тестовая страница правильно настроенного сервера NGINX

NGINX + PHP + PHP-FPM

В чистом виде, веб-сервер NGINX используется редко. Настроим связку с PHP и его обработчиком — PHP-FPM.

Для начала, устанавливаем тот и другой следующими командами:

yum install php
yum install php-fpm

Разрешаем автозапуск php-fpm и запускаем его:

systemctl start php-fpm
systemctl enable php-fpm

Готово.

Настройка NGINX для работы с PHP и PHP-FPM

Открываем настройки сайта по умолчанию:

nano /etc/nginx/conf.d/default.conf

Редактируем секцию location:  

location / {
 root   /usr/share/nginx/html;
 index  index.php;
}

здесь мы поменяли index.html на index.php. Эта настройка позволит автоматически искать и запускать файл index.php, если путь к скрипту не указан явно.

Приводим к следующему виду секцию server:  

  location ~ \.php$ {
        set $root_path /usr/share/nginx/html;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_param DOCUMENT_ROOT $root_path;
    }

где /usr/share/nginx/html — корневой путь по умолчанию для хранения сайта; 9000 — порт, на котором работает php-fpm.

Переименовываем индексный файл для текущего сайта по умолчанию:

mv /usr/share/nginx/html/index.html /usr/share/nginx/html/index.php

Отредактируем его (содержимое заменим на это):

nano /usr/share/nginx/html/index.php
<?php phpinfo(); ?>

Перезапускаем nginx:

systemctl restart nginx

Открываем сайт — мы должны увидеть сводную информацию по серверу и работе PHP.

Совместная работа NGINX и PHP-FPM через сокет

В конфигурационном файле NGINX меняем эту строчку:

fastcgi_pass 127.0.0.1:9000;

На эту:

fastcgi_pass unix:/var/run/php-fpm/php5-fpm.sock;

Открываем настройки php-fpm:

nano /etc/php-fpm.d/www.conf

Меняем:

listen = 127.0.0.1:9000

На:

listen = /var/run/php-fpm/php5-fpm.sock

Перезапускаем nginx и php-fpm:

systemctl restart nginx
systemctl restart php-fpm