Как переместить корневой каталог Ngnix

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

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

Требования

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

  • Сервер (у нас установлен Ubuntu 20.04) и пользователь без root-полномочий, с доступом sudo. Больше о настройке пользователя с этими полномочиями читайте в нашем руководстве по начальной настройке сервера Ubuntu.
  • Ngnix, установленный в соответствии с руководством по установке Ngnix на Ubuntu
  • Сертификат TLS/SSL. Для этого есть три опции:
  • Новое место для корнегового каталога вашего сайта. В этом руководстве мы будем использовать каталог /mnt/volume-nyc3-01 в качестве нового местоположения. Новое расположение корневого каталога можно настроить в соответствии с вашими потребностями. Если вы перемещаете корневой каталог на другое устройство хранения, вам нужно выбрать место под точкой монтирования устройства.

Мы будем использовать доменное имя your_domain, но вам следует заменить его вашим доменом

1: Копирование файлов в новое место

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

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

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

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

/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 обеспечивает подробный вывод, чтобы вы могли следить за ходом синхронизации:

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

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

Вы увидите такой вывод:

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

Теперь, когда наши файлы на месте, перейдем к конфигурации Ngnix, которая должна отобразить эти изменения.

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

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

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

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

$ sudo nano /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 (в том числе в псевдонимах или перезаписываемых файлах). Возможно, вам придется обновить их, чтобы отразить новое расположение корневой папки.

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

3: Перезапуск Nginx

Закончив вносить изменения в конфигурацию, вы можете перезапустить Nginx и проверить результаты.

Сначала убедитесь, что синтаксис конфигураций верен:

$ sudo nginx -t

Если всё в порядке, вы увидите вывод:

nginx: 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/your_domain/html

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

Заключение

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

Tags:

Добавить комментарий