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

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

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

Требования

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

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

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

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

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

grep -R “DocumentRoot” /etc/apache2/sites-enabled

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

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

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

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

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

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

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

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

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

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

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

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

<VirtualHost *:80>
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
Order allow,deny
allow from all
</Directory>

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

sudo  nano /etc/apache2/sites-available/ssl-default.conf
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /mnt/volume-nyc1-01
. . .

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

3: Перезапуск Apache

Откорректировав все настройки, проверьте синтаксис на наличие ошибок с помощью configtest:

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

Если команда не сообщила об ошибках, можете перезапустить сервер.

sudo systemctl reload apache2

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

Заключение

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

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

Tags: , ,

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