2017-09-21 2 views
0

Ich versuche, eine Django-Website über Apache einzurichten. Dazu benutze ich eine virtuelle Maschine mit CentOS7 und Apache 2.4.6.Django App reagiert nicht auf Apache mit wsgi_mod

Ich habe eine virtuelle Umgebung mit Python (3.6.2), installiert Django (1.10.05) und mod-wsgi (4.5.18) erstellt. Gestartet neues Django-Projekt, migrierte Datenbank, gestarteten Entwickler-Server auf Adresse 0.0.0.0:8003 und von außerhalb der VM kann ich ohne Probleme auf <VMs IP>:8003 verbinden. Ohne den Entwicklerserver, der versucht, auf Apache zu übertragen, funktioniert es nicht. Mein Browser sagt nur, dass es nicht möglich ist, eine Verbindung zur Website herzustellen. Tatsächlich enthält das Zugriffsprotokoll von Apache keinerlei Verbindungsversuche. Derselbe Apache hostet auch eine andere Anwendung, die in Perl geschrieben ist und über seinen dedizierten Port ordnungsgemäß funktioniert.

Bit meiner settings.py, die für Sie

ALLOWED_HOSTS = ['localhost', '127.0.0.1', '[::1]', '<VMs address>'] 
STATIC_URL = '/static/' 
STATIC_ROOT = os.path.join(BASE_DIR, "static/") 

Und meine httpd.conf informativ sein könnte wie folgt aussieht:

<VirtualHost *:8003> 
# using port 8003, because 80 is used by another app. Both ports are open on firewall 
    Alias /static /var/www/zdm_ebok/static 
    <Directory /var/www/zdm_ebok/static> 
     Require all granted 
    </Directory> 
    <Directory /var/www/zdm_ebok/zdm_ebok> 
     <Files wsgi.py> 
      Require all granted 
     </Files> 
    </Directory> 
    WSGIDaemonProcess zdm_ebok python-path=/var/www/zdm_ebok:/var/www/zdm_ebok/venv/lib/python3.6/site-packages 
    WSGIProcessGroup zdm_ebok 
    WSGIScriptAlias//var/www/zdm_ebok/zdm_ebok/wsgi.py 
</VirtualHost> 

Ich habe gewährt Zugang (664) Zugang und Besitz Benutzer, die Apache verwendet, so ist es wahrscheinlich nicht.

Haben Sie noch andere Ideen, was hätte ich falsch machen können?

EDIT

ich Switched Ports mit der anderen App, so dass Django funktioniert jetzt auch auf Port 80, erhalte ich 503 Service Unavailable Fehler. Ich habe es dann geschafft, mit der Einstellung WSGISocketPrefix /var/run/wsgi in httpd.conf und Hinzufügen von user=#1000 in WSGIDaemonProcess (1000 ist ID von meinem Hauptbenutzer) zu beheben. Aber wenn ich es zurück nach Port 8003 brachte (damit meine andere App auf 80 funktioniert), antwortet es nicht mehr.

SOLUTION

weiß nicht, ob ich diese oder nicht entfernen soll, aber vielleicht da draußen für jemanden, der gleichermaßen Analphabeten in Apache ist, wie ich bin, wird dies von Nutzen sein. Die einzige Sache, die ich vergessen habe, war hinzufügen "Listen 8003" in httpd.conf, so dass Apache auf den neuen Port zu hören begann.

+0

konnten Sie Lösung für dieses Problem finden? –

Antwort

0

Ich habe dies auf einem meiner Server versucht und es funktioniert ordnungsgemäß. Versuchen Sie dieses,

<VirtualHost *:80> 

    ServerName localhost.localdomain 
    ServerAlias ipaddress 

    DocumentRoot /var/www/projectname 
    WSGIScriptAlias//var/www/projectname/projectname/wsgi.py 

    Alias /static/ "/var/www/projectname/projectname/static/" 
    <Directory "/var/www/projectname/projectname/static"> 
     Require all granted 
    </Directory> 

    ErrorLog /var/www/logs/error.log 
    CustomLog /var/www/logs/access.log combined 

</VirtualHost> 

und bearbeiten /etc/httpd/conf/httpd.conf

WSGIPythonPath /var/www/projectname 
+0

Leider nicht. Ich habe das versucht (natürlich mit meinen eigenen Wegen) und verschiedene Variationen davon. Ergebnis ist immer das gleiche: Apache startet richtig, reagiert aber nicht auf Anfragen. –