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-адрес сервера, который был настроен. Должна загрузиться тестовая страница, например:
Тестовая страница правильно настроенного сервера 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;
}
Переименовываем индексный файл для текущего сайта по умолчанию:
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