Ich habe folgendes Problem
Meine Hosts-Datei lautet wie folgt:
127.0.0.1 localhost
127.0.1.1 barbala4o-HP-ProBook-4530s
127.0.1.1 mysite.localhost
Meine Datei im /etc/Apache2/sites-available/mysite.localhost.conf
Lautet wie folgt:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName mysite.localhost
DocumentRoot /var/www/mysite
<Directory /var/www/mysite/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/Apache2/mysite-error.log
CustomLog /var/log/Apache2/mysite-access.log common
</VirtualHost>
Nach do Sudo a2ensite mysite.localhost.conf
Und einem Neustart von Apache auf mysite.localhost/und nur auf localhost erhalte ich folgendes (wie das Auflisten eines Verzeichnisses ohne Indexdatei):
Index of /
[ICO] Name Last modified Size Description
[DIR] Apache_logs/ 2013-09-24 10:15 -
[DIR] mysql/ 2013-10-22 10:05 -
[DIR] tools/ 2013-10-22 10:05
Und in jedem anderen Ordner im Verzeichnis /var/www/
Wie test, wenn ich localhost/test
Eingebe, anstatt die Datei index.php
Zu laden:
Not Found
The requested URL /adlantic was not found on this server.
Apache/2.4.6 (Ubuntu) Server at localhost Port 80
Wenn ich Sudo a2dissite mysite.conf
Tue und Apache neu starte, wird alles in Ordnung geladen. Ich denke, das Problem liegt irgendwo im mysite.localhost.conf
, Aber ich kann nicht finden, wo. Irgendwelche Ideen? 10x
Ubuntu 13.10 und Varianten sind auf Apache 2.4 umgezogen. Apache 2.4 möchte, dass aktivierte Konfigurationsdateien für virtuelle Hosts standardmäßig mit .conf enden.
Lösung
Um dieses Problem zu beheben, gibt es zwei Methoden, mit denen Sie das gleiche Ergebnis erzielen können.
Die erste und einfachste Lösung besteht darin, allen virtuellen Hosts die Erweiterung .conf hinzuzufügen. Der neue Apache 2.4 liest jeden virtuellen Host im für Sites verfügbaren Verzeichnis mit der Erweiterung .conf, die in der neuen Apache 2.4-Konfigurationsdatei angegeben ist.
Die zweite Lösung besteht darin, die Erweiterung .conf in der Apache 2.4-Konfigurationsdatei in /etc/Apache2/Apache2.conf zu entfernen
In der alten Apache 2.2-Datei hatte die .conf-Datei ein Include sites-enabled/während die neue .conf-Datei hat
# Include the virtual Host configurations:
IncludeOptional sites-enabled/*.conf
Ändern Sie diese Zeile zu lesen:
# Include the virtual Host configurations:
IncludeOptional sites-enabled/
Das Ergebnis: Der Befehl a2ensite yourdomain wird nun wie erwartet ausgeführt. Wenn Sie die 2. Methode verwenden; Ihre virtuellen Host-Dateien müssen nicht die Erweiterung .conf haben.
Note: Configuration file is "/etc/Apache2/Apache2.conf" in new Apache, so please copy document root path and other configurations from "/etc/Apache2/sites-available/000-default.conf" to "/etc/Apache2/Apache2.conf"
Ich fand das Problem nach 3 Stunden Experimentieren. Anscheinend muss die conf-Datei für den virtuellen Host im neuen Ubuntu 13.10 aus irgendeinem blöden Grund ungefähr so aussehen:
<VirtualHost mysite.localhost>
ServerAdmin [email protected]
ServerName mysite.localhost
ServerAlias mysite.localhost
# Indexes + Directory Root.
DocumentRoot /var/www/mysite/public_html
<Directory /var/www/mysite/public_html/>
DirectoryIndex index.php
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# Logfiles
ErrorLog /var/log/Apache2/mysite-error.log
CustomLog /var/log/Apache2/mysite-access.log common
</VirtualHost>
Anscheinend haben die Entwickler von Ubuntu 13.10 entschieden, dass die Verwendung nicht mehr wertvoll ist
<VirtualHost *:80>
wenn Sie einen virtuellen Host erstellen und stattdessen muss es sein
<VirtualHost mysite.localhost>
gemischt mit der spezifischen Angabe von DirectoryIndex. Dies behebt das Problem, das ich hatte und jetzt funktionieren die Dinge (hoffentlich wie sie sollten, irgendwann kann etwas dazwischen kommen). Anscheinend ist die Konfigurationsdatei von Apache anders.
Ich hatte das gleiche Problem, aber keines der oben genannten Postings hat für mich funktioniert. Später las und überprüfte ich alle Konfigurationsdateien von Apache und PHP.
Ich könnte herausfinden, dass es in Apache2.conf (in Ubuntu 13.10) ein Flag namens gibt
HostnameLookups off
Standardmäßig ist dies deaktiviert. Ich habe dies in geändert
HostnameLookups on
Auf diese Weise fing Apache an, meine Host-Einträge und die vhost-Konfiguration aufzuspüren.
Unten ist auch meine aktuelle Vhost-Datei. was ich verwendet, um es zum Laufen zu bringen
Natürlich empfehle ich auch das Hinzufügen von Require all granted
mit in der Vhost-Direktive.
<VirtualHost *:80>
ServerName test.yoursite.domain.in
DocumentRoot path_to_code_base/public
<Directory path_to_code_base/public>
Options -Indexes
Require all granted
DirectoryIndex index.php
AllowOverride All
</Directory>
ErrorLog /path_to_code_base/logs/error.log
LogLevel warn
CustomLog /path_to_code_base/logs/access.log combined
</VirtualHost>
Ich poste dies, um anderen zu helfen, die dort keine Zeit mit dem Downgrade von Ubuntu auf 13.04 von 13.10 verschwenden möchten.
Ich sehe dazu keine Blogs, ich konnte auch nicht verstehen, was eigentlich die Bedeutung von hostnameLookups ist.
Hoffe das hilft .
Für Apache 2.4.6
In Ubuntu 13.10
Du wirst haben
/etc/Apache2/Apache2.conf
/etc/Apache2/sites-available/000-default.conf
Und
/etc/Apache2/sites-enabled/000-default.conf
zeigt auf/etc/Apache2/sites-available/000-default.conf
Bearbeiten Sie nun Apache2.conf
Und fügen Sie hinzu
<Directory /home/my_site/public_html/>
#YOUR SETTINGS
</Directory>
und bearbeiten Sie sites-available/000-default.conf
und ändern Sie <VirtualHost *:80>
in <VirtualHost localhost:80>
, damit Apache localhost (auf Port 80) auf Ihre Standardeinstellungen überwacht.
Fügen Sie dies nun zu mysite.localhost
Hinzu, damit sites-available/000-default.conf
Funktioniert.
<VirtualHost mysite.localhost:80>
ServerName mysite.localhost
ServerAdmin [email protected]
DocumentRoot /home/my_new_site_public_html
ErrorLog ${Apache_LOG_DIR}/error.log
CustomLog ${Apache_LOG_DIR}/access.log combined
</VirtualHost>
Bearbeiten Sie nun Ihre /etc/hosts/
- Datei und ändern Sie das IP
von mysite.localhost
Von 127.0.1.1
In 127.0.0.1
.
Besuchen Sie jetzt http://mysite.localhost
& http://localhost
:)
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName mysite.localhost
DocumentRoot /var/www/mysite
<Directory /var/www/mysite/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/Apache2/mysite-error.log
CustomLog /var/log/Apache2/mysite-access.log common
</VirtualHost>
In meinem Fall habe ich gerade <VirtualHost *:80>
bis <VirtualHost mysite.localhost:80>
nach vielen Versuchen und Irrtümern
Ich hoffe das hilft.
Grüße,
Nur ein Hinweis für Leute, die sich zu diesem Thema die Haare aus dem Kopf ziehen. Wenn Sie eine AWS-Instanz verwenden, müssen Sie Sudo verwenden, damit all diese Einstellungen wirksam werden.
Sudo a2ensite example.com
Denken Sie daran, dass Sie dies tun müssen, um Apache neu zu starten. Wenn Sie nicht sehen, dass Ihre Änderungen vorgenommen werden, ist dies wahrscheinlich der Schuldige.
Sudo service Apache2 restart
Ausführen:
vim kann mit Ihrem bevorzugten Texteditor wie Nano, Pico usw. geändert werden.
vim /etc/Apache2/Apache2.conf
Originaldatei:
# Sets the default security model of the Apache2 HTTPD server. It does
# not allow access to the root filesystem outside of /usr/share and /var/www.
# The former is used by web applications packaged in Debian,
# the latter may be used for local directories served by the web server. If
# your system is serving content from a sub-directory in /srv you must allow
# access here, or in any related virtual Host.
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share/>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Ändern Sie None in All
Datei bearbeiten:
# Sets the default security model of the Apache2 HTTPD server. It does
# not allow access to the root filesystem outside of /usr/share and /var/www.
# The former is used by web applications packaged in Debian,
# the latter may be used for local directories served by the web server. If
# your system is serving content from a sub-directory in /srv you must allow
# access here, or in any related virtual Host.
<Directory />
Options FollowSymLinks
AllowOverride All
Require all denied
</Directory>
<Directory /usr/share/>
AllowOverride All
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Für Kubuntu 14.04 & Apache 2.4.7
Nachdem ich die obigen Vorschläge ausprobiert hatte und immer noch auf Berechtigungsprobleme gestoßen war, funktionierte ein "chmod 755 $ HOME" für mich. Darf nicht auf Mehrbenutzersystemen verwendet werden.