Перемещение корневого каталога Nginx в Ubuntu 16.04
Ubuntu | Комментировать запись
В 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:# root /var/www/example.com;
/etc/nginx/sites-enabled/default: # deny access to .htaccess files, if Apache's document root
Выяснив местонахождение корневых каталогов, можно скопировать их на новое устройство с помощью 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: NGINX, Ubuntu 16.04