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

Обсудить
Как установить nginx на Ubuntu 18.04

Введение

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

Из данного руководства вы узнаете о том, как правильно установить nginx на Ubuntu 18.04.

Требования

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

Как только вы создадите такой аккаунт, авторизуйтесь в качестве этого пользователя перед выполнением следующих шагов.

 

Timeweb VDS VPS

 

Шаг 1: установка nginx

Так как nginx по умолчанию доступен в репозиториях Ubuntu, его можно установить прямо из них при помощи пакетного менеджера apt.

Но так как в этой сессии вы будете первый раз обращаться к пакетному менеджеру, то сначала необходимо обновить локальный индекс пакетов. Это позволит получить доступ к самым актуальным на данный момент спискам пакетов. И только после этого нужно перейти к установке nginx:

$ sudo apt update

$ sudo apt install nginx

После выполнения команды пакетный менеджер установит nginx и все необходимые зависимости на ваш сервер.

Шаг 2: настройка фаервола

Перед тестированием nginx необходимо настроить фаервол для того, чтобы дать доступ сервису. Nginx регистрирует себя как сервис с утилитой ufw - благодаря этому дать доступ nginx довольно легко.

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

$ sudo ufw app list

Вам высветится вот такой список:

Available applications:

  Nginx Full

  Nginx HTTP

  Nginx HTTPS

  OpenSSH

То есть для nginx доступны 3 профиля:

  • Nginx Full: профиль открывает два порта – 80 (обычный, незашифрованный веб-трафик) и 443 (TLS/SSL зашифрованный трафик)
  • Nginx HTTP: профиль открывает только порт 80 (обычный, незашифрованный веб-трафик)
  • Nginx HTTPS: профиль открывает только порт 443 (TLS/SSL зашифрованный трафик)

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

Введите команду:

$ sudo ufw allow 'Nginx HTTP'

Проверить изменения можно командой:

$ sudo ufw status

В выводе вы увидите, что HTTP-трафик разрешен:

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 18.04 запустит nginx. Веб-сервер уже должен работать.

Это можно проверить следующей командой:

$ systemctl status nginx

Вывод будет выглядеть примерно так:

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 2018-04-20 16:08:19 UTC; 3 days ago

Docs: man:nginx(8)

Main PID: 2369 (nginx)

Tasks: 2 (limit: 1153)

   CGroup: /system.slice/nginx.service

        ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;

        └─2380 nginx: worker process

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

Чтобы убедиться в том, что все работает правильно, нужно посмотреть, отобразится ли начальная страница nginx, если ввести в браузере IP-адрес вашего сервера.

Если вы его не знаете, то есть следующие варианты выяснить:

1.Введите в командной строке:

$ ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Вы увидите несколько строк - попробуйте каждую из них в браузере.

2. Можно также получить публичный IP-адрес своего сервера:

$ curl -4 icanhazip.com

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

http://ip-адрес сервера

Должна загрузиться приветственная страница nginx:

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: настройка серверных блоков

Если вам нужно, чтобы сервер обслуживал больше одного домена, то используйте серверные блоки (то есть блоки server). Эти блоки похожи на виртуальные хосты в Apache. В данном руководстве речь будет идти о домене test.ru, вам нужно вписать вместо него ваш собственный домен.

По умолчанию у nginx на Ubuntu 18.04 включен лишь один серверный блок по умолчанию. Он настроен обслуживать файлы в директории /var/www/html. Это хорошо работает для отдельного сайта, но абсолютно неудобно, если нужно разместить несколько сайтов.

Для начала создайте директорию внутри /var/www для сайта test.ru:

$ sudo mkdir -p /var/www/test.ru/html

/var/www/html останется как директория по умолчанию и будет использоваться в тех случаях, когда клиентский запрос не совпадает ни с одним другим сайтом.

Теперь нужно указать права:

$ sudo chown -R $USER:$USER /var/www/test.ru/html

$ sudo chmod -R 755 /var/www/test.ru

Далее создайте пример страницы index.html, используя nano или любой другой редактор:

$ nano /var/www/test.ru/html/index.html

Скопируйте в файл код ниже:

<html>

<head>

     <title>Welcome to Test.ru!</title>

</head>

<body>

     <h1>Success!  The test.ru server block is working!</h1>

</body>

</html>

Сохраните и закройте файл.

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

$ sudo nano /etc/nginx/sites-available/test.ru

Скопируйте туда следующий конфигурационный блок. Он похож на тот, который идет по умолчанию, однако имеет новую директорию (root) и доменное имя (server_name).

server {

     listen 80;

     listen [::]:80;

     root /var/www/test.ru/html;

     index index.html index.htm index.nginx-debian.html;

     server_name test.ru www.test.ru;

     location / {

             try_files $uri $uri/ =404;

     }

}

Теперь нужно сделать файл доступным, создав ссылку на него в директории sites-enabled:

$ sudo ln -s /etc/nginx/sites-available/test.ru /etc/nginx/sites-enabled/

Теперь два серверных блока включены, настроены и будут использоваться в зависимости от их директив listen и server_name:

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

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

$ sudo nano /etc/nginx/nginx.conf

Найдите директиву server_names_hash_bucket_size и раскомментируйте эту строку (уберите символ #):

...

http {

...

server_names_hash_bucket_size 64;

...

}

...

Сохраните и закройте файл.

Теперь нужно убедиться, что в файлах nginx нет синтаксических ошибок:

$ sudo nginx -t

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

$ sudo systemctl restart nginx

Теперь nginx должен обслуживать ваше доменное имя. Введите его в браузере. Вы должны увидеть надпись “Success! The test.ru server block is working!”.

Если вы увидели эту надпись, значит, все настроено и работает правильно.

Заказывайте выделенные серверы для своих проектов в компании Timeweb: https://timeweb.com/ru/services/dedicated-server/

Комментарии