Поиск по сайту:

Как установить Nginx на Rocky Linux 9


Введение

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

В этом руководстве вы узнаете, как установить Nginx на сервер Rocky Linux 9, настроить брандмауэр, управлять процессом Nginx и настроить серверные блоки для размещения более одного домена с одного сервера.

Предпосылки

Прежде чем приступить к работе с этим руководством, на вашем сервере должен быть настроен обычный пользователь без полномочий root с привилегиями sudo. Вы можете узнать, как настроить учетную запись обычного пользователя, следуя нашему руководству по начальной настройке сервера для Rocky Linux 9.

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

Когда у вас есть доступная учетная запись, войдите в систему как пользователь без полномочий root, чтобы начать.

Шаг 1 — Установка Nginx

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

Установите пакет nginx с помощью dnf install:

  1. sudo dnf install nginx

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

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

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

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

Шаг 2 – Настройка брандмауэра

Если вы включили брандмауэр firewalld как часть руководства по первоначальной настройке сервера для Rocky Linux 9, вам нужно будет настроить параметры брандмауэра, чтобы разрешить внешние подключения на вашем веб-сервере 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

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

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

На этом этапе ваш веб-сервер должен быть запущен и работать.

Вы можете использовать команду systemctl status, чтобы убедиться, что служба запущена:

  1. systemctl status nginx
Output
● nginx.service - The nginx HTTP and reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2022-09-14 21:03:46 UTC; 7min ago Process: 18384 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS) Process: 18385 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS) Process: 18386 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS) Main PID: 18387 (nginx) Tasks: 3 (limit: 10938) Memory: 2.8M CPU: 43ms CGroup: /system.slice/nginx.service ├─18387 "nginx: master process /usr/sbin/nginx" ├─18388 "nginx: worker process" └─18389 "nginx: worker process"

Как подтверждает этот вывод, служба успешно запущена. Однако лучший способ проверить это — запросить страницу у Nginx.

Вы можете получить доступ к целевой странице Nginx по умолчанию, чтобы убедиться, что программное обеспечение работает правильно, перейдя по IP-адресу вашего сервера. Если вы не знаете IP-адрес своего сервера, вы можете найти его с помощью инструмента icanhazip.com, который предоставит вам общедоступный IP-адрес, полученный из другого места в Интернете:

  1. curl -4 icanhazip.com

Когда у вас есть IP-адрес вашего сервера, введите его в адресную строку браузера:

http://your_server_ip

Вы должны получить целевую страницу Nginx по умолчанию:

Если вы находитесь на этой странице, ваш сервер работает правильно и готов к управлению.

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

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

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

  1. sudo systemctl stop nginx

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

  1. sudo systemctl start nginx

Чтобы остановить и снова запустить службу, используйте systemctl restart:

  1. sudo systemctl restart nginx

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

  1. sudo systemctl reload nginx

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

  1. sudo systemctl disable 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 можно использовать блоки сервера (аналогичные виртуальным хостам в Apache) для организации деталей конфигурации и размещения более одного домена с одного сервера. В Rocky Linux 9 серверные блоки определяются в файлах .conf, расположенных по адресу /etc/nginx/conf.d. Мы создадим домен с именем ваш_домен, но вы должны заменить его своим собственным доменным именем.

По умолчанию Nginx в Rocky Linux 9 настроен на обслуживание документов из каталога /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 для проверки конфигурации блока сервера. Текстовый редактор по умолчанию, поставляемый с Rocky Linux 9, называется vi. vi — чрезвычайно мощный текстовый редактор, но он может быть несколько бестолковым для пользователей, не имеющих опыта работы с ним. Возможно, вы захотите установить более удобный редактор, такой как nano, чтобы упростить редактирование файлов конфигурации на вашем сервере Rocky Linux 9:

  1. sudo dnf install nano

Затем создайте образец страницы index.html с помощью nano или вашего любимого редактора:

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

Внутри добавьте следующий образец 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

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

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;
        }
}

Обратите внимание, что мы обновили конфигурацию root до нашего нового каталога, а server_name — до нашего доменного имени. Сохраните и закройте файл.

Два блока server теперь включены и настроены для ответа на запросы на основе их директив listen и server_name (подробнее о том, как Nginx обрабатывает эти директивы, можно прочитать здесь):

  • ваш_домен: будет отвечать на запросы ваш_домен и www.ваш_домен.
  • по умолчанию: будет отвечать на любые запросы к порту 80, которые не соответствуют двум другим блокам.

Затем проверьте, чтобы убедиться в отсутствии синтаксических ошибок ни в одном из ваших файлов Nginx, используя nginx -t:

  1. sudo nginx -t

Если проблем нет, перезапустите Nginx, чтобы изменения вступили в силу:

  1. sudo systemctl restart nginx

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

Это обновление контекста chcon позволит использовать корневой каталог вашего пользовательского документа в качестве содержимого HTTP:

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

Теперь Nginx должен обслуживать ваше доменное имя. Вы можете проверить это, перейдя по адресу http://ваш_домен, где вы должны увидеть что-то вроде этого:

Заключение

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

Чтобы настроить HTTPS для вашего доменного имени с помощью бесплатного SSL-сертификата с помощью Let’s Encrypt, вам следует перейти к разделу «Как защитить Nginx с помощью Let’s Encrypt в Rocky Linux 9».