Введение
На Ubuntu веб-сервер Nginx хранит свои документы в /var/www/html
, который обычно располагается на корневой файловой системе вместе с остальной операционной системой. Иногда, однако, полезно переместить корневой каталог документов в другое местоположение, такое как отдельная примонтированная файловая система. Например, если вы обслуживаете несколько веб-сайтов из одного экземпляра Nginx, размещение корневого каталога каждого сайта на собственном томе позволяет масштабироваться в соответствии с потребностями конкретного сайта или клиента.
В этом руководстве вы переместите корневой каталог Nginx в новое местоположение.
Предварительные условия
Для завершения этого руководства вам понадобятся:
- Сервер Ubuntu 22.04 и обычный пользователь с привилегиями sudo. Вы можете узнать больше о том, как настроить пользователя с этими привилегиями, в нашем руководстве Начальная настройка сервера с Ubuntu 22.04.
- Nginx установлен, следуя Как установить Nginx на Ubuntu 22.04.
- A TLS/SSL certificate configured for your server. You have three options:
- Вы можете получить бесплатный сертификат от Let’s Encrypt, следуя Как защитить Nginx с помощью Let’s Encrypt на Ubuntu 22.04.
- Вы также можете сгенерировать и настроить самоподписанный сертификат, следуя Как создать самоподписанный SSL-сертификат для Nginx в Ubuntu 22.04.
- Вы можете купить его у другого поставщика и настроить Nginx на его использование, следуя Шагам 3 и 4 из Как создать самоподписанный SSL-сертификат для Nginx в Ubuntu 22.04.
В этом руководстве мы будем использовать доменное имя ваш_домен, но вы должны заменить его на свое собственное доменное имя.
- 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
, так и полное имя файла в своем выводе:
Если вы следовали предварительным учебным пособиям на новом сервере, результат будет выглядеть следующим образом:
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
.
Вы увидите вывод, подобный следующему:
Outputsending 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
в редакторе:
Найдите строку, начинающуюся с root
, и обновите ее новым местоположением корня. В нашем случае это будет /mnt/volume-nyc3-01/html
:
server {
root /mnt/volume-nyc3-01/html;
index index.html index.htm index.nginx-debian.html;
. . .
}
. . .
Следите за любыми другими местами, где вы видите оригинальный путь к корневому каталогу документа, выводимый с помощью grep
в Шаге 1, включая алиасы или перенаправления. Вы также захотите обновить их, чтобы отразить новое расположение корневого каталога документа.
Когда вы внесете все необходимые изменения, сохраните и закройте файл.
Шаг 3 — Перезапуск Nginx
После того как вы закончите внесение изменений в конфигурацию, вы можете перезапустить Nginx и протестировать результаты.
Сначала убедитесь, что синтаксис верен:
Если все в порядке, должен вернуться следующий результат:
Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Если тест не проходит, отследите и исправьте проблемы.
После успешного прохождения теста перезапустите Nginx:
Когда сервер перезапустится, посетите ваши затронутые сайты и убедитесь, что они работают ожидаемо. Как только вы убедитесь, что все в порядке, не забудьте удалить оригинальную копию данных:
Теперь вы успешно переместили корневой каталог Nginx в новое местоположение.
Заключение
В этом учебнике мы рассмотрели, как изменить корневую директорию Nginx на новое местоположение. Это может помочь вам в основах администрирования веб-сервера, например, эффективном управлении несколькими сайтами на одном сервере. Также это позволяет вам воспользоваться альтернативными устройствами хранения, такими как сетевое блочное хранилище, что может быть полезно при масштабировании веб-сайта по мере его изменения потребностей.
Если вы управляете оживленным или растущим веб-сайтом, вам может быть интересно узнать как настроить Nginx с HTTP/2, чтобы воспользоваться его высокой скоростью передачи контента.