Поиск по сайту:

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


Введение

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

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

Предпосылки

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

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

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

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

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

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

  1. sudo apt update
  2. sudo apt install nginx

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

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

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

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

  1. 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.

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

  1. sudo ufw allow 'Nginx HTTP'

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

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

Мы можем проверить с помощью системы инициализации systemd, чтобы убедиться, что служба запущена, набрав:

  1. 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-адрес, полученный из другого места в Интернете:

  1. curl -4 icanhazip.com

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

http://your_server_ip

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

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

Шаг 4 — Управление процессом Nginx

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

Чтобы остановить веб-сервер, введите:

  1. sudo systemctl stop nginx

Чтобы запустить веб-сервер, когда он остановлен, введите:

  1. sudo systemctl start nginx

Чтобы остановить и снова запустить службу, введите:

  1. sudo systemctl restart nginx

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

  1. sudo systemctl reload nginx

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

  1. sudo systemctl disable nginx

Чтобы снова включить службу для запуска при загрузке, вы можете ввести:

  1. sudo systemctl enable nginx

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

Шаг 5 – Настройка серверных блоков (рекомендуется)

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

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

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

  1. sudo chmod -R 755 /var/www/your_domain

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

  1. 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:

  1. 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;
        }
}

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

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

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

Примечание. Nginx использует распространенную практику, называемую символическими ссылками или символическими ссылками, для отслеживания того, какие из ваших серверных блоков включены. Создание символической ссылки похоже на создание ярлыка на диске, чтобы впоследствии можно было удалить ярлык из каталога sites-enabled, сохраняя блок сервера в sites-available, если вы хотел включить.

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

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

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

  1. sudo nano /etc/nginx/nginx.conf

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

Примечание. Комментирование строк кода — обычно с помощью # в начале строки — это еще один способ отключить их без необходимости их фактического удаления. Многие файлы конфигурации поставляются с несколькими параметрами, закомментированными, чтобы их можно было включить или отключить, переключая их между активным кодом и документацией.

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

Сохраните и закройте файл, когда закончите.

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

  1. sudo nginx -t

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

  1. sudo systemctl restart nginx

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

Шаг 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/: каталог, в котором хранятся включенные серверные блоки для каждого сайта. Как правило, они создаются путем ссылки на файлы конфигурации, находящиеся в каталоге sites-available.
  • /etc/nginx/snippets: этот каталог содержит фрагменты конфигурации, которые можно включить в другое место в конфигурации Nginx. Потенциально повторяющиеся сегменты конфигурации являются хорошими кандидатами на преобразование в фрагменты.

Журналы сервера

  • /var/log/nginx/access.log: каждый запрос к вашему веб-серверу записывается в этот файл журнала, если Nginx не настроен иначе.
  • /var/log/nginx/error.log: все ошибки Nginx будут записываться в этот журнал.

Заключение

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

Если вы хотите создать более полный стек приложений, ознакомьтесь со статьей Как установить Linux, Nginx, MySQL, PHP (стек LEMP) в Ubuntu 20.04.

Чтобы настроить HTTPS для вашего доменного имени с помощью бесплатного SSL-сертификата с помощью Let’s Encrypt, вам следует перейти к статье Как защитить Nginx с помощью Let’s Encrypt в Ubuntu 20.04.