Skip to main content

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

6 min read
#linux
Установка Nginx в CentOS 8

Nginx — это один из самых популярных в мире веб-серверов, который обеспечивает работу целого ряда крупнейших сайтов в Интернете с огромным трафиком. Обычно он использует ресурсы эффективнее, чем Apache, и может использоваться как веб-сервер или обратный прокси-сервер.

Шаг 1 — Установка веб-сервера Nginx

Для установки Nginx мы будем использовать менеджер пакетов dnf, который представляет собой новый доступный по умолчанию менеджер пакетов в CentOS 8.

Установите пакет nginx с помощью следующей команды:

$ sudo dnf install nginx

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

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

$ sudo systemctl enable nginx$ sudo systemctl start nginx

Это позволит запускать Nginx во время загрузки системы.

Шаг 2 — Настройка правил брандмауэра

Если вы активировали брандмауэр firewalld согласно требованиям нашего руководства по первоначальной настройке для CentOS 8, вам потребуется изменить настройки брандмауэра, чтобы разрешить внешние подключения к вашему веб-серверу Nginx, который запускается на порту 80 по умолчанию.

Запустите следующую команду, чтобы на постоянной основе активировать соединения HTTP для порта 80:

$ sudo firewall-cmd --permanent --add-service=http

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

$ sudo firewall-cmd --permanent --list-all

Вывод будет выглядеть следующим образом:

Outputpublic  target: default  icmp-block-inversion: no  interfaces:  sources:  services: cockpit dhcpv6-client http ssh  ports:  protocols:  masquerade: no  forward-ports:  source-ports:  icmp-blocks:  rich rules:

Для применения изменений вам необходимо перезагрузить службу брандмауэра:

$ sudo firewall-cmd --reload

Теперь сервер Nginx полностью установлен и доступен для внешних посетителей.

Шаг 3 — Проверка веб-сервера

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

Если у вас нет доменного имени, указывающего на ваш сервер, и вы не знаете публичный IP-адрес вашего сервера, вы можете найти его, введя следующую команду:

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

Команда выведет несколько IP-адресов. Вы можете попробовать каждый из них в своем браузере.

Также вы можете проверить доступность IP-адреса из других мест в интернете:

$ curl -4 icanhazip.com

Введите полученный адрес в браузере, после чего вы попадете на страницу Nginx по умолчанию:

Если вы увидите эту страницу, это значит, что ваш веб-сервер установлен корректно.

Шаг 4 — Управление процессом Nginx

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

Если вам потребуется остановить работу веб-сервера, вы можете использовать следующую команду:

$ sudo systemctl stop nginx

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

$ sudo systemctl start nginx

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

$ sudo systemctl restart nginx

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

$ sudo systemctl reload nginx

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

$ sudo systemctl disable nginx

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

$ sudo systemctl enable nginx

Шаг 5 — Знакомство с важными файлами и директориями Nginx

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

Контент

  • /usr/share/nginx/html: реальный веб-контент, в состав которого по умолчанию входит только показанная ранее страница Nginx по умолчанию, выводится из директории /usr/share/nginx/html. Это можно изменить путем изменения файлов конфигурации Nginx.

Конфигурация сервера

  • /etc/nginx: директория конфигурации Nginx. Здесь хранятся все файлы конфигурации Nginx.
  • /etc/nginx/nginx.conf: основной файл конфигурации Nginx. Его можно изменить для внесения изменений в глобальную конфигурацию Nginx.
  • /etc/nginx/conf.d/: эта директория содержит файлы конфигурации для блока сервера, где вы можете определить веб-сайты, которые размещены в Nginx. Типичный подход — размещение каждого сайта в отдельном файле, название которого совпадает с доменным именем сайта, например, your_domain.conf.

Журналы сервера

  • /var/log/nginx/access.log: каждый запрос к вашему веб-серверу регистрируется в этом файле журнала, если Nginx не настроен иначе.
  • /var/log/nginx/error.log: любые ошибки Nginx будут регистрироваться в этом журнале.

Шаг 6 — Настройка блоков сервера (опция)

Если вы хотите разместить несколько сайтов на одном и том же веб-сервере Nginx, вам придется создать блоки сервера. Блоки сервера Nginx работают аналогичным с виртуальными хостами Apache образом, позволяя одному серверу реагировать на запросы к нескольким доменным именам и предоставлять разное содержимое для каждого домена. В CentOS 8 серверные блоки определяются в файлах .conf, расположенных в /etc/nginx/conf.d.

По умолчанию Nginx на CentOS 8 настроен для предоставления документов из директории в /usr/share/nginx/html. Хотя это хорошо работает для отдельного сайта, при размещении нескольких сайтов это может стать очень неудобно. Вместо изменения /usr/share/nginx/html``мы создадим внутри /var/www структуру директорий для нашего сайта your_domain, оставив /usr/share/nginx/html“**** в качестве директорию по умолчанию для вывода в случае, если запросу клиента не соответствуют никакие другие сайты.

Создайте директорию для your_domain следующим образом, используя флаг -p для создания необходимых родительских каталогов:

$ sudo mkdir -p /var/www/your_domain/html

Затем необходимо назначить права владения для директории с помощью переменной среды $USER, которая будет использоваться для текущего системного пользователя:

$ sudo chown -R $USER:$USER /var/www/your_domain/html

Затем мы создадим образец страницы index.html для тестирования конфигурации блока сервера. Предоставляемый с CentOS 8 по умолчанию текстовый редактор — vi. vi очень мощный текстовый редактор, но освоить работу с ним неопытным пользователям достаточно сложно. Вы можете установить более удобный для пользователя редактор, например, nano, для облегчения редактирования файлов конфигурации на сервере CentOS 8:

$ sudo dnf install nano

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

$ nano /var/www/your_domain/html/index.html

В этом файле добавьте следующий код HTML:

/var/www/your_domain/html/index.html

            Welcome to your_domain                
Success! Your Nginx server is successfully configured for your_domain. 

This is a sample page.
    

Сохраните файл и закройте его после завершения. Если вы используете nano, вы можете сделать это, нажав CTRL + X, Y.

Чтобы Nginx обслуживал это содержимое, нам нужно создать серверный блок с правильными директивами, которые указывают на наш настраиваемый корневой каталог. Мы создадим новый серверный блок в /etc/nginx/conf.d/your_domain.conf:

$ sudo nano /etc/nginx/conf.d/your_domain.conf

Вставьте следующий блок конфигурации:

/etc/nginx/conf.d/your_domain.conf

server {        listen 80;        listen [::]:80;        root /var/www/your_domain/html;        index index.html index.htm index.nginx-debian.html;        server_name your_domain www.your_domain;        location / {                try_files $uri $uri/ =404;        }}

Сохраните и закройте файл после внесения изменений в его содержимое.

Чтобы убедиться, что в файлах Nginx нет синтаксических ошибок, запустите следующую команду:

$ sudo nginx -t

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

Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful

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

$ sudo systemctl restart nginx

Прежде чем вы сможете проверить изменения в браузере, вам нужно будет обновить контексты безопасности SELinux вашего сервера, чтобы позволить Nginx обслуживать содержание из директории /var/www/your_domain.

Следующая команда позволит использовать ваш настраиваемый корневой каталог документов в качестве содержимого HTTP:

$ chcon -vR system_u:object_r:httpd_sys_content_t:s0 /var/www/your_domain/

Теперь вы можете проверить настройку вашего пользовательского домена, перейдя на http://your_domain, где вы увидите примерно следующее:

Эта страница отображает код HTML, который мы задали в корневой директории документов, созданной для серверного блока. Если вы увидите эту страницу, это означает, что ваш сервер Nginx настроен корректно для обслуживания вашего домена.

This article was updated on 12 ноября 2022