Tutorial

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

Published on March 19, 2020

Developer Advocate

Русский
Установка Nginx в CentOS 8

Введение

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

В этом руководстве мы расскажем, как выполнить установку Nginx на сервере CentOS 8.

Предварительные требования

Для выполнения этого обучающего руководства вам потребуется доступ к серверу CentOS 8, пользователь без прав root с привилегиями sudo и и активный брандмауэр, установленный на сервере. Чтобы выполнить настройку, воспользуйтесь руководством по начальной настройке сервера CentOS 8.

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

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

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

  1. sudo dnf install nginx

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

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

  1. sudo systemctl enable nginx
  2. sudo systemctl start nginx

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

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

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

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

  1. sudo firewall-cmd --permanent --add-service=http

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

  1. sudo firewall-cmd --permanent --list-all

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

Output
public 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:

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

  1. sudo firewall-cmd --reload

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

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

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

Примечание: если вы используете DigitalOcean в качестве вашего провайдера хостинга DNS, вы можете изучить нашу документацию для продукта для получения подробных инструкций по настройке нового доменного имени и указать ваш сервер.

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

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

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

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

  1. curl -4 icanhazip.com

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

Страница Nginx по умолчанию в CentOS 8

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

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

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

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

  1. sudo systemctl stop nginx

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

  1. sudo systemctl start nginx

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

  1. sudo systemctl restart nginx

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

  1. sudo systemctl reload nginx

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

  1. sudo systemctl disable nginx

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

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

Мы создадим серверный блок для домена с именем your_domain. Чтобы узнать больше о настройке доменного имени с помощью DigitalOcean, пройдите наше обучающее руководство Введение в DigitalOcean DNS.

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

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

  1. sudo mkdir -p /var/www/your_domain/html

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

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

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

  1. sudo dnf install nano

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

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

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

/var/www/your_domain/html/index.html
<html>
    <head>
        <title>Welcome to your_domain</title>
    </head>
    <body>
        <h1>Success! Your Nginx server is successfully configured for <em>your_domain</em>. </h1>
<p>This is a sample page.</p>
    </body>
</html>

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

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

  1. 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 нет синтаксических ошибок, запустите следующую команду:

  1. sudo nginx -t

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

Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

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

  1. sudo systemctl restart nginx

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

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

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

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

Серверный блок Nginx

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

Заключение

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

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

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the authors
Default avatar

Developer Advocate

Dev/Ops passionate about open source, PHP, and Linux.

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Become a contributor for community

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

DigitalOcean Documentation

Full documentation for every DigitalOcean product.

Resources for startups and SMBs

The Wave has everything you need to know about building a business, from raising funding to marketing your product.

Get our newsletter

Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.

New accounts only. By submitting your email you agree to our Privacy Policy

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.