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

Вступление

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

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

Предпосылки

Прежде чем начать это руководство, у вас должен быть обычный пользователь без полномочий root с настроенными привилегиями sudo на вашем сервере и активный брандмауэр. Вы можете узнать, как их настроить, следуя нашему https://www.digitalocean.com/community/tutorials/initial-server-setup-with-debian-9 руководство по установке на сервер libeinitial для Debian 9].

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

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

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

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

sudo apt update
sudo apt install nginx

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

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

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

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

sudo ufw app list

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

OutputAvailable applications:
...
 Nginx Full
 Nginx HTTP
 Nginx HTTPS
...

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

  • * 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-трафик в отображаемом выводе:

OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx HTTP                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Шаг 3 - Проверка вашего веб-сервера

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

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

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:  since Tue 2018-09-04 18:15:57 UTC; 3min 28s ago
    Docs: man:nginx(8)
 Process: 2402 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Process: 2399 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 2404 (nginx)
   Tasks: 2 (limit: 4915)
  CGroup: /system.slice/nginx.service
          ├─2404 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
          └─2405 nginx: worker process

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

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

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

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

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

http://

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

изображение: https: //assets.digitalocean.com/articles/nginx_1604/default_page.png [страница по умолчанию для 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 - Настройка блоков сервера

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

В Nginx в Debian 9 по умолчанию включен один серверный блок, который настроен на обслуживание документов вне каталога + / var / www / html +. Хотя это хорошо работает для одного сайта, он может стать громоздким, если вы размещаете несколько сайтов. Вместо того, чтобы модифицировать + / var / www / html +, давайте создадим структуру каталогов внутри + / var / www + для нашего * example.com * сайта, оставив + / var / www / html + на месте по умолчанию каталог, который будет обслуживаться, если клиентский запрос не совпадает ни с одним другим сайтом.

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

sudo mkdir -p /var/www//html

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

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

Права доступа к вашим веб-корням должны быть правильными, если вы не изменили значение + umask +, но вы можете убедиться, набрав:

sudo chmod -R 755 /var/www/

Затем создайте образец страницы + index.html +, используя + nano + или https://www.digitalocean.com/community/tutorials/initial-server-setup-with-debian-9#step-six-%E2 % 80% 94-Complete-Option-Configuration [ваш любимый редактор]:

nano /var/www//html/index.html

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

/var/www/example.com/html/index.html

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

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

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

sudo nano /etc/nginx/sites-available/

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

/etc/nginx/sites-available/example.com

server {
       listen 80;
       listen [::]:80;

       root /var/www//html;
       index index.html index.htm index.nginx-debian.html;

       server_name  www.;

       location / {
               try_files $uri $uri/ =404;
       }
}

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

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

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

Два серверных блока теперь включены и настроены для ответа на запросы на основании их директив + listen + и + server_name + (вы можете узнать больше о том, как Nginx обрабатывает эти директивы https://www.digitalocean.com/community/tutorials/ понимание-Nginx-сервер и-местоположение блок выбор-алгоритмы [здесь]):

  • + example.com +: будет отвечать на запросы + example.com + и + www.example.com +.

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

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

sudo nano /etc/nginx/nginx.conf

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

/etc/nginx/nginx.conf

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

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

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

sudo nginx -t

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

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

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

sudo systemctl restart nginx

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

изображение: https: //assets.digitalocean.com/articles/nginx_server_block_1404/first_block.png [первый серверный блок Nginx]

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

Заключение

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

Related