Перемещение корневого каталога Nginx в Ubuntu 18.04
Ubuntu | Комментировать запись
В Ubuntu веб-сервер Nginx по умолчанию хранит файлы в корневом каталоге /var/www/html, который обычно расположен в одной файловой системе вместе с остальными компонентами операционной системы. Но в некоторых ситуациях лучше переместить этот каталог в другое место, например в отдельную смонтированную файловую систему. При обслуживании нескольких веб-сайтов с помощью одного экземпляра Nginx можно поместить каталог document root каждого сайта в отдельный том. Это позволяет масштабировать сервер в соответствии с потребностями конкретного сайта или клиента.
Данный мануал научит вас перемещать корневой каталог Nginx.
Требования
- Сервер Ubuntu 18.04, настроенный по этому мануалу.
- Установленный сервер Nginx (инструкции по установке можно найти в этом мануале).
- TLS/SSL-сертификат. Если у вас есть домен, вы можете получить бесплатный доверенный сертификат от сервиса Let’s Encrypt. Если у вас пока нет домена, вы можете сгенерировать самоподписанный сертификат. В этом мануале мы используем условный домен example.com.
- Новое место хранения для document root. Выберите новое расположение файлов сайта согласно вашим потребностям. Если вы хотите переместить корневой каталог на другое устройство хранения данных, выберите точку монтирования устройства. В данном мануале показано, как переместить данные в блочное хранилище, смонтированное в /mnt/volume-nyc1-01. Это поможет вам переместить каталог данных в новое место независимо от того, какое хранилище вы используете.
1: Копирование файлов в новый каталог
Свежая установка Nginx использует в качестве корневого каталога /var/www/html. Однако на старых установках может быть несколько каталогов document root в зависимости от количества виртуальных хостов. Если вы следовали этому мануалу по установке Nginx, ваш корневой каталог находится в /var/www/example.com/html.
Сначала нужно узнать местонахождение дополнительных корневых каталогов. Чтобы сфокусировать своё внимание только на активных сайтах, выполните поиск по /etc/apache2/sites-enabled. С помощью флага -R команда grep вернёт директиву root и имя файла, в котором она находится:
grep -R "root" /etc/nginx/sites-enabled
На свежей установке сервера вывод будет примерно такой:
/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 предоставляет подробный вывод.
Примечание: Убедитесь, что в названии каталога нет конечной косой черты (которую система может добавить, если вы используете автодополнение). Если такой слеш есть, rsync будет сбрасывать содержимое каталога в точку монтирования, а не в каталог.
sudo rsync -av /var/www/example.com/html /mnt/volume-nyc3-01
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
2: Настройка Nginx
Nginx использует глобальные и индивидуальные конфигурационные файлы.
Читайте также: Настройка веб-сервера Nginx
Если вы работаете со старой установкой веб-сервера, вам нужно отредактировать все файлы, полученные в выводе grep. В данном примере рассмотрим виртуальный хост проекта example.com.
sudo nano /etc/nginx/sites-enabled/example.com
Найдите директиву root и укажите в ней новое расположение корневого каталога.
server {
root /mnt/volume-nyc3-01/html;
index index.html index.htm index.nginx-debian.html;
. . .
}
. . .
Примечание: Путь к корневому каталогу нужно исправить во всех конфигурационных файлах, в которых он упомянут. В старых установках могут использоваться алиасы и переопределения настроек, которые тоже нуждаются в обновлении. Проверьте все файлы, в которых команда grep нашла путь к корневому каталогу.
3: Перезапуск 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
Если команда не сообщила об ошибках, можете перезапустить сервер.
sudo systemctl restart nginx
После перезапуска посетите сайты, чьи корневые каталоги вы переместили на новое устройство, и убедитесь, что они работают. После этого можно удалить оригинальный каталог.
sudo rm -Rf /var/www/example.com/html
Заключение
Теперь вы знаете, как перемещать корневой каталог Nginx на новое устройство. Это очень полезный навык в управлении веб-сервером, позволяющий без труда разместить несколько сайтов на одном сервере или быстро перейти на новое устройство хранения данных.
Чтобы улучшить производительность сайта с высокой нагрузкой, читайте статьи:
- Настройка Nginx с поддержкой HTTP/2 в Ubuntu 18.04
- 5 способов оптимизировать настройку сервера производства