Nginx — это один из самых популярных в мире веб-серверов, который обеспечивает работу целого ряда крупнейших сайтов в Интернете с огромным трафиком. Обычно он использует ресурсы эффективнее, чем Apache, и может использоваться как веб-сервер или обратный прокси-сервер.
В этом руководстве мы расскажем, как выполнить установку Nginx на сервере CentOS 8.
Для выполнения этого обучающего руководства вам потребуется доступ к серверу CentOS 8, пользователь без прав root с привилегиями sudo и и активный брандмауэр, установленный на сервере. Чтобы выполнить настройку, воспользуйтесь руководством по начальной настройке сервера CentOS 8.
Для установки Nginx мы будем использовать менеджер пакетов dnf
, который представляет собой новый доступный по умолчанию менеджер пакетов в CentOS 8.
Установите пакет nginx
с помощью следующей команды:
- sudo dnf install nginx
При получении запроса введите y
для подтверждения того, что вы хотите установить nginx
. После этого dnf
выполнит установку dnf и любых требуемых зависимостей на ваш сервер.
После завершения установки воспользуйтесь следующей командой, чтобы активировать и запустить сервер:
- sudo systemctl enable nginx
- sudo systemctl start nginx
Это позволит запускать Nginx во время загрузки системы.
Если вы активировали брандмауэр 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 полностью установлен и доступен для внешних посетителей.
Теперь вы можете проверить, работает ли ваш веб-сервер, выполнив попытку перехода на публичный IP-адрес вашего сервера или его доменное имя с помощью вашего веб-браузера.
Примечание: если вы используете DigitalOcean в качестве вашего провайдера хостинга DNS, вы можете изучить нашу документацию для продукта для получения подробных инструкций по настройке нового доменного имени и указать ваш сервер.
Если у вас нет доменного имени, указывающего на ваш сервер, и вы не знаете публичный IP-адрес вашего сервера, вы можете найти его, введя следующую команду:
- ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
Команда выведет несколько IP-адресов. Вы можете попробовать каждый из них в своем браузере.
Также вы можете проверить доступность IP-адреса из других мест в интернете:
- curl -4 icanhazip.com
Введите полученный адрес в браузере, после чего вы попадете на страницу 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
Теперь, когда вы научились управлять службой 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 будут регистрироваться в этом журнале.Если вы хотите разместить несколько сайтов на одном и том же веб-сервере 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
для создания необходимых родительских каталогов:
- 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:
<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
:
- 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;
}
}
Сохраните и закройте файл после внесения изменений в его содержимое.
Чтобы убедиться, что в файлах Nginx нет синтаксических ошибок, запустите следующую команду:
- sudo nginx -t
Если проблем нет, вы увидите на экране следующие результаты:
Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: 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 настроен корректно для обслуживания вашего домена.
В этом руководстве мы узнали, как выполнить установку и настройку Nginx, веб-сервер с высокой производительностью и обратным прокси. Мы изучили управление службой Nginx, запущенной на вашем сервере, и узнали, где Nginx хранит файлы конфигурации, содержимое и логи.
Теперь у вас есть множество вариантов для типа контента и технологий, которые можно использовать на веб-сайтах, размещенных на вашем веб-сервере.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
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!