Как установить Nginx в Ubuntu

0 Акции
0
0
0
0

Введение

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

В этом руководстве мы рассмотрим установку Nginx на сервер Ubuntu 20.04, настройку брандмауэра, управление процессом Nginx и настройку серверных блоков для размещения более чем одного домена на одном сервере.

Предпосылки
  • Перед началом работы с этим руководством необходимо настроить на сервере обычного пользователя без прав root, обладающего правами sudo.
  • Купить сервер Ubuntu Щелкните Сделай это.

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

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

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

sudo apt update
sudo apt install nginx

После принятия процедуры apt установит Nginx и все необходимые зависимости на ваш сервер.

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

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

Чтобы получить список конфигураций приложений, с которыми ufw умеет работать, введите:

sudo ufw app list

Вы должны получить список профилей приложений:

Output
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH

Как видно из выходных данных, для Nginx существует три профиля:

  • Nginx Full: Этот профиль открывает как порт 80 (обычный, незашифрованный веб-трафик), так и порт 443 (зашифрованный трафик TLS/SSL).
  • Nginx HTTP: Этот профиль открывает только порт 80 (обычный, незашифрованный веб-трафик).
  • Nginx HTTPS: Этот профиль открывает только порт 443 (для трафика, зашифрованного с помощью TLS/SSL).

Рекомендуется включить наиболее строгий профиль, который, тем не менее, разрешает настроенный вами трафик. На данный момент нам нужно разрешить только трафик на порту 80.

Вы можете включить эту функцию, набрав:

sudo ufw allow 'Nginx HTTP'

Вы можете подтвердить это изменение, набрав:

sudo ufw status

В выходных данных отображается информация о том, какой HTTP-трафик разрешен:

Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere 
Nginx HTTP ALLOW Anywhere 
OpenSSH (v6) ALLOW Anywhere (v6) 
Nginx HTTP (v6) ALLOW Anywhere (v6)

Шаг 3 — Проверьте свой веб-сервер

В конце процесса установки Ubuntu 20.04 запустит Nginx. Веб-сервер к этому моменту уже должен быть запущен.

Это можно сделать, набрав:

systemctl status nginx
Output
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-04-20 16:08:19 UTC; 3 days ago
Docs: man:nginx(8)
Main PID: 2369 (nginx)
Tasks: 2 (limit: 1153)
Memory: 3.5M
CGroup: /system.slice/nginx.service
├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─2380 nginx: worker process

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

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

curl -4 icanhazip.com

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

http://your_server_ip

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

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

Шаг 4 — Управление процессом 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 блоки сервера (аналогичные виртуальным хостам в Apache) позволяют инкапсулировать детали конфигурации и размещать более одного домена на одном сервере. Мы настроим домен с именем your_domain, но вам следует заменить его на имя вашего собственного домена.

В Ubuntu 20.04 Nginx по умолчанию имеет блок сервера, настроенный на обслуживание документов вне каталога /var/www/html. Хотя это хорошо работает для одного сайта, это может стать громоздким, если вы размещаете несколько сайтов. Вместо изменения /var/www/html давайте создадим структуру каталогов в /var/www для нашего сайта your_domain и оставим /var/www/html в качестве каталога по умолчанию для обслуживания в случае, если он не соответствует запросу клиента. Другие сайты

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

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

Затем назначьте владельца каталога с помощью переменной среды $USER:

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

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

sudo chmod -R 755 /var/www/your_domain

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

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

Внутри добавьте следующий пример HTML:

<html>
<head>
<title>Welcome to your_domain!</title>
</head>
<body>
<h1>Success! The your_domain server block is working!</h1>
</body>
</html>

Сохраните и закройте файл, нажав Ctrl+X для выхода, затем нажмите Y, а затем Enter, когда появится запрос на сохранение.

Для того чтобы Nginx мог предоставлять этот контент, необходимо создать блок сервера с соответствующими инструкциями. Вместо того чтобы напрямую изменять файл конфигурации по умолчанию, давайте создадим новый файл в /etc/nginx/sites-available/your_domain:

sudo nano /etc/nginx/sites-available/your_domain

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

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_name — имя нашего домена.

Далее, давайте включим этот файл, создав из него ссылку на каталог sites-enabled, из которого Nginx будет считывать данные при запуске:

sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

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

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

Чтобы избежать потенциальной проблемы с памятью хэш-контейнера, которая может возникнуть при добавлении дополнительных имён серверов, необходимо задать одно значение в файле /etc/nginx/nginx.conf. Откройте файл:

sudo nano /etc/nginx/nginx.conf

Найдите команду server_names_hash_bucket_size и раскомментируйте строку, удалив символ #. Если вы используете nano, вы можете быстро найти нужные слова в файле, нажав CTRL и w.

...
http {
...
server_names_hash_bucket_size 64;
...
}
...

По завершении сохраните и закройте файл.

Затем проверьте, нет ли синтаксических ошибок в файлах Nginx:

sudo nginx -t

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

sudo systemctl restart nginx

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

Шаг 6 — Ознакомьтесь с важными файлами и каталогами Nginx

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

Содержание
  • /var/www/html: Фактический веб-контент, который по умолчанию состоит только из стандартной страницы Nginx, которую вы видели ранее, отображается вне каталога /var/www/html. Это можно изменить, отредактировав конфигурационные файлы Nginx.
Конфигурация сервера
  • /etc/nginx: Каталог конфигурации Nginx. Все файлы конфигурации Nginx находятся здесь.
  • /etc/nginx/nginx.conf: Основной конфигурационный файл Nginx. Его можно изменить для внесения изменений в глобальную конфигурацию Nginx.
  • /etc/nginx/sites-available/: Каталог, где можно хранить серверные блоки для каждого сайта. Nginx не будет использовать файлы конфигурации из этого каталога, если они не связаны с каталогом sites-enabled. Как правило, вся конфигурация серверных блоков выполняется в этом каталоге, а затем активируется путем создания ссылки на другой каталог.
  • /etc/nginx/sites-enabled/: Каталог, в котором хранятся активные серверные блоки для каждого сайта. Как правило, они создаются путем создания ссылок на конфигурационные файлы в существующем каталоге сайта.
  • /etc/nginx/snippets: В этом каталоге содержатся фрагменты конфигурации, которые можно включить в другие разделы конфигурации Nginx. Потенциально повторяющиеся разделы конфигурации являются хорошими кандидатами для рефакторинга в отдельные фрагменты.
Отчеты сервера
  • /var/log/nginx/access.log: В этот файл журнала записывается каждый запрос к вашему веб-серверу, если иное не указано в настройках Nginx.
  • /var/log/nginx/error.log: Все ошибки Nginx записываются в этот журнал.

Результат

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может понравиться

Как установить IBSng на CentOS 6/7

Руководство по установке IBSng на CentOS 6/7 В этой статье приведено руководство по установке IBSng на CentOS 6/7, которое поможет вам…

Как войти на сервер Windows через удаленный рабочий стол

Как подключиться к серверу Windows через удалённый рабочий стол. Программное обеспечение для подключения к удалённому рабочему столу предоставляется бесплатно во всех версиях…