2017-09-21 9 views
0

J'essaye d'installer un site Web Django à travers Apache. Pour cela, j'utilise une machine virtuelle exécutant CentOS7 et utilise Apache 2.4.6.L'application Django ne répond pas sur Apache avec wsgi_mod

J'ai créé un environnement virtuel avec Python (3.6.2), installé Django (1.10.05) et mod-wsgi (4.5.18). J'ai lancé un nouveau projet Django, migré la base de données, lancé le serveur du développeur sur l'adresse 0.0.0.0: 8003 et de l'extérieur de la VM je peux me connecter à <VMs IP>:8003 sans problème. Cependant, sans le serveur développeur, en essayant de relayer sur Apache, cela ne fonctionne pas. Mon navigateur me dit simplement qu'il est impossible de se connecter au site web et en effet, le journal d'accès d'Apache ne contient aucune trace de tentative de connexion. Same Apache héberge également une autre application écrite en Perl et fonctionne correctement sur son port dédié.

Bit de mon settings.py qui pourrait être instructif pour vous

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

Et mon httpd.conf ressemble à ceci:

<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> 

J'ai accès accordé (664) accès et la propriété à l'utilisateur qu'Apache utilise, donc ce n'est probablement pas ça.

Avez-vous d'autres idées sur ce que j'ai pu faire de mal?

EDIT

ports I commutées avec l'autre application, de sorte que Django travaille maintenant sur le port 80, je reçois 503 Service Unavailable erreur. J'ai alors réussi à fixer avec avec le réglage WSGISocketPrefix /var/run/wsgi dans httpd.conf et en ajoutant user=#1000 dans WSGIDaemonProcess (1000 est l'id de mon utilisateur principal). Cependant, quand je l'ai ramené au port 8003 (pour que mon autre application puisse fonctionner sur 80), il ne répond plus.

SOLUTION

J'sais si je dois supprimer ou non, mais peut-être quelqu'un là-bas qui est tout aussi analphabète dans Apache comme je suis, ce sera utile. La seule chose que j'ai oublié de faire, était d'ajouter "Listen 8003" dans httpd.conf afin qu'Apache puisse commencer à écouter le nouveau port.

+0

avez-vous été en mesure de trouver une solution à ce problème? –

Répondre

0

J'ai essayé ceci sur un de mon serveur et cela fonctionne correctement. Essayez ceci,

<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> 

Et modifier /etc/httpd/conf/httpd.conf

WSGIPythonPath /var/www/projectname 
+0

Malheureusement, non. J'ai essayé cela (en remplacement de mes propres chemins bien sûr) et plusieurs variations de celui-ci. Le résultat est toujours le même: Apache démarre correctement, mais ne réagit pas aux requêtes. –