Ich lerne Django und wollte testen, ob es auf einem Ubuntu-Computer gehostet werden kann, den ich habe. Ich habe mich entschieden, es mit Apache und mod_wsgi bereitzustellen. Die meisten Dinge funktionieren, aber eine Sache macht mir Rätsel. Ich kann nur von meiner externen IP-Adresse aus auf die Website zugreifen, nicht beispielsweise von 127.0.0.1 oder meiner Adresse 192.168.xx.
Meine django.conf-Datei in /etc/apache2/sites-available ist
<VirtualHost *:80>
WSGIScriptAlias / /home/username/project
ServerName my_external_ip
Alias /media/ /home/username/project/media
Alias /static/ /home/username/project/static
<Directory /home/username/project>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Wenn ich ServerName auf 127.0.0.1 setze, wird die Seite nur von dort geladen. Außerdem sollte ich hinzufügen, dass sie nicht wirklich „nicht geladen“ wird, wenn ich von anderen Standorten aus darauf zugreife, sondern nur eine Apache-Seite mit dem Titel „Index von /“ ohne Inhalt anzeigt.
Was hindert Apache in allen Fällen daran, Seiten bereitzustellen, und wie kann ich dafür sorgen, dass Seiten als 127.0.0.1 usw. bereitgestellt werden? Gibt es eine bessere Möglichkeit, es zu hosten?
Antwort1
Ihre Antwort lautet apache2ctl -S
: Die „Standard“-Site der Installation hat Vorrang, wenn der Host
vom HTTP-Client gesendete Header nicht mit einem ServerName
oder ServerAlias
in einem der anderen <VirtualHost>
Blöcke auf dem Port übereinstimmt.
Wenn Ihre Django-Site alle Anfragen an den Server verarbeiten soll, deaktivieren Sie die Standardeinstellung:
a2dissite default
...dann starten Sie Apache neu.
Andernfalls, wenn Sie die Übernahme durch Django etwas differenzierter gestalten möchten, können Sie ServerAlias
der Konfiguration davon Folgendes hinzufügen <VirtualHost>
:
ServerAlias internal.ip external.ip external.dns.name