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

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


Введение

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

В этом руководстве вы узнаете, как установить Nginx на сервер Ubuntu 18.04, а также о важных файлах и каталогах Nginx.

Предпосылки

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

Когда у вас есть доступная учетная запись, войдите в систему как пользователь без полномочий 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)

Рекомендуется включить наиболее строгий профиль, который по-прежнему будет разрешать трафик, который вы настроили. Поскольку вы еще не настроили 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 18.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: en Active: active (running) since Fri 2021-10-01 21:36:15 UTC; 35s ago Docs: man:nginx(8) Main PID: 9039 (nginx) Tasks: 2 (limit: 1151) CGroup: /system.slice/nginx.service ├─9039 nginx: master process /usr/sbin/nginx -g daemon on; master_pro └─9041 nginx: worker process

Эти выходные данные показывают, что служба успешно запущена. Однако лучший способ проверить это — запросить страницу у Nginx.

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

Попробуйте ввести в командной строке вашего сервера следующее:

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

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

В качестве альтернативы можно запустить следующую команду, которая должна сгенерировать ваш общедоступный IP-адрес, указанный в другом месте в Интернете:

  1. curl -4 icanhazip.com

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

http://your_server_ip

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

Эта страница включена в 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

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

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

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

В Nginx в Ubuntu 18.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. 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>

Сохраните и закройте файл, когда закончите. Если вы использовали nano, вы можете выйти, нажав 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.com 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/

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

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

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

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

Найдите директиву server_names_hash_bucket_size и удалите символ #, чтобы раскомментировать строку:

...
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 будут записываться в этот журнал.

Заключение

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

Если вы хотите создать более полный стек приложений, ознакомьтесь с этой статьей о том, как настроить стек LEMP в Ubuntu 18.04.