In Mac OS X 10.9.3 habe ich http-vhosts in httpd.conf eingeschlossen
# Virtual hosts
Include /private/etc/apache2/extra/httpd-vhosts.conf
Ich habe das DocumentRoot und das Verzeichnis in httpd.conf auskommentiert
# DocumentRoot "/Library/WebServer/Documents"
# <Directory "/Library/WebServer/Documents">...</Directory>
Ich habe meiner httpd-vhosts.conf-Datei Folgendes hinzugefügt
<VirtualHost *.80>
DocumentRoot /Users/gdboling/Sites/rocket-gen
ServerName local.rocket-gen.com
<Directory "/Users/gdboling/Sites/rocket-gen">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Und ich habe Folgendes zu meiner /etc/hosts-Datei hinzugefügt
127.0.0.1 local.rocket-gen.com
Ich habe Apache neu gestartet
sudo apachectl restart
Es gibt eine index.html in diesem Verzeichnis, aber wenn ich über den Browser auf http://local.rocket-gen.com zugreife , erhalte ich eine 404. Ich erhalte dies in den Fehlerprotokollen
[Tue Jun 17 19:09:10 2014] [error] [client 127.0.0.1] File does not exist: /usr/htdocs
Ich kann nicht herausfinden, warum es nicht funktioniert. Wenn ich dieses Verzeichnis als DocumentRoot in httpd.conf erstelle, funktioniert es. Aber ich brauche mehrere virtuelle Hosts, also möchte ich die vhosts-Datei zum Laufen bringen.
Es sieht so aus, als hätten Sie fast alles richtig gemacht. Ich betreibe Mavericks mit ein paar Dutzend virtuellen Hosts, also sollte dies für Sie funktionieren.
Zuerst, und dies könnte alles sein, was Sie tun müssen, um Probleme zu beheben, müssen Sie Ihr DocumentRoot in Anführungszeichen setzen. So,
DocumentRoot /Users/gdboling/Sites/rocket-gen
wird
DocumentRoot "/Users/gdboling/Sites/rocket-gen"
Fügen Sie als Nächstes Folgendes zu Ihrer /etc/hosts
Datei hinzu, in der Zeile, die unmittelbar auf das folgt, was Sie bereits haben. Ihre hosts
Datei sollte sein:
Sie haben diesen Teil:
127.0.0.1 local.rocket-gen.com
Fügen Sie dies nun direkt darunter hinzu:
::1 local.rocket-gen.com
Ich habe jeden meiner Vhosts auf hosts
diese Weise eingestellt.
Offensichtlich kann Ihr Apache seinen definierten Dokumentenstamm nicht finden. Meiner Meinung nach verwechselst du einiges.
Korrigieren Sie zunächst den Tippfehler im VirtualHost-Container. Die Adressierung eines Ports definieren Sie mit einem Doppelpunkt, nicht mit einem "."
<VirtualHost *:80>...</VirtualHost>
Zweitens, wenn Sie mehrere Server nach Namen und nicht nach IP-Adresse hosten möchten, müssen Sie namensbasierte virtuelle Hosts verwenden. Dann haben Sie natürlich in der Apache-Konfiguration die NameVirtualHost-Direktive verpasst, wenn Sie es so einrichten möchten.
NameVirtualHost server1.example.org:80
( http://httpd.apache.org/docs/2.2/vhosts/name-based.html )
Stellen Sie IMMER den ServerName ein, sonst kann Apache nicht auf Ihr neues Documentroot chdir zugreifen.
Drittens haben Sie im Hauptkonfigurationsteil von httpd.conf DocumentRoot auskommentiert. Haben Sie dies auch mit den Zugriffsregeln im Abschnitt "Verzeichnis /" für Ihr früheres DocumentRoot gemacht?
Viertens, wenn Sie einen harten VirtualHost anstelle von NameVirtualHost einrichten möchten, vergessen Sie nicht die Listen-Direktive. Dafür braucht man also eine
Listen *:80
in Ihrer Haupt-httpd.conf. Wenn Sie verschiedene Server auf verschiedenen IP-Adressen einrichten möchten, müssen Sie diese wie folgt konfigurieren:
<VirtualHost server1.example.com:80>...
Dies ist mir passiert, als ich auf Mavericks (10.9.5) aktualisiert habe. Apple scheint die „Webfreigabe“ aus der App „Systemeinstellungen“ entfernt zu haben, was für die Art und Weise, wie die http.conf
Datei geschrieben wurde, wichtig war.
Zwei Möglichkeiten, es zu beheben:
apachectl -k start -D WEBSHARING_ON
http.conf
zu entfernende <IfDefine WEBSHARING_ON>
und entsprechende Datei </IfDefine>
, ABER NICHT den Inhalt zwischen den Tags.
stephen.hanson
::1 ...
Teil ist das, was mir gefehlt hat.