Der virtuelle Apache-Host zeigt "Index der" Seite anstelle der Website an

4126
SJ H

Wenn Sie den Domänennamen in einem Browser eingeben, wird anstelle des Inhalts meiner Website der "Index von /" angezeigt. Ich verwende django, mod-wsgi und apache für ec2.

Meine Apache-Conf-Datei sieht folgendermaßen aus:

<VirtualHost 52.79.**.**:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/qna Alias /m/ /var/www/qna/static/ Alias /upfiles/ /var/www/qna/askbot/upfiles/ <DirectoryMatch “/var/www/qna/askbot/skins/([^/]+)/media”> Require all granted </DirectoryMatch> <Directory “/var/www/qna/askbot/upfiles”> Require all granted </Directory> WSGIDaemonProcess qna WSGIProcessGroup qna WSGIScriptAlias / /var/www/qna/django.wsgi <LocationMatch “(?!/m)/admin(?!/media)”> RewriteEngine on RewriteRule /admin(.*)$ https://mywebsite.com/admin$1 [L,R=301] </LocationMatch> CustomLog /var/log/apache2/t_access_log common ErrorLog /var/log/apache2/qna_error_log LogLevel debug </VirtualHost> <VirtualHost 52.79.**.**:443> ServerAdmin webmaster@localhost DocumentRoot /var/www/qna <LocationMatch "^(?!/admin)"> RewriteEngine on RewriteRule django.wsgi(.*)$ http://mywebsite.com$1 [L,R=301] </LocationMatch> SSLEngine on SSLCertificateFile /etc/ssl/private/qna.crt SSLCertificateKeyFile /etc/ssl/private/qna.key Alias /admin/media/ /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/media/ Alias /m/ /var/www/qna/static/ WSGIScriptAlias / /var/www/qna/django.wsgi CustomLog /var/log/apache2/qna_access_log common ErrorLog /var/log/apache2/qna_error_log </VirtualHost> 

Ich bin ein Neuling und gehe davon aus, dass mit der Apache-Einstellung etwas grundsätzlich nicht stimmt. Ich habe die letzten vier Tage damit verbracht, alles versucht, um dieses Problem zu lösen, aber nichts gelöst.

Ich gehe davon aus, dass mit der WSGI-Einstellung etwas nicht stimmt, da Apache Django nicht versteht. Die Datei settings.py befindet sich in / var / www / qna.

Django 1.8.8 und Python 2.7.6 auf Amazon ec2 Ubuntu. Danke im Voraus. Bitte helfen

Ich habe versucht, ServerName mysite.com und auch ServerAlias ​​zu ändern und hinzugefügt, aber in diesem Fall erhalte ich 500 Internal Server Error.

VirtualHost configuration: *:80 mysite.com (/etc/apache2/sites-enabled/qna.conf:1) *:443 mysite.com (/etc/apache2/sites-enabled/qna.conf:31) ServerRoot: "/etc/apache2" Main DocumentRoot: "/var/www" Main ErrorLog: "/var/log/apache2/error.log" Mutex rewrite-map: using_defaults Mutex ssl-stapling: using_defaults Mutex ssl-cache: using_defaults Mutex default: dir="/var/lock/apache2" mechanism=fcntl  Mutex watchdog-callback: using_defaults PidFile: "/var/run/apache2/apache2.pid" Define: DUMP_VHOSTS Define: DUMP_RUN_CFG User: name="www-data" id=33 not_used Group: name="www-data" id=33 not_used 

Aber wenn ich renne python maange.py runserver 0.0.0.0:80, funktioniert es problemlos. Ich kann auf die Website zugreifen und den Domainnamen eingeben.

1
Sie sagen, Sie verwenden den "Domänennamen" in einem Browser, aber Ihre Konfigurationen sind alle IP-basiert wie folgt: `52.79. **. **: 80`. In diesem Fall könnte `ServerName` festgelegt werden. JakeGould vor 8 Jahren 0
@ Paul Ich habe keine index.html. SJ H vor 8 Jahren 0
@ JakeGould Vielen Dank. Ich habe versucht, den Servernamen auf meinen Domänennamen festzulegen, funktioniert aber immer noch nicht. SJ H vor 8 Jahren 0
@SJH Bitte [sehen Sie sich meine vollständige Antwort an] (http://superuser.com/a/1035431/167207), um zu verstehen, wie ich glaube, dass eine virtuelle Host-Konfiguration festgelegt werden sollte. Sie sollten einen Platzhalterwert für den virtuellen Host wie folgt festlegen: ``und dann` ServerName` auch in der Konfig. Starten Sie dann Apache neu und checken Sie es aus. Überprüfen Sie auch die Ausgabe von `apachectl -S`, um sicherzustellen, dass die Konfigurationsdateien von Apache richtig erkannt werden. Könnte hilfreich sein, wenn die Ausgabe von "apachectl -S" zu Ihrer Antwort hinzugefügt werden könnte. JakeGould vor 8 Jahren 0
Ignoriere meinen Kommentar zu `DirectoryIndex`. Ich sehe in Jakes neu formatierter Konfiguration, dass es einen Alias ​​für / gibt. Paul vor 8 Jahren 0
@SJH "Jetzt bekomme ich 500 Serverfehler." Das heißt, Sie sind näher. Überprüfen Sie die Protokolle in `/ var / log / apache2 / qna_error_log` auf Fehler. Dadurch erfahren Sie, was die 500 Fehler verursachen sollte. JakeGould vor 8 Jahren 0

3 Antworten auf die Frage

0
JakeGould

Hier sind deine Konfigurationen; formatierte mich zur besseren Lesbarkeit neu:

<VirtualHost 52.79.**.**:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/qna  Alias /m/ /var/www/qna/static/ Alias /upfiles/ /var/www/qna/askbot/upfiles/  <DirectoryMatch “/var/www/qna/askbot/skins/([^/]+)/media”> Require all granted </DirectoryMatch>  <Directory “/var/www/qna/askbot/upfiles”> Require all granted </Directory>  WSGIDaemonProcess qna WSGIProcessGroup qna WSGIScriptAlias / /var/www/qna/django.wsgi  <LocationMatch “(?!/m)/admin(?!/media)”> RewriteEngine on RewriteRule /admin(.*)$ https://mywebsite.com/admin$1 [L,R=301] </LocationMatch>  CustomLog /var/log/apache2/t_access_log common ErrorLog /var/log/apache2/qna_error_log  LogLevel debug  </VirtualHost>  <VirtualHost 52.79.**.**:443> ServerAdmin webmaster@localhost DocumentRoot /var/www/qna  <LocationMatch "^(?!/admin)"> RewriteEngine on RewriteRule django.wsgi(.*)$ http://mywebsite.com$1 [L,R=301] </LocationMatch>  SSLEngine on SSLCertificateFile /etc/ssl/private/qna.crt SSLCertificateKeyFile /etc/ssl/private/qna.key  Alias /admin/media/ /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/media/ Alias /m/ /var/www/qna/static/  WSGIScriptAlias / /var/www/qna/django.wsgi  CustomLog /var/log/apache2/qna_access_log common ErrorLog /var/log/apache2/qna_error_log  </VirtualHost> 

Ich gehe davon aus, wenn Sie über ein virtuelles Host-Setup verfügen, wenn Sie versuchen, auf die Website über die IP-Adresse 52.79.**.**:80zuzugreifen, ist alles in Ordnung, aber wenn Sie über einen Hostnamen / Domänennamen darauf zugreifen, example.comdann verschluckt es, richtig? Wenn dies der Fall ist, müssen Sie die virtuellen Hostleitungen folgendermaßen einstellen:

<VirtualHost *:80> 

Und das für HTTPS:

<VirtualHost *:443> 

Dann würden Sie innerhalb dieser Konfigurationsblöcke einen solchen ServerNameWert festlegen . Natürlich ist dies keine vollständige Konfiguration, sondern nur ein Beispiel dafür, was Sie ändern sollten:

<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/qna  ServerName www.example.com ServerAlias www example.* www.example.* 

Wenn Sie so etwas tun, kann die virtuelle Hostkonfiguration korrekt mit www.example.comdem tatsächlichen Servernamen arbeiten, der mit dieser Konfiguration verbunden ist. Anschließend ServerAliaskann die Konfiguration andere Varianten www.example.comwie example.comoder erfassen www.example.net.

0
jc_ryan

Sie müssen einen DirectoryIndex zu Ihrem Knoten hinzufügen.

Siehe https://httpd.apache.org/docs/2.4/mod/mod_dir.html#directoryindex

ninja edit: Ich habe nicht die zahlreichen Kommentare gesehen, die dies bereits ausführlich beschreiben

In einer virtuellen Host-Konfiguration muss kein Verzeichnisindex angegeben werden. Das wird schon in der Haupt-Apache-Konfiguration behandelt. JakeGould vor 8 Jahren 0
0
SJ H

Das hat die Lösung dank JakeGould gefunden . Vielen Dank, Sie haben meinen Tag gerettet! Es war ziemlich einfach, es war die Erlaubnisfrage.

Wie vorgeschlagen, überprüfte ich /var/log/apache2/qna_error_log, und es sagteIOError: [Errno 13] Permission denied: '/var/www/qna/log/askbot.log'

Also habe ich die Erlaubnis /var/www/qna/logvon mit geändertsudo chmod -R 777 /var/www/ (ich glaube nicht, dass 777 eine gute Lösung ist, aber ich habe es getan).

Nun habe ich folgende Fehlermeldung erhalten:

ExtractionError: Can't extract file(s) to egg cache  The following error occurred while trying to extract file(s) to the Python egg cache:  [Errno 13] Permission denied: '/var/www/.python-eggs'  The Python egg cache directory is currently set to:  /var/www/.python-eggs` 

Wie in vorgeschlagen hier habe ich ein neues Verzeichnis /usr/local/pylonsund bearbeiten django.wsgiin /var/www/qnawie folgt:

import os os.environ['PYTHON_EGG_CACHE'] = '/usr/local/pylons/python-eggs' 

Und es ist behoben! Jetzt sehe ich meine Website, nicht den "Index der" Seite.

Im Allgemeinen handelt es sich bei dieser Site nicht um ein Message Board oder Chatroom. Wenn Ihnen meine oder auch andere Antworten geholfen haben, müssen Sie sie entwurzeln, und wenn es die Antwort war, die die gelöste Lösung für Ihr Problem gelöst hat, müssen Sie sie als solche abhaken. Die zweite Hälfte Ihrer Antwort gibt zwar mehr Einblick in das, was Sie getan haben, um diese Frage letztendlich zu lösen, also sollte diese Antwort bestehen bleiben, aber alle anderen, die Ihnen geholfen haben - nicht nur ich -, sollten immer dafür belohnt werden, dass Sie beim Lösen der Dinge mithelfen Stimmen erhöhen und Antworten abhaken. JakeGould vor 8 Jahren 0
@ JakeGould Vielen Dank für Ihre Kommentare. Ich bin neu auf dieser Site, daher bin ich nicht mit den Regeln vertraut. Ich habe bereits versucht, Ihre Antwort und andere zu bestätigen (was ich sehr schätze), aber mein Mangel an Reputationspunkten konnte Ihre Antwort nicht bestätigen. Wie auch immer, ich danke Ihnen noch einmal so sehr für Ihre freundliche Hilfe und es war absolut hilfreich. SJ H vor 8 Jahren 0