Ich bin sicher, dass jemand dies schon einmal gefragt/beantwortet hat, aber meine Suche hat mir nicht viel geholfen, also ...
Ich habe Eclipse IDE auf meiner Linux-Box (LM13) installiert, der Ordner "workspace" befindet sich @
/home/user/projects/workspace
Ich habe Apache installiert und eingerichtet und arbeite mit verschiedenen virtuellen Hosts, die alle ihre Ordner irgendwo unter dem Web-Root haben/var/www/...
Mein Problem besteht darin, dass Apache nicht auf den virtuellen Host zugreifen kann, den ich für ein Projekt in meinem Eclipse-Arbeitsbereich konfiguriert habe. Daher erhalte ich die Meldung „403 – Verboten – Sie besitzen keine Berechtigung für den Zugriff auf / auf diesem Server.“
Zuerst habe ich einfach eine „normale“ vhost-Konfiguration ausprobiert, dann habe ich versucht, einen SymLink unter dem Web-Root @ zu verwenden, der
/var/www/freelance/project
mit dem Ordner des Projekts im Eclipse-Arbeitsbereich verknüpft ist
Ich habe beides FollowSymLinks
und SymLinksIfOwnerMatch
die Optionsdirektive im <directory ...>
Abschnitt ausprobiert, kann aber mit Apache in meinem Browser immer noch nicht darauf zugreifen!
Kann mir bitte jemand erklären, wie ich dieses Setup zum Laufen bekomme? Ich habe es mod_userdir
noch nicht versucht oder die Dateiberechtigungen für meinen /home
Ordner so eingestellt, dass Apache darauf zugreifen kann, da mir keines davon zielführend erschien. Gibt es eine andere Möglichkeit?
Hier ist meine Vhost-Konfiguration:
# 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>
Aktualisieren
Ausgabe von ls -alFd ~/Projects/workspace/iagd
: -
drwxr-xr-- 6 user www-data 4096 Aug 22 14:12 IAGD/
Ausgabe für dasselbe auf /home/user
: -
drwx------ 74 user user 20480 Aug 23 07:30 /home/user/
Antwort1
Sie müssen eine Directory-Direktive für das Unterverzeichnis Ihres Home-Verzeichnisses hinzufügen. Wenn Apache auf einen Symlink zugreift, wird auf das tatsächliche Verzeichnis zugegriffen, auf das der Symlink verweist, und nicht auf den Symlink-Zeiger.
Sie benötigen also zwei Dinge:
Erstens die Berechtigungen des Betriebssystems. Ihr Verzeichnis muss für den Apache-Benutzer lesbar sein, was bedeutet, dass alle Verzeichnisse in der Hierarchie darüber das Ausführungsbit für den Apache-Benutzer gesetzt haben müssen.
Zweitens die Apache-Konfiguration. Apache muss mitgeteilt werden, dass es in Ordnung ist, aus diesem Verzeichnis zu lesen. Normalerweise möchten Sie Apache so einschränken, dass nur das Lesen einer begrenzten Verzeichnishierarchie erlaubt ist – andernfalls könnte jeder Webbenutzer beispielsweise Ihre Kennwortdatei einsehen oder durch die Home-Verzeichnisse aller surfen. Wenn Sie also auf ein Verzeichnis außerhalb der Webroot-Hierarchie zugreifen möchten, müssen Sie eine Anweisung hinzufügen, die Apache anweist, dies zuzulassen. Sie sieht ungefähr so aus:
# 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>