Настройка nginx centos 7

Обновлено: 07.07.2024

Это руководство покажет, как установить и запустить Nginx на сервере CentOS 7.

Требования

Для выполнения данного руководства понадобятся привилегии root. Чтобы узнать, как получить все root-привилегии, читайте руководство «Начальная настройка сервера CentOS 7».

1: Репозиторий Nginx

Чтобы добавить yum-репозиторий Nginx на CentOS 7, откройте терминал и используйте следующую команду:

2: Установка Nginx

Теперь можно приступать к установке Nginx на сервер. Для этого используйте команду yum:

sudo yum install nginx

Затем нужно ответить yes на извещение, после чего Nginx завершит установку на виртуальный выделенный сервер.

3: Запуск Nginx

Веб-сервер Nginx не запускается самостоятельно. Чтобы запустить Nginx, наберите:

sudo systemctl start nginx.service

На данном этапе можно выполнить проверку, чтобы убедиться, что все прошло должным образом; для этого посетите общественный IP-адрес сервера в веб-браузере (чтобы узнать общественный IP-адрес сервера, см. инструкции в следующем разделе):

Это должно вывести веб-страницу Nginx для CentOS 7 по умолчанию, которая предоставляет некоторую важную информацию, а также позволяет протестировать Nginx.

Если такая страница появилась, значит, все идет как надо.

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

sudo servicectl enable nginx.service

Готово! Теперь веб-сервер Nginx установлен и запущен.

Как узнать общественный IP-адрес сервера

Чтобы узнать общественный IP сервера, запустите следующую команду:

ip addr show eth0 | grep inet | awk '< print $2; >' | sed 's/\/.*$//'

Root-каталог и конфигурационные файлы Nginx

Чтобы начать обслуживать собственные страницы или приложения через Nginx, нужно знать расположение конфигурационных файлов и root-каталога веб-сервера по умолчанию.

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

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

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

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

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

yum install nginx

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

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

Теперь добавляем 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

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

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

location / root /usr/share/nginx/html;
index index.php;
>

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

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

\.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.

Кроме функции веб-сервера, программа может работать в качестве обратного прокси, прокси для TCP/UDP или почты, а также в качестве балансировщика нагрузки. Nginx используется для обеспечения работы огромного количества сайтов в сети интернет, а также известна, как самый высокопроизводительный веб-сервер. В этой статье мы рассмотрим, как выполняется установка Nginx CentOS 7, а также как выполнить первоначальную настройку программы.

Установка Nginx в CentOS 7

Веб-сервер Nginx есть в официальных репозиториях дистрибутива, та версия уже устарела, и если вы хотите получить новую версию с современными возможностями, вам придётся использовать репозиторий EPEL. Для его добавления в систему выполните:

yum install epel-release


Затем можно установить Nginx:

yum install nginx

Чтобы запустить сервис Nginx, выполните:

systemctl start nginx

Затем необходимо добавить программу в автозагрузку:

systemctl enable nginx


Далее надо разрешить трафик для веб-сервера в брандмауэре системы:

И перезагрузить брандмауэр:

Если все было сделано правильно, то, открыв адрес сервера, на который вы устанавливали Nginx, вы увидите страницу по умолчанию:


Настройка расположения файлов сайта

Установка Nginx CentOS 7 завершена, теперь будет рассмотрена настройка Nginx. Нам нужно сообщить Nginx, где будут находится файлы нашего сайта. В конфигурационном файле /etc/nginx.conf, уже настроен один виртуальный хост. Его мы и будем использовать. Здесь указана опция default_server, поэтому он будет открываться для всех запросов к Nginx:


Сначала нужно создать само расположение файлов. Создайте папку /var/www/html/default, в которой будут храниться наши файлы сайтов, и дайте на неё права пользователю nginx:

mkdir /var/www/html/default
chown nginx:nginx /var/www/html/default

Также можно создать файл index.html в этой папке для теста веб-сервера с таким текстом:

Этот файл тоже должен принадлежать пользователю Nginx. Далее в конфигурационном файле /etc/nginx/nginx.conf найдите секцию server и замените значение параметра root на /var/www/html/default:

Теперь Nginx будет брать файлы сайта из этого каталога при всех запросах. Перезапустите Nginx:

systemctl restart nginx


Если возникает ошибка, убедитесь, что у Nginx есть права для доступа к этому файлу, а также, что SELinux отключён или правильно настроен.

Настройка PHP-FPM Nginx CentOS

Если вам нужен Nginx, то скорее всего, вам нужно также настроить его для работы с интерпретатором PHP. Дальше будет разобрана настройка php-fpm Nginx CentOS 7. Прочитать более подробно про установку PHP 7 в CentOS можно в отдельной статье, а в этой статье мы будем работать с версией, доступной в официальных репозиториях. Для Nginx нам необходимо установить пакет php-fpm:

yum install php-fpm

Затем запустите службу php-fpm командой:

systemctl start php-fpm


Далее нам осталось только связать Nginx с новой службой. Для этого в секцию server добавьте такой код:

\.php$ try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 16k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
include fastcgi_params;
>


Здесь очень важно значение этого параметра:

sudo systemctl reload nginx

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

Затем откройте адрес сервера на который был установлен Nginx плюс phpinfo.php в браузере:

Теперь вы увидите, что php-fpm nginx настроен полностью и корректно работает.

Обратите внимание, что секция location для php - это регулярное выражение и если у вас будут более общие регулярные выражения, то эта секция должна находиться перед ними, потому что Nginx не будет проверять все регулярные выражения и искать самое подходящее, а выберет первое, которое совпадёт.

Выводы

В этой статье мы разобрали, как установить Nginx CentOS 7, а также как настроить первый веб-сайт и подключить обработку скриптов с помощью интерпретатора php-fpm. В следующих статьях разберёмся с настройкой виртуальных хостов для Nginx и SSL-сертификатов.





Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

Оцените статью:

(2 оценок, среднее: 5,00 из 5)

Об авторе

5 комментариев

А зачем php в статье про nginx? мб стоит как то более подробно расписать возможности nginx, например stream проксирование, либо возможность разным сайтам работать под разными пользователями. Подобных этой статей слишком много уже.

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

Я полчаса потратил на ковыряние конфигов, только после твоего коммента дошло! Сайт нормальный вроде, но авторы косячат иногда!

Для организации web сервера установим на CentOS 7 связку nginx + php-fpm. Подразумевается, что у вас уже есть настроенный сервер CentOS 7, если нет, то рекомендую статью на эту тему - CentOS 7 настройка сервера. Связка nginx и php fpm дает большую производительность, нежели apache с php.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на . Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда. Данная статья использует в настройке компоненты только из официальных репозиториев CentOS 7. Это максимально стабильный вариант настройки. Так как это консервативная система, очень многие программы в ней старых версий. Если вам нужен самый свежий софт, рекомендую новую статью по такой же теме - установка и настройка nginx php-fpm7.

Установка nginx на CentOS 7

Ставим непосредственно web сервер:

Добавляем в автозагрузку:

Проверяем, запустился ли:

Теперь можно зайти на тестовую страничку, чтобы убедиться, что nginx работает:

Не забудьте открыть 80-й порт на фаерволе.

Nginx + php-fpm на CentOS 7

Установка mysql на CentOS 7

Практически ни один web сервер сейчас не обходится без mysql. В centos 7 вместо mysql устанавливается mariadb, которая имеет полную совместимость с mysql, в том числе понимает все ее команды. Так что ставим на сервер:

Добавляем в автозапуск:

Проверяем, запустилась ли mysql:

Теперь воспользуемся скриптом безопасности, который позволит задать пароль root и произвести некоторые настройки:

Установка php-fpm на CentOS 7

Устанавливаем php-fpm и некоторые модули, которые скорее всего пригодятся в дальнейшей работе:

Так же я предлагаю установить APC - бесплатный и открытый кэшер кода PHP, который кэширует и оптимизирует промежуточный код PHP, ускоряя его исполнение. Установим APC из хранилища PHPpecl. Для того, чтобы скомпилировать пакет APC нужно установить Centos Development tools.

На все вопросы просто жмем enter, выбирая параметры по-умолчанию.

Теперь отредактируем /etc/php.ini как нам рекомендует инсталлятор:

Задаем параметр cgi.fix_pathinfo=0 и добавляем в конце строку extension=apc.so
Заодно установим сразу же часовой пояс: date.timezone = "Europe/Moscow"

Создадим файл настроек APC:

Добавляем php-fpm в автозагрузку:

Настройка nginx и php-fpm на CentOS 7

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

Более подробно о том, как выполнить базовую настройку nginx читайте в отдельной обширной статье.

Теперь правим конфиг php-fpm, приводим его к следующему виду:

Создаем необходимые каталоги:

Nginx + php-fpm

Если нет, то идем в логи и смотрим, в чем ошибка.

Установка phpmyadmin на CentOS 7

Для удобства управления базами веб сайтов я всегда использую phpmyadmin. Установим ее:

Копируем файлы панели в наш виртуальный домен, созданный ранее:

У меня при первом запуске в браузере открылся просто белый лист. Начал разбираться в чем дело. В логе ошибок nginx этого виртуального хоста увидел ошибку:

*43 FastCGI sent in stderr: "PHP message: PHP Fatal error: Call to undefined function __() in /web/sites/pma.site1.ru/www/libraries/core.lib.php on line 245" while reading response header from upstream, client: 77.47.234.119, server: pma.site1.ru, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fpm/php5-fpm.sock:", host: "pma.site1.ru"

После этого загрузилась панель phpmyadmin:

phpmyadmin на centos

Более подробную информацию об установке и настройке phpmyadmin смотрите в отдельной статье.

На этом все, настройка nginx + php-fpm на CentOS7 закончена.

Онлайн курсы по Mikrotik

  • Знания, ориентированные на практику;
  • Реальные ситуации и задачи;
  • Лучшее из международных программ.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

27 комментариев

Добрый день!
Вы тут в пункте "Настройка nginx и php-fpm на CentOS 7" связали nginx и php-fpm но php 5.4
где можно найти связку nginx и php-fpm 7.1?

Так ничего делать и не надо. Создайте базу на текущем сервере и подключайтесь к ней удаленно. В больших проектах так чаще всего и бывает, что сервер с базой данных это отдельный сервер.


10 Июл 2021 23:07:41 | 0 comments

Установка и базовая настройка Nginx на CentOS 7

Про установку и базовую настройку Nginx на Debian я уже писал неоднократно, а вот CentOS как-то обошел стороной.

Исправим же это.

Исходные данные: ОС CentOS 7
Задача: Установить и настроить Nginx (ветка Mainline)

1. Установим вспомогательные утилиты

2. Добавим репозитарий Nginx в ОС

Добавим файл репозитария Nginx:

Включим репозитарий nginx-mainline:

3. Установим Nginx и OpenSSL (опционально)

4. Запустим Nginx

5. Проверим факта запуска Nginx

6. Проверим открытые порты

Видим, что Nginx ожидает соединения на 80 порту на всех сетевых интерфейсах.

Теперь займемся базовой настройкой.

1. Создадим директорию для хранения SSL сертификатов и DH-ключей, а также создаем файл с параметрами для DHE-шифров:

2. Создадим директории для хранения настроек Web-сайтов:

3. Отредактируем основной файл настроек Nginx.

Я приведу базовый эталонный файл настроек который использую я на 99% серверов, рекомендую использовать его с дополнительными Вашими правками под конкретные нужды. В предыдущей статье мы уже рассматривали его, с тех пор ничего не изменилось.

После этого проверяем конфигурацию Nginx:

Если ошибок нет, то перезагружаем конфигурацию Nginx:

4. Меняем системные лимиты на количество открытых файлов.

Т.к. мы указали в nginx.conf параметр worker_rlimit_nofile = 10000, то будем исходить из него.

Традиционно во всех статьях в Интернет все меняют лимиты через редактирование файла /etc/security/limits.conf, но это неправильно, т.к. для CentOS этот файл не работает так как хочется.

В CentOS 7 используется система инициализации systemd и поэтому лимиты на максимальное количество открытых файлов нужно настроить для systemd, для этого выполняем:

ВАЖНО! Если на Вашем сервере с CentOS включен firewall (посмотреть список правил можно командой iptables -nvL), то необходимо разрешить сетевые подключения на порт 80 и 443. В данной статье я не буду рассматривать как это сделать.

За вывод данной страницы отвечает пока один единственный виртуальный сервер, его конфигурация находится в файле /etc/nginx/conf.d/default.conf

Выведем его содержимое без комментариев:

На этом базовая настройка Nginx завершена, до скорых встреч.

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

Читайте также: