Вступление
В Ubuntu по умолчанию веб-сервер Apache2 хранит свои документы в + / var / www / html
, который обычно находится в корневой файловой системе вместе с остальной частью операционной системы. Однако иногда полезно переместить корень документа в другое место, например в отдельную смонтированную файловую систему. Например, если вы обслуживаете несколько веб-сайтов из одного и того же экземпляра Apache, размещение корня каждого документа на своем собственном томе позволяет масштабировать в соответствии с потребностями конкретного сайта или клиента.
В этом руководстве мы покажем вам, как переместить корень документа Apache в новое место.
Предпосылки
Для завершения этого руководства вам понадобится:
-
* Сервер Ubuntu 16.04 с пользователем без полномочий root с привилегиями
+ sudo +
*. Вы можете узнать больше о том, как настроить пользователя с этими привилегиями, в нашей Initial Server Setup с Ubuntu 16.04 руководство. -
* Веб-сервер Apache2 *: если вы еще не настроили его, обратитесь к разделу Apache углубленной статьи https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache. -mysql-php-lamp-stack-on-ubuntu-16-04 [Как установить Linux, Apache, MySQL, стек PHP (LAMP) в Ubuntu 16.04] может помочь вам.
-
* Новое местоположение для корня вашего документа *: Новое местоположение корня документа полностью настраивается в зависимости от ваших потребностей. Если вы перемещаете корневой каталог документа на другое устройство хранения, вам нужно выбрать местоположение под точкой монтирования устройства.
В этом примере мы будем использовать каталог + / mnt / volume-nyc1-01 +
. Если вы используете блочное хранилище в DigitalOcean, this guide покажет вам, как смонтировать диск перед продолжением с этим уроком.
Шаг 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 +
предоставляет подробный вывод, чтобы вы могли следить за ходом процесса.
sudo rsync -av /var/www/
Теперь мы готовы обновить конфигурацию.
Шаг 2 - Обновление файлов конфигурации
Apache2 использует как глобальные, так и специфичные для сайта файлы конфигурации. Для получения справочной информации об иерархии конфигурационных файлов, посмотрите на https://www.digitalocean.com/community/tutorials/how-to-configure-the-apache-web-server-on-an-ubuntu-or-debian -vps # the-apache-file -ierarchy-in-ubuntu-and-debian [Как настроить веб-сервер 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 +
, и обновим ее, указав новое местоположение.
/etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory >
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
</Directory>
После сохранения этих изменений мы обратим наше внимание на конфигурацию SSL. При новой установке SSL еще не будет настроен, но вы, вероятно, захотите обновить + ssl-default.conf +
, чтобы избежать некоторых неполадок позже, если вы не помните, что нужно внести изменения.
sudo nano /etc/apache2/sites-available/ssl-default.conf
/etc/apache2/sites-available/ssl-default.conf
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot
. . .
Шаг 3 - Перезапуск Apache
Закончив изменения конфигурации, вы можете убедиться в правильности синтаксиса с помощью + configtest +
:
sudo apachectl configtest
Вы will получите отзыв от + 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
Если вы получили + Синтаксис OK +
, перезапустите веб-сервер. В противном случае отследите и устраните обнаруженные проблемы.
Используйте следующую команду для перезапуска Apache:
sudo systemctl reload apache2
После перезапуска сервера посетите ваши уязвимые сайты и убедитесь, что они работают должным образом. Как только вы освоитесь, все в порядке, не забудьте удалить оригинальную копию данных.
Заключение
В этом уроке мы рассмотрели, как изменить корень документа Apache на новое место. Это может помочь вам с базовым администрированием веб-сервера, таким как эффективное размещение нескольких сайтов на одном сервере. Это также позволяет вам использовать преимущества альтернативных устройств хранения, таких как сетевое хранилище блоков, важный шаг в масштабировании веб-сайта по мере изменения его потребностей.
Если вы управляете загруженным или растущим веб-сайтом, вам может быть интересно узнать https://www.digitalocean.com/community/tutorials/how-to-use-apache-jmeter-to-perform-load-testing- на веб-сервере [как загрузить тестовый веб-сервер], чтобы определить узкие места в производительности, прежде чем вы столкнетесь с ними на производстве. Вы также можете узнать больше об улучшении производственного опыта в этом сравнении https://www.digitalocean.com/community/tutorials/5-ways-to-improve-your-production-web-application-server-setup[five улучшить настройку сервера вашего производственного веб-приложения.