Перемещение корневого каталога Apache в Debian 8

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

При обслуживании нескольких веб-сайтов с помощью одного экземпляра Apache можно поместить каталог document root каждого сайта в отдельный том. Это позволяет масштабировать сервер в соответствии с потребностями конкретного сайта или клиента.

Требования

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

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

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

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

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

grep -R "DocumentRoot" /etc/apache2/sites-enabled

Вывод имеет примерно такой вид:

sites-enabled/000-default.conf   DocumentRoot /var/www/html

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

sudo apt-get install rsync

Затем скопируйте файлы:

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

Флаг –a сохраняет привилегии и другие свойства каталога. Флаг –v предоставляет подробный вывод.

Читайте также: Использование Rsync для синхронизации локального и удаленного каталогов на VPS

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

Теперь файлы перемещены в новое место, но Apache всё ещё ищет их на прежнем месте. Это нужно исправить.

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

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

Читайте также: Настройка Apache в Ubuntu и Debian

Если вы работаете со старой установкой веб-сервера, вам нужно отредактировать все виртуальные хосты, полученные в выводе grep. В данном примере нужно откорректировать два виртуальных хоста: 000-default.conf и default-ssl.conf

Откройте файл 000-default.conf:

sudo nano /etc/apache2/sites-enabled/000-default.conf

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

<VirtualHost *:80>
...
ServerAdmin webmaster@localhost
DocumentRoot /mnt/volume-nyc1-01/html

Затем найдите блок Directory и обновите путь к корневому каталогу.

На свежем экземпляре нет записей Directory. Добавьте в конфигурационный файл следующий код, чтобы сервер Apache мог обслуживать контент:

...
ServerAdmin webmaster@localhost
DocumentRoot /mnt/volume-nyc1-01/html
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /mnt/volume-nyc1-01/html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
</Directory>
...

Первый блок Directory ограничивает доступ, а второй блок задаёт настройки нового корневого каталога /mnt/volume-nyc1-01/html/.

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

Сохраните изменения и приступайте к настройке SSL.

В свежей установке SSL ещё не настроен, но отредактировать стандартные настройки ssl-default.conf лучше сейчас, чтобы избежать возникновения ошибок в дальнейшем.

Примечание: Если поддержка SSL не включена, файл ssl-default.conf находится только в /etc/apache2/sites-available. Если вы включили поддержку SSL с помощью a2ensite, в sites-available будет создана символьная ссылка на /etc/apache2/sites-enabled. В таком случае можно редактировать этот файл в любом из каталогов.

sudo nano /etc/apache2/sites-available/ssl-default.conf

Внесите такие же коррективы, как и в предыдущих файлах: измените путь в блоках DocumentRoot и Directory.

...
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /mnt/volume-nyc1-01
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /mnt/volume-nyc1-01/html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
</Directory>
...

Убедитесь, что в файлах нет ошибок:

sudo apachectl configtest

Команда должна вернуть:

AH00558: apache2: Could not reliably determine the server's fully qualified domain name,
using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK

На свежей установке появится предупреждение, которое можно проигнорировать. Если в выводе есть фраза Syntax OK, перезапустите веб-сервер. В противном случае исправьте ошибки, прежде чем начать перезагрузку.

sudo systemctl reload apache2

После перезапуска посетите сайты, чьи корневые каталоги вы переместили на новое устройство, и убедитесь, что они работают. После этого можно удалить оригинальный каталог.

Заключение

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

При увеличении нагрузки на сайт вы можете протестировать нагрузку веб-сервера при помощи Apache JMeter.

Tags: , ,

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