Перемещение корневого каталога Nginx в Ubuntu 16.04

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

Данное руководство научит вас перемещать корневой каталог Nginx.

Требования

  • Предварительно настроенный сервер Ubuntu 16.04.
  • Пользователь с доступом к sudo (о настройке такого пользователя можно узнать здесь).
  • Установленный сервер Nginx (инструкции по установке можно найти в этом мануале).
  • Новое место хранения для document root. Выберите новое местонахождение файлов сайта согласно вашим потребностям. Если вы хотите переместить корневой каталог на другое устройство хранения данных, выберите точку монтирования устройства.

В данном мануале показано, как переместить данные в блочное хранилище, смонтированное в /mnt/volume-nyc1-01. Это поможет вам переместить каталог данных в новое место независимо от того, какое хранилище вы используете.

1: Копирование файлов в новый каталог

Свежая установка Nginx использует в качестве корневого каталога /var/www/html. Однако на старых установках может быть несколько каталогов document root в зависимости от количества виртуальных хостов.

Сначала нужно узнать местонахождение дополнительных корневых каталогов. Чтобы сфокусировать своё внимание только на активных сайтах, выполните поиск по /etc/apache2/sites-enabled. С помощью флага -R команда grep вернёт директиву root и имя файла, в котором она находится:

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

На свежей установке сервера вывод будет примерно такой:

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

Выяснив местонахождение корневых каталогов, можно скопировать их на новое устройство с помощью rsync. Флаг –a сохраняет привилегии и другие свойства каталога. Флаг –v предоставляет подробный вывод.

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

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

2: Настройка Nginx

Nginx использует глобальные и индивидуальные конфигурационные файлы.

Примечание: Чтобы узнать больше о настройках Nginx, читайте руководство Настройка веб-сервера Nginx.

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

sudo nano /etc/nginx/sites-enabled/default

Найдите директиву root и укажите в ней новое местонахождение корневого каталога.

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

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

Проверьте синтаксис на наличие ошибок с помощью команды:

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

Заключение

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

Чтобы улучшить производительность сайта с высокой нагрузкой, читайте статью Настройка Nginx с поддержкой HTTP/2 в Ubuntu 16.04.

Tags: ,

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