Как переместить корневой каталог Ngnix
Linux, Ubuntu | Комментировать запись
В системе Ubuntu веб-сервер Nginx хранит свои документы в /var/www/html, который обычно находится в корневой файловой системе вместе с остальной частью операционной системы. Но иногда бывает полезно переместить корневой каталог в другое место — отдельно собранную файловую систему. Например, если вы обслуживаете несколько веб-сайтов из одного экземпляра Nginx, индивидуальное размещение корневого каталога каждого сайта позволяет масштабировать его в соответствии с потребностями этого сайта или клиента.
В данном руководстве вы переместите корневой каталог Nginx на новое место.
Требования
Для следования этому руководству вам понадобятся:
- Сервер (у нас установлен Ubuntu 20.04) и пользователь без root-полномочий, с доступом sudo. Больше о настройке пользователя с этими полномочиями читайте в нашем руководстве по начальной настройке сервера Ubuntu.
- Ngnix, установленный в соответствии с руководством по установке Ngnix на Ubuntu
- Сертификат TLS/SSL. Для этого есть три опции:
- Вы можете получить бесплатный сертификат от Let’s Encrypt, следуя инструкциям по защите Nginx с помощью Let’s Encrypt.
- Можете сгенерировать и настроить самоподписанный сертификат, следуя инструкции по созданию SSL-сертификата для Nginx.
- Купить его у провайдера и настроить на Nginx.
- Новое место для корнегового каталога вашего сайта. В этом руководстве мы будем использовать каталог /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: NGINX