Вступление
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 будут записываться в этот журнал.
Заключение
Теперь, когда у вас установлен веб-сервер, у вас есть много вариантов для типа контента, который вы можете обслуживать, и технологий, которые вы можете использовать для создания более насыщенного опыта для ваших пользователей.