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

Введение

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

В этом руководстве вы установите Nginx на ваш сервер Debian 10.

Предварительные требования

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

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

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

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

  1. sudo apt update

Затем установите пакет nginx:

  1. sudo apt install nginx

Подтвердите установку, введите Y, затем нажмите Enter, чтобы продолжить. apt затем установит Nginx и все необходимые зависимости на ваш сервер.

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

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

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

Выведите список профилей приложений ufw, набрав:

  1. sudo ufw app list

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

Output
Available applications: ... Nginx Full Nginx HTTP Nginx HTTPS ...

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

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

Рекомендуется включить самый ограничительный профиль, который все еще позволит настраиваемый трафик. Поскольку вы еще не настроили TLS/SSL для вашего сервера в этом руководстве, вам потребуется разрешить только трафик для HTTP на порту 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 – Проверка вашего веб-сервера

В конце процесса установки Debian 10 запускает 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 Tue 2022-06-28 18:42:58 UTC; 49s ago Docs: man:nginx(8) Main PID: 2729 (nginx) Tasks: 2 (limit: 1167) Memory: 7.2M CGroup: /system.slice/nginx.service ├─2729 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─2730 nginx: worker process

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

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

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

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

Когда у вас есть 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

Шаг 5 – Настройка блоков сервера (Необязательно)

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

В Debian 10 Nginx имеет один блок сервера, включенный по умолчанию, который настроен на обслуживание документов из каталога /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:

/var/www/your_domain/html/index.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>

Сохраните и закройте файл, когда закончите. В nano вы можете сделать это, нажав CTRL + X, затем Y, а затем ENTER.

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

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

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

/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/

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

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

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

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

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

/etc/nginx/nginx.conf
...
http {
    ...
    server_names_hash_bucket_size 64;
    ...
}
...

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

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

  1. sudo nginx -t

Если проблем нет, то вывод будет следующим:

Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

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

  1. sudo systemctl restart nginx

Теперь Nginx должен обслуживать ваше доменное имя. Вы можете проверить это, перейдя по адресу http://ваш_домен. Здесь должен отобразиться созданный вами пользовательский HTML в папке /var/www/ваш_домен/html/index.html:

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

Заключение

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

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-debian-10