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

Введение

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

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

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

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

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

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

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

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

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

  1. sudo dnf install nginx

При запросе подтвердите установку nginx, нажав y. После этого 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. Мы настроим домен с именем your_domain, но вы должны заменить это своим собственным доменным именем.

По умолчанию 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:

/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/ваш_домен.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;
        }
}

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

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

  • your_domain: Будет отвечать на запросы для your_domain и www.your_domain.
  • default: Будет отвечать на любые запросы на порт 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://your_domain, где вы должны увидеть что-то подобное:

Заключение

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

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

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-rocky-linux-9