Как переместить Nginx Web Root в новое место в Ubuntu 18.04

Вступление

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

В этом руководстве вы переместите корень документа Nginx в новое место.

Предпосылки

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

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

  • Новое местоположение для вашего корня документа. В этом руководстве мы будем использовать каталог/mnt/volume-nyc3-01 для нашего нового местоположения. Если вы используете блочное хранилище в DigitalOcean,this guide покажет вам, как создать и прикрепить ваш том. Однако новый корневой каталог документов настраивается в зависимости от ваших потребностей. Если вы перемещаете корневой каталог документов на другое устройство хранения, вам нужно выбрать местоположение под точкой монтирования устройства.

[[step-1 -—- copying-files-to-the-new-location]] == Шаг 1. Копирование файлов в новое место

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

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

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

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

Output/etc/nginx/sites-enabled/example.com:           root /var/www/example.com/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/example.com;

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

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

[.note] #Note: Убедитесь, что в каталоге нет завершающей косой черты, которая может быть добавлена, если вы используете завершение табуляции. Когда стоит косая черта в конце,rsync будет сбрасывать содержимое каталога в точку монтирования, а не переносить его в содержащийhtml каталог.
#

sudo rsync -av /var/www/example.com/html /mnt/volume-nyc3-01

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

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, чтобы отразить эти изменения.

[[step-2 -—- update-the-configuration-files]] == Шаг 2 - Обновление файлов конфигурации

Nginx использует как глобальные, так и специфичные для сайта файлы конфигурации. Чтобы узнать об иерархии файлов конфигурации, посмотрите“How To Configure The Nginx Web Server On a Virtual Private Server”. Мы изменимserver block file for our example.com project:/etc/nginx/sites-enabled/example.com.

[.note] #Note: Помните, что в вашем случаеexample.com будетyour_domain_name, и что вы будете изменять файлы серверных блоков, которые были выведены при запускеgrep команда на шаге 1.
#

Начните с открытия/etc/nginx/sites-enabled/example.com в редакторе:

sudo nano /etc/nginx/sites-enabled/example.com

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

/etc/nginx/sites-enabled/example.com

server {

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

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

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

[[step-3 -—- restarting-nginx]] == Шаг 3 - перезапуск Nginx

Закончив вносить изменения в конфигурацию, вы можете перезапустить 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/example.com/html

Вы успешно переместили корень документа Nginx в новое место.

Заключение

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

Если вы управляете загруженным или растущим веб-сайтом, вам, возможно, будет интересно узнатьhow to set up Nginx with HTTP/2, чтобы воспользоваться его высокой скоростью передачи контента. Вы также можете узнать больше об улучшении производственного процесса в этом сравненииfive ways to improve your production web application server setup.

Related