Установка Nginx в CentOS 8
Centos | Комментировать запись
Nginx –один из самых популярных веб-серверов в мире, он может обслуживать очень большие сайты с высоким трафиком, как правило, расходуя при этом меньше ресурсов, чем Apache. Также его можно использовать в качестве обратного прокси-сервера.
Данный мануал поможет установить Nginx на сервер CentOS 8.
Требования
Для работы нужен сервер CentOS 8, настроенный по этому мануалу.
1: Установка Nginx
Пакет Nginx можно установить с помощью dnf, нового стандартного пакетного менеджера CentOS 8.
Чтобы установить Nginx, введите эту команду:
sudo dnf install nginx
Чтобы подтвердить установку, введите y. После этого dnf установит Nginx и все его зависимости на ваш сервер.
После завершения установки вам нужно добавить веб-сервер в автозагрузку и запустить его:
sudo systemctl enable nginx
sudo systemctl start nginx
2: Настройка брандмауэра
Прежде чем запустить Nginx, нужно настроить брандмауэр firewalld для поддержки его трафика через порт 80.
Чтобы на постоянной основе активировать соединения HTTP по порту 80, введите эту команду:
sudo firewall-cmd --permanent --add-service=http
Чтобы убедиться в том, что брандмауэр пропускает трафик http, запустите:
sudo firewall-cmd --permanent --list-all
Вы увидите такой вывод, если все работает правильно:
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:
Чтобы изменения вступили в силу, нужно перезапустить брандмауэр:
sudo firewall-cmd --reload
После этого ваш сервер Nginx полностью готов к работе с внешними пользователями.
3: Тестирование веб-сервера
На данный момент ваш веб-сервер должен работать. Чтобы убедиться, что это действительно так, попробуйте получить доступ стандартной приветственной странице, которую можно найти в браузере по домену или внешнему IP-адресу сервера.
Если у вас нет домена, а своего IP-адреса вы не знаете, вы можете узнать его с помощью командной строки. Введите:
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
Команда вернёт несколько строк. Проверьте каждый полученный адрес в браузере.
В качестве альтернативы вы можете проверить, как ваш сервер видят другие точки в интернете. Для этого используйте команду:
curl -4 icanhazip.com
Узнав свой IP-адрес, введите его в браузер, чтобы убедиться, что веб-сервер работает должным образом.
http://your_server_ip
На экране должна появиться стандартная страница Nginx:
Welcome to nginx on Red Hat Enterprise Linux!
This page is used to test the proper operation of the nginx HTTP server after it has been installed […]
Если вы видите такую страницу, ваш веб-сервер работает правильно.
4: Управление процессами Nginx
Теперь давайте рассмотрим несколько основных команд для управления веб-сервером.
Чтобы остановить Nginx, введите:
sudo systemctl stop nginx
Чтобы запустить веб-сервер, введите:
sudo systemctl start nginx
Для перезапуска используйте эту команду:
sudo systemctl restart nginx
Чтобы обновить настройки Nginx, не сбрасывая соединения, используйте команду:
sudo systemctl reload nginx
По умолчанию Nginx автоматически запускается вместе с сервером. Это поведение можно выключить при помощи команды:
sudo systemctl disable nginx
Чтобы возобновить автозапуск сервиса, введите:
sudo systemctl enable nginx
5: Важные файлы и каталоги Nginx
Теперь вы знаете, как управлять сервисом. Давайте рассмотрим важные файлы и каталоги веб-сервера Nginx.
Контент:
- /usr/share/nginx/html: содержит текущий контент сайта. По умолчанию в нём находится только стандартная посадочная страница, которую вы уже видели. Этот каталог можно изменить в конфигурационном файле Nginx.
Настройки сервера:
- /etc/nginx: каталог настроек nginx, в котором хранятся все конфигурационные файлы.
- /etc/nginx/nginx.conf: главный конфигурационный файл Nginx, содержащий глобальные настройки веб-сервера.
- /etc/nginx/conf.d/: каталог для хранения виртуальных хостов, которые в контексте Nginx называются блоками server. Как правило, они нужны для того, чтобы обслуживать разные домены в рамках одного сервера. Обычно имя файла виртуального хоста совпадает с доменом сайта, для которого он предназначен (по формату your_domain.conf).
Логи сервера:
- /var/log/nginx/access.log: регистрирует все запросы, полученные веб-сервером Nginx (если не настроено другое поведение).
- /var/log/nginx/error.log: хранит все сообщения об ошибках Nginx.
6: Настройка виртуального хоста (опционально)
На веб-сервере Nginx можно использовать виртуальные хосты (также они называются блоками server) для размещения нескольких доменов на одном сервере и изоляции их настроек.
Примечание: Здесь мы используем условный домен your_domain, а вы должны заменить его собственным доменом.
В CentOS 8 файлы блоков server хранятся в каталоге /etc/nginx/conf.d в формате .conf. В этой системе Nginx по умолчанию обслуживает документы из каталога /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. Он очень мощный, но новичкам с ним бывает трудно работать. При желании вы можете установить редактор nano, он немного проще:
sudo dnf install 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>
Сохраните и закройте файл (нажмите 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;
}
}
Сохраните и закройте файл.
Читайте также: Алгоритмы выбора блоков server и location в Nginx
Проверьте ошибки в конфигурационных файлах Nginx:
sudo nginx -t
Если ошибок нет, вы увидите такой вывод:
nginx: 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, иначе веб-сервер не сможет обслуживать контент из каталога /var/www/your_domain.
Читайте также: Введение в SELinux в CentOS 7: базовые понятия
Следующая команда включит обслуживание вашего пользовательского файла document root в качестве контента HTTP:
chcon -vR system_u:object_r:httpd_sys_content_t:s0 /var/www/your_domain/
Теперь Nginx обслуживает домен вашего сайта. Чтобы убедиться в этом, откройте ссылку http://your_domain в браузере.
Success! Your Nginx server is successfully configured for your_domain.
This is a sample page.
Эта страница обслуживает HTML-код из файла пользовательской страницы, которую обслуживает наш новый блок server. Если вы видите в браузере эту фразу, Nginx правильно обслуживает ваш домен.
Заключение
Теперь веб-сервер Nginx установлен и готов к работе. Используйте его для обслуживания контента вашего сайта. Также теперь вы можете установить более сложный программный стек для поддержки сайта.
Читайте также: Установка стека LEMP в CentOS 8
Tags: CentOS, CentOS 8, firewalld, NGINX, Server Block