Поиск по сайту:

Как переместить веб-корень 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, так и имя файла в своем выводе:

  1. 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:

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

Теперь мы готовы обновить конфигурацию.

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

Nginx использует как глобальные, так и специфичные для сайта файлы конфигурации. Справочную информацию об иерархии файлов конфигурации см. в разделе Как настроить веб-сервер Nginx на виртуальном частном сервере.

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

Откройте файл в редакторе:

  1. 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

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

  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/html

Заключение

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

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