Как переместить веб-корень Apache на новое место в Ubuntu 18.04

Вступление

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

В этом руководстве вы переместите корень документа Apache в новое место.

Предпосылки

Для завершения этого руководства вам понадобится:

  • Сервер Ubuntu 18.04 и пользователь без полномочий root с привилегиями sudo. Вы можете узнать больше о том, как настроить пользователя с этими привилегиями, в нашем руководствеInitial Server Setup with Ubuntu 18.04.

  • Установлен Apache послеHow To Install the Apache Web Server on Ubuntu 18.04.

  • SSL настроен для вашего домена послеHow To Secure Apache with Let’s Encrypt on Ubuntu 18.04. В этом руководстве мы будем использовать доменное имяexample.com, но вы должны заменить его своим собственным доменным именем.

  • Новое местоположение для вашего корня документа. В этом руководстве мы будем использовать каталог/mnt/volume-nyc3-01 для нашего нового местоположения. Если вы используете блочное хранилище в DigitalOcean,this guide покажет вам, как создать и прикрепить ваш том. Однако новый корневой каталог документов настраивается в зависимости от ваших потребностей. Если вы перемещаете корневой каталог документов на другое устройство хранения, вам нужно выбрать местоположение под точкой монтирования устройства.

[[step-1 -—- copying-files-to-the-new-location]] == Шаг 1. Копирование файлов в новое место

При новой установке Apache корень документа находится в/var/www/html. Однако, следуя необходимым руководствам, вы создали новый корень документа,/var/www/example.com/html. Вы также можете иметь дополнительные корни документов в соответствующих директивахVirtualHost. На этом этапе мы установим местоположение наших корней документов и скопируем соответствующие файлы в их новое местоположение.

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

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

Если вы следовали обязательным учебникам на новом сервере, результат будет выглядеть так:

Output/etc/apache2/sites-enabled/example.com-le-ssl.conf:  DocumentRoot /var/www/example.com/html
/etc/apache2/sites-enabled/example.com.conf:         DocumentRoot /var/www/example.com/html

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

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

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

sudo rsync -av /var/www/example.com/html /mnt/volume-nyc3-01

Вы увидите вывод, подобный следующему:

Outputsending incremental file list
html/
html/index.html

sent 318 bytes  received 39 bytes  714.00 bytes/sec
total size is 176  speedup is 0.49

С нашими файлами на месте, давайте перейдем к изменению нашей конфигурации Apache, чтобы отразить эти изменения.

[[step-2 -—- update-the-configuration-files]] == Шаг 2 - Обновление файлов конфигурации

Apache использует как глобальные, так и специфичные для сайта файлы конфигурации. Чтобы узнать об иерархии файлов конфигурации, посмотритеHow To Configure the Apache Web Server on an Ubuntu or Debian VPS. Мы изменимthe virtual host files for our example.com project:/etc/apache2/sites-enabled/example.com.conf и/etc/apache2/sites-enabled/example.com-le-ssl.conf, которые были созданы, когда мыconfigured SSL certificates for example.com.

[.note] #Note: Помните, что в вашем случаеexample.com будетyour_domain_name, и что вы будете изменять файлы виртуального хоста, которые были выведены при запускеgrep команда на шаге 1.
#

Начните с открытия/etc/apache2/sites-enabled/example.com.conf:

sudo nano /etc/apache2/sites-enabled/example.com.conf

Найдите строку, которая начинается сDocumentRoot, и обновите ее, указав новую корневую папку. В нашем случае это будет/mnt/volume-nyc3-01/html:

/etc/apache2/sites-enabled/example.com.conf


    ServerAdmin [email protected]
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /mnt/volume-nyc3-01/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.example.com [OR]
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

Давайте также добавим директивы, чтобы сервер следовал по символическим ссылкам в каталоге:

/etc/apache2/sites-enabled/example.com.conf

. . .

    Options FollowSymLinks
    AllowOverride None
    Require all granted

Следите заDocumentRoot, котороеgrep выводит на шаге 1, включая псевдонимы или перезаписи. Вам также необходимо обновить их, чтобы они отражали новое корневое местоположение документа.

После сохранения этих изменений давайте обратим наше внимание на конфигурацию SSL. Открыть/etc/apache2/sites-enabled/example.com-le-ssl.conf:

sudo nano /etc/apache2/sites-enabled/example.com-le-ssl.conf

ИзменитеDocumentRoot, чтобы отразить новое местоположение,/mnt/volume-nyc3-01/html:

/etc/apache2/sites-enabled/example.com-le-ssl.conf



    ServerAdmin [email protected]
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /mnt/volume-nyc3-01/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
. . .

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

[[step-3 -—- restarting-apache]] == Шаг 3. Перезапуск Apache

Закончив вносить изменения в конфигурацию, вы можете перезапустить Apache и проверить результаты.

Во-первых, убедитесь, что синтаксис правильный сconfigtest:

sudo 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

Если вы хотите подавить верхнюю строку, просто добавьте директивуServerName в ваш основной (глобальный) файл конфигурации Apache в/etc/apache2/apache2.conf. ServerName может быть доменом вашего сервера или IP-адресом. Однако это всего лишь сообщение, которое не влияет на функциональность вашего сайта. Пока вывод содержитSyntax OK, вы готовы продолжить.

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

sudo systemctl reload apache2

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

sudo rm -Rf /var/www/example.com/html

Вы успешно переместили корень вашего документа Apache в новое место.

Заключение

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

Если вы управляете загруженным или растущим веб-сайтом, вам может быть интересно узнатьhow to load test your web server, чтобы определять узкие места в производительности, прежде чем вы столкнетесь с ними в производственной среде. Вы также можете узнать больше об улучшении производственного процесса в этом сравненииfive ways to improve your production web application server setup.

Related