Как переместить веб-корень Apache в новое место в Ubuntu 16.04
Введение
В Ubuntu по умолчанию веб-сервер Apache2 хранит свои документы в /var/www/html
, который обычно находится в корневой файловой системе с остальной частью операционной системы. Однако иногда полезно переместить корень документа в другое место, например, в отдельную смонтированную файловую систему. Например, если вы обслуживаете несколько веб-сайтов из одного и того же экземпляра Apache, размещение корня документа каждого из них на собственном томе позволяет масштабировать его в соответствии с потребностями конкретного сайта или клиента.
В этом руководстве мы покажем вам, как переместить корень документа Apache в новое место.
Предпосылки
Для выполнения этого руководства вам потребуется:
- Сервер Ubuntu 16.04 с пользователем без полномочий root с привилегиями
sudo
. Вы можете узнать больше о том, как настроить пользователя с этими привилегиями, в нашем руководстве Initial Server Setup with Ubuntu 16.04. - Веб-сервер Apache2: если вы еще не настроили его, раздел Apache подробной статьи «Как установить стек Linux, Apache, MySQL, PHP (LAMP) в Ubuntu 16.04» поможет вам.
- Новое расположение для корневого каталога вашего документа. Новое корневое расположение документа полностью настраивается в соответствии с вашими потребностями. Если вы перемещаете корневую папку документа на другое устройство хранения, вам нужно будет выбрать место под точкой подключения устройства.
В этом примере мы будем использовать каталог /mnt/volume-nyc1-01
. Если вы используете блочное хранилище в DigitalOcean, это руководство покажет вам, как смонтировать диск, прежде чем продолжить изучение этого руководства.
Шаг 1 — Копирование файлов в новое место
При новой установке Apache корневой каталог документа находится в /var/www/html
. Однако, если вы работаете с существующим сервером, у вас может быть существенно другая настройка, включая несколько корней документов в соответствующих директивах VirtualHost.
Вы можете искать расположение дополнительных корней документов, используя grep
. Мы будем искать в каталоге /etc/apache2/sites-enabled
, чтобы ограничить наше внимание активными сайтами. Флаг -R
гарантирует, что grep
будет печатать как DocumentRoot, так и имя файла в своем выводе:
- grep -R "DocumentRoot" /etc/apache2/sites-enabled
Результат будет выглядеть примерно так, как показано ниже, хотя имена и количество результатов, вероятно, будут другими в существующей установке:
Outputsites-enabled/000-default.conf DocumentRoot /var/www/html
Используйте обратную связь от grep
, чтобы убедиться, что вы перемещаете нужные файлы и обновляете соответствующие файлы конфигурации.
Теперь, когда мы подтвердили расположение корня нашего документа, мы скопируем файлы в новое место с помощью rsync
. Использование флага -a
сохраняет разрешения и другие свойства каталога, а -v
обеспечивает подробный вывод, чтобы вы могли следить за ходом выполнения.
Примечание. Убедитесь, что в каталоге нет завершающей косой черты, которая может быть добавлена, если вы используете завершение с помощью табуляции. Когда в конце есть косая черта, rsync
выгружает содержимое каталога в точку монтирования вместо того, чтобы передавать его в содержащий каталог html
:
- sudo rsync -av /var/www/html /mnt/volume-nyc1-01
Теперь мы готовы обновить конфигурацию.
Шаг 2 — Обновление файлов конфигурации
Apache2 использует как глобальные, так и специфичные для сайта файлы конфигурации. Справочную информацию об иерархии файлов конфигурации см. в статье Как настроить веб-сервер Apache на Ubuntu или Debian VPS.
Если вы работаете с существующей установкой, вам следует изменить файлы виртуального хоста, которые вы нашли ранее, с помощью команды grep
. В нашем примере мы рассмотрим два файла виртуального хоста, которые поставляются с Apache по умолчанию: 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
Require all granted
</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
Вы получите отзыв от apachectl configtest
при новой установке:
OutputAH00558: 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
, перезапустите веб-сервер. В противном случае отследите и устраните проблемы, о которых он сообщил.
Используйте следующую команду для перезапуска Apache:
- sudo systemctl reload apache2
После перезапуска сервера посетите уязвимые сайты и убедитесь, что они работают должным образом. Как только вы убедитесь, что все в порядке, не забудьте удалить исходную копию данных.
Заключение
В этом руководстве мы рассмотрели, как изменить корень документа Apache на новое место. Это может помочь вам с базовым администрированием веб-сервера, например, с эффективным размещением нескольких сайтов на одном сервере. Это также позволяет вам использовать преимущества альтернативных устройств хранения, таких как сетевое блочное хранилище, что является важным шагом в масштабировании веб-сайта по мере изменения его потребностей.
Если вы управляете загруженным или растущим веб-сайтом, вам может быть интересно узнать о пяти способах улучшить настройку рабочего сервера веб-приложений.