Я уверен, что кто-то уже спрашивал/ответил на этот вопрос, но мой поиск мне не помог, так что...
У меня на Linux-компьютере (LM13) установлена среда Eclipse IDE с папкой «workspace», расположенной по адресу @
/home/user/projects/workspace
У меня установлен и настроен Apache, работающий с различными виртуальными хостами, все из которых имеют свои папки где-то в корневом каталоге веб-сайта./var/www/...
Проблема, с которой я столкнулся, заключается в том, что Apache не может получить доступ к виртуальному хосту, который я настроил для проекта в своей рабочей области Eclipse, и поэтому выдает мне сообщение «403 — Доступ запрещен — У вас нет прав на доступ к / на этом сервере».
Сначала я просто попробовал «обычную» конфигурацию vhost, затем попробовал использовать SymLink в web-root @,
/var/www/freelance/project
связанную с папкой проекта в рабочей области Eclipse.
Я попробовал оба варианта FollowSymLinks
и SymLinksIfOwnerMatch
для директивы options в этом <directory ...>
разделе, но я все еще не могу получить к нему доступ с помощью Apache в моем браузере!
Может кто-нибудь объяснить мне, как заставить эту настройку работать? Я mod_userdir
еще не пробовал использовать или устанавливать права доступа к файлам в моей /home
папке, чтобы разрешить доступ Apache, так как ни один из этих вариантов не показался мне благоприятным. Есть ли другой способ?
Вот моя конфигурация vhost:
# Apache VHOST config for IAGD
<VirtualHost my.iagd:80>
NameVirtualHost my.iagd:80
ServerAlias *.my.iagd
# ServerAdmin username@domain
DocumentRoot /var/www/freelance/iagd
<Directory /var/www/freelance/iagd/>
Options FollowSymLinks SymLinksIfOwnerMatch
AllowOverride All
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>
# Define custom log level
LogLevel warn
# Set up custom log files
ErrorLog ${APACHE_LOG_DIR}/iagd/error.log
CustomLog ${APACHE_LOG_DIR}/iagd/access.log combined
</VirtualHost>
Обновлять
Вывод из ls -alFd ~/Projects/workspace/iagd
:-
drwxr-xr-- 6 user www-data 4096 Aug 22 14:12 IAGD/
Вывод для того же самого на /home/user
:-
drwx------ 74 user user 20480 Aug 23 07:30 /home/user/
решение1
Вам нужно будет добавить директиву Directory для подкаталога вашего домашнего каталога. Когда Apache обращается к символической ссылке, будет осуществлен доступ к фактическому каталогу, на который указывает символическая ссылка, а не к указателю символической ссылки.
Итак, вам понадобятся две вещи:
Во-первых, разрешения операционной системы. Ваш каталог должен быть доступен для чтения пользователю Apache, что означает, что все каталоги в иерархии выше должны иметь установленный бит выполнения для пользователя Apache.
Во-вторых, конфигурация Apache. Apache нужно сообщить, что можно читать из этого каталога. Обычно вы хотите ограничить Apache, чтобы ему было разрешено читать только ограниченную иерархию каталогов — в противном случае любой веб-пользователь мог бы, например, просмотреть ваш файл паролей или просмотреть домашние каталоги всех. Поэтому, когда вы хотите получить доступ к каталогу, который находится за пределами иерархии webroot, вам нужно добавить директиву, сообщающую Apache, что это разрешено. Это будет выглядеть примерно так:
# Apache VHOST config for IAGD
<VirtualHost my.iagd:80>
NameVirtualHost my.iagd:80
ServerAlias *.my.iagd
# ServerAdmin username@domain
DocumentRoot /var/www/freelance/iagd
<Directory /var/www/freelance/iagd/>
Options FollowSymLinks SymLinksIfOwnerMatch
AllowOverride All
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>
<Directory /home/user/projects/workspace>
AllowOverride All
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>
# Define custom log level
LogLevel warn
# Set up custom log files
ErrorLog ${APACHE_LOG_DIR}/iagd/error.log
CustomLog ${APACHE_LOG_DIR}/iagd/access.log combined
</VirtualHost>