Полный цикл в digital

Создание виртуального хоста в Ubuntu с Nginx

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

По умолчанию включен один серверный блок, настроенный для вывода документов из директории /var/www/html.

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

Скопируйте файл для домена:

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/название_домена.com

Откройте новый файл в редакторе с привилегиями root:

sudo nano /etc/nginx/sites-available/название_домена.com

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

server {

listen 80 default_server;

listen [::]:80 default_server;

root /var/www/название_домена.com/public_html;

index index.php index.html index.nginx-debian.html;

server_name название_домена.com www.название_домена.com;

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

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}

location ~ /\.ht {
deny all;
}

}

Вот что делает каждая из этих директив и блоков местоположения:

  • listen определяет, какой порт будет прослушивать Nginx. В этом случае он будет прослушивать порт 80, порт по умолчанию для HTTP. Так же у директивы есть параметр default_server, который позволяет сделать виртуальный хост сайтом по умолчанию. В таком случае на него будут перенаправлятся все запросы, не относящеся к другим виртуальным хостам или поступающие напрямую на IP-адрес сервера. По умолчанию эта опция включена в настройках стандартного хоста default, поэтому чтобы избежать ошибки (сервер по умолчанию должен быть только один) нужно удалить этот параметр из файла настроек default или отключить стандартно сконфигурированный сервер, удалив ссылку на него из папки sites-enabled. Все параметры директивы являются опциональными
  • root определяет корень документа, в котором хранятся файлы, обслуживаемые этим веб-сайтом
  • index определяет, в каком порядке Nginx будет отдавать приоритет индексным файлам для этого веб-сайта. Обычной практикой является перечисление index.html файлов с более высоким приоритетом, чем index.php файлы, чтобы можно было быстро настроить целевую страницу обслуживания в приложениях PHP. Вы можете настроить эти параметры так, чтобы они лучше соответствовали потребностям вашего приложения
  • server_name определяет, за какие доменные имена и/или IP-адреса должен отвечать этот серверный блок. Укажите в этой директиве доменное имя вашего сервера или общедоступный IP-адрес
  • location / первый блок location включает try_files директиву, которая проверяет наличие файлов или каталогов, соответствующих запросу URI. Если Nginx не может найти подходящий ресурс, он вернет ошибку 404.
  • location ~ \.php$ этот блок обрабатывает фактическую обработку PHP, указывая Nginx на fastcgi-php.conf файл конфигурации и php7.4-fpm.sock файл, который объявляет, какой сокет связан с php-fpm. Обратите внимание, если в нашей системе будет установлена другая версия php, необходимо внести соответствующую корректировку. /run/php/php7.4-fpm.sock путь до сокетного файла для взаимодействия с php-fpm
  • location ~ /\.ht последний блок location касается .htaccess файлов, которые Nginx не обрабатывает. При добавлении deny all директивы, если какие либо .htaccess файлы попадут в корень документа, они не будут доступны посетителям.

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

sudo ln -s /etc/nginx/sites-available/название_домена.com /etc/nginx/sites-enabled/

Отключим файл конфигурации по умолчанию от /sites-enabled/:

sudo unlink /etc/nginx/sites-enabled/default

Убедимся в отсутствии ошибок синтаксиса в файлах Nginx:

sudo nginx -t

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

sudo systemctl restart nginx

Открываем конфигурационный файл PHP-FPM:

sudo nano /etc/php/7.4/fpm/pool.d/www.conf

Находим в конфигурационном файле переменную listen в ней должен быть указан путь до сокетного файла такой же, как мы задали в настройках NGINX, в противном случае меняем его и перезапускаем сервис:

listen = /run/php/php7.4-fpm.sock

Перезапускаем сервис:

sudo systemctl restart php7.4-fpm

Заходим в каталог настроенного сайта и создаем файл index.php:

nano /var/www/название_домена.com/public_html/index.php

Со следующим содержимым:

<?php phpinfo(); ?>

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

sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг