DocumentRoot - это директива в веб-сервере Apache, которая определяет, где находятся веб-файлы для определенного домена или виртуального хоста. По умолчанию многие дистрибутивы, например Ubuntu, размещают эти файлы в каталоге /var/www/html. Однако по таким причинам, как организационная структура, удобство резервного копирования или предпочтения файловой системы, может потребоваться переместить DocumentRoot в другое место, например, /home/user/website.
Настройка корня DocumentRoot обычно выполняется при создании новых веб-сайтов или переносе веб-контента. Однако следует убедиться, что сервер Apache имеет необходимые разрешения для доступа к новой директории.
Изменение корня документа для конкретного виртуального хоста в Apache требует редактирования файла конфигурации виртуального хоста. В разных дистрибутивах Linux пути и структура конфигураций Apache могут немного отличаться, но концепция остается неизменной.
Шаги по изменению местоположения DocumentRoot для Apache VirtualHost
Отредактируйте файл конфигурации Apache с помощью удобного для вас текстового редактора.
1 | sudo nano /etc/apache2/sites-enabled/00-default.conf |
Установите путь в директиве DocumentRoot в конфигурации VirtualHost в новое место.
1 2 3 4 5 6 | <VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /home/user/website ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
Добавьте директиву Directory, чтобы обеспечить необходимые разрешения для папки.
1 2 3 4 5 6 7 8 9 10 11 12 | <VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /home/user/website ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory /home/user/website/> #Options Indexes FollowSymLinks #AllowOverride None Require all granted </Directory> </VirtualHost> |
Измените права собственности на папку, чтобы она была доступна Apache.
1 | sudo chown --recursive www-data:www-data /home/user/website/ |
Убедитесь, что Apache имеет права на чтение и выполнение папки DocumentRoot и ее родительской папки.
При необходимости измените контекст SELinux.
1 | sudo semanage fcontext -a -t httpd_sys_rw_content_t "/home/user/website(/.*)?" |
Это относится к дистрибутивам, в которых реализован SELinux, таким как CentOS, RHEL и Fedora. Используйте вместо этого httpd_sys_content_t для доступа Apache к папке только для чтения.
Перезапустите или перезагрузите службу Apache, чтобы изменения вступили в силу.
1 | sudo systemctl restart apache2 |
1 | sudo systemctl restart httpd |
Зайдите на сайт, чтобы проверить, успешно ли прошли изменения.
1 | curl [site_name] |