Поиск по сайту:

Как переместить веб-корень 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, так и имя файла в своем выводе:

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

Результат будет выглядеть примерно так, как показано ниже, хотя имена и количество результатов, вероятно, будут другими в существующей установке:

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

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

Теперь, когда мы подтвердили расположение корня нашего документа, мы скопируем файлы в новое место с помощью rsync. Использование флага -a сохраняет разрешения и другие свойства каталога, а -v обеспечивает подробный вывод, чтобы вы могли следить за ходом выполнения.

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

  1. 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:

  1. 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, чтобы избежать устранения неполадок позже, если вы не помните, что вам нужно сделать изменение.

  1. 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:

  1. sudo apachectl configtest

Вы получите отзыв от apachectl configtest при новой установке:

Output
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, перезапустите веб-сервер. В противном случае отследите и устраните проблемы, о которых он сообщил.

Используйте следующую команду для перезапуска Apache:

  1. sudo systemctl reload apache2

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

Заключение

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

Если вы управляете загруженным или растущим веб-сайтом, вам может быть интересно узнать о пяти способах улучшить настройку рабочего сервера веб-приложений.