Вступление
В 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.