Как переместить веб-корень Nginx в новое место в Ubuntu 16.04
Введение
В Ubuntu по умолчанию веб-сервер Nginx хранит свои документы в /var/www/html
, который обычно находится в корневой файловой системе с остальной частью операционной системы. Однако иногда полезно переместить корень документа в другое место, например, в отдельную смонтированную файловую систему. Например, если вы обслуживаете несколько веб-сайтов из одного и того же экземпляра Nginx, размещение корня документа каждого сайта на отдельном томе позволяет масштабировать его в соответствии с потребностями конкретного сайта или клиента.
В этом руководстве мы покажем вам, как переместить корень документа Nginx в новое место.
Предпосылки
Для выполнения этого руководства вам потребуется:
- Сервер Ubuntu 16.04 с пользователем без полномочий root с привилегиями
sudo
. Вы можете узнать больше о том, как настроить пользователя с этими привилегиями, в нашем руководстве Initial Server Setup with Ubuntu 16.04. - Веб-сервер Nginx: если вы еще не настроили его, подробная статья «Как установить Nginx в Ubuntu 16.04» поможет вам.
- Новое расположение для корневого каталога вашего документа. Новое корневое расположение документа полностью настраивается в соответствии с вашими потребностями. Если вы перемещаете корневую папку документа на другое устройство хранения, вам нужно будет выбрать место под точкой подключения устройства. В этом примере мы будем использовать каталог
/mnt/volume-nyc1-01
. Если вы используете блочное хранилище в DigitalOcean, это руководство покажет вам, как смонтировать диск, прежде чем продолжить изучение этого руководства.
Шаг 1 — Копирование файлов в новое место
При новой установке Nginx корень документа находится в /var/www/html
. Однако если вы работаете с существующим сервером, у вас может быть существенно другая настройка, включая несколько корней документов в соответствующих директивах блока сервера.
Вы можете искать расположение дополнительных корней документов, используя grep
. Мы будем искать в каталоге /etc/nginx/sites-enabled
, чтобы ограничить наше внимание активными сайтами. Флаг -R
гарантирует, что grep
напечатает как строку с директивой root
, так и имя файла в своем выводе:
- grep "root" -R /etc/nginx/sites-enabled
Результат будет выглядеть примерно так, как показано ниже, хотя имена и количество результатов, вероятно, будут другими в существующей установке:
Output/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/example.com;
Используйте обратную связь от grep
, чтобы убедиться, что вы копируете нужные файлы и обновляете соответствующие файлы конфигурации.
Теперь, когда мы подтвердили расположение корня нашего документа, мы скопируем файлы в новое место с помощью rsync
. Использование флага -a
сохраняет разрешения и другие свойства каталога, а -v
обеспечивает подробный вывод, чтобы вы могли следить за ходом выполнения.
Примечание. Убедитесь, что в каталоге нет завершающей косой черты, которая может быть добавлена, если вы используете завершение с помощью табуляции. Когда в конце есть косая черта, rsync
выгружает содержимое каталога в точку монтирования вместо того, чтобы передавать его в содержащий каталог html
:
- sudo rsync -av /var/www/html /mnt/volume-nyc1-01
Теперь мы готовы обновить конфигурацию.
Шаг 2 — Обновление файлов конфигурации
Nginx использует как глобальные, так и специфичные для сайта файлы конфигурации. Справочную информацию об иерархии файлов конфигурации см. в разделе Как настроить веб-сервер Nginx на виртуальном частном сервере.
Если вы работаете с существующей установкой, вам следует изменить файлы, которые вы нашли ранее, с помощью команды grep
. В нашем примере мы рассмотрим файл конфигурации по умолчанию с именем default
.
Откройте файл в редакторе:
- sudo nano /etc/nginx/sites-enabled/default
Затем найдите строку, начинающуюся с root
, и обновите ее, указав новое местоположение.
Примечание. Вам следует поискать другие места, где появился первоначальный путь, и также изменить их на новое место. В дополнение к корню вы можете найти такие вещи, как псевдонимы и перезаписи, которые также нуждаются в обновлении.
. . .
# include snippets/snakeoil.conf;
root /mnt/volume-nyc1-01/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
. . .
После внесения всех необходимых изменений сохраните и закройте файл.
Шаг 3 — Перезапуск 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
После перезапуска сервера посетите уязвимые сайты и убедитесь, что они работают должным образом. Как только вы убедитесь, что все в порядке, не забудьте удалить исходную копию данных.
- sudo rm -Rf /var/www/html
Заключение
В этом руководстве мы рассмотрели, как изменить корень документа Nginx на новое место. Это может помочь вам с базовым администрированием веб-сервера, например, с эффективным управлением несколькими сайтами на одном сервере. Это также позволяет вам использовать преимущества альтернативных устройств хранения, таких как сетевое блочное хранилище, что является важным шагом в масштабировании веб-сайта по мере изменения его потребностей.
Если вы управляете загруженным или растущим веб-сайтом, вам может быть интересно узнать о пяти способах улучшить настройку рабочего сервера веб-приложений.