Как переместить корневой каталог веб-сервера Nginx в новое местоположение на Ubuntu 22.04

Введение

На Ubuntu веб-сервер Nginx хранит свои документы в /var/www/html, который обычно располагается на корневой файловой системе вместе с остальной операционной системой. Иногда, однако, полезно переместить корневой каталог документов в другое местоположение, такое как отдельная примонтированная файловая система. Например, если вы обслуживаете несколько веб-сайтов из одного экземпляра Nginx, размещение корневого каталога каждого сайта на собственном томе позволяет масштабироваться в соответствии с потребностями конкретного сайта или клиента.

В этом руководстве вы переместите корневой каталог Nginx в новое местоположение.

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

Для завершения этого руководства вам понадобятся:

В этом руководстве мы будем использовать доменное имя ваш_домен, но вы должны заменить его на свое собственное доменное имя.

  • A new location for your document root. In this tutorial, we will use the /mnt/volume-nyc3-01 directory for our new location. If you are using Block Storage on DigitalOcean, this guide will show you how to create and attach your volume. Your new document root location is configurable based on your needs, however. If you are moving your document root to a different storage device, you will want to select a location under the device’s mount point.

Шаг 1 — Копирование файлов в новое местоположение

При свежей установке Nginx корневой каталог находится по адресу /var/www/html. Однако, следуя рекомендуемым руководствам, вы создали новый корневой каталог, /var/www/ваш_домен/html. Возможно, у вас также есть дополнительные корневые каталоги. На этом этапе мы определим расположение наших корневых каталогов и скопируем соответствующие файлы в их новое местоположение.

Вы можете найти расположение ваших корневых каталогов, используя grep. Давайте искать в каталоге /etc/nginx/sites-enabled, чтобы сузить наше внимание до активных сайтов. Флаг -R гарантирует, что grep будет печатать как строку с директивой root, так и полное имя файла в своем выводе:

  1. grep -R "root" /etc/nginx/sites-enabled

Если вы следовали предварительным учебным пособиям на новом сервере, результат будет выглядеть следующим образом:

Output
/etc/nginx/sites-enabled/your_domain: root /var/www/your_domain/html; /etc/nginx/sites-enabled/default: root /var/www/html; /etc/nginx/sites-enabled/default: # deny access to .htaccess files, if Apache's document root /etc/nginx/sites-enabled/default:# root /var/www/your_domain;

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

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

Примечание: Убедитесь, что в конце пути к каталогу нет косой черты, которая может быть добавлена при использовании автозавершения с клавишей Tab. Если есть косая черта в конце, rsync выгрузит содержимое каталога в точку монтирования, а не передаст его в каталог html.

  1. sudo rsync -av /var/www/your_domain/html /mnt/volume-nyc3-01

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

Output
sending incremental file list created directory /mnt/volume-nyc3-01 html/ html/index.html sent 318 bytes received 39 bytes 714.00 bytes/sec total size is 176 speedup is 0.49

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

Шаг 2 — Обновление файлов конфигурации

Nginx использует как глобальные, так и сайт-специфические файлы конфигурации. Мы изменяем файл блока сервера для нашего проекта your_domain: /etc/nginx/sites-enabled/your_domain.

Примечание: Не забудьте заменить your_domain на ваше доменное имя и помните, что вы будете изменять файлы блоков сервера, которые были выведены при выполнении команды grep на Шаге 1.

Начните с открытия файла /etc/nginx/sites-enabled/your_domain в редакторе:

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

Найдите строку, начинающуюся с root, и обновите ее новым местоположением корня. В нашем случае это будет /mnt/volume-nyc3-01/html:

/etc/nginx/sites-enabled/your_domain
server {

        root /mnt/volume-nyc3-01/html;
        index index.html index.htm index.nginx-debian.html;
        . . .
}
. . .

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

Когда вы внесете все необходимые изменения, сохраните и закройте файл.

Шаг 3 — Перезапуск Nginx

После того как вы закончите внесение изменений в конфигурацию, вы можете перезапустить 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

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

  1. sudo rm -Rf /var/www/your_domain/html

Теперь вы успешно переместили корневой каталог Nginx в новое местоположение.

Заключение

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

Если вы управляете оживленным или растущим веб-сайтом, вам может быть интересно узнать как настроить Nginx с HTTP/2, чтобы воспользоваться его высокой скоростью передачи контента.

Source:
https://www.digitalocean.com/community/tutorials/how-to-move-an-nginx-web-root-to-a-new-location-on-ubuntu-22-04