На этот вопрос уже есть ответ здесь:
Apache/2.4.18 (Ubuntu)
Ubuntu 16.04
Я тестировал начальная конфигурация, направила мой браузер на сервер и получила обычную страницу убунуту. Работает отлично.
000-default.conf:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
</VirtualHost>
index.html находится в каталоге / var / www / html, а для каталога / var / www / html установлены права доступа 0755
Я создал каталог / home / utils / rails / public, принадлежит пользователю utils. Я установил разрешения для этого каталога на 0755
Я скопировал файл index.html из / var / www / html в / home / utils / rails / public
Затем я изменил / etc / apache2 / sites-available /000-default.conf на следующее:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /home/utils/rails/public
</VirtualHost>
Я перезапустил apache2 и указал браузеру на это местоположение, но на этот раз я получил
Forbidden
You don't have permission to access / on this server
Если я отменил процедуру и изменил DocumentRoot обратно на / var / www / html, все работает нормально.
Что я делаю не так?
namei -lx /home/utils/rails/public
f: /home/utils/rails/public
Drwxr-xr-x root root /
drwxr-xr-x root root home
drwxr-xr-x utils utils utils
drwxrwxr-x utils utils rails
drwxr-xr-x utils utils public
Следующее решило проблему:
<VirtualHost *:80>
ServerAdmin myanme@myserver.net
ServerName myserver.net
DocumentRoot "/home/utils/rails/public"
<Directory "/home/utils/rails/public">
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
AllowOverride None
Require all granted
</Directory>
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/myserver.net_error.log
CustomLog ${APACHE_LOG_DIR}/myserver.net_access.log combined
</VirtualHost>
ключ:
Require all granted
Это используется начиная с Apache 2.4. Другие директивы не являются ключевыми для проблемы доступа, но я имею их для запрещения .htaccess директив ( ALlowOverride) и соглашение с Мультипредставления
полномочия Установки к 0755 работам и не должен был быть изменен