2017-04-15 1 views
1

i installer django (1,11) et Python 3.5 et virtualenv dans mon CentOS serveur de production (CentOS 6.5)Django sur Apache 2.2.15 sur CentOS 6.5

quand je commence django localement runserver python manage.py je peux utiliser le django, mais je ne peux pas servir mon django sur apache avec mod_wsgi i Test de configuration très différence sur /conf.s/django.conf mais je face à cette erreur:

mod_wsgi (pid=5713): Target WSGI script '/var/www/path/to/site/myapp/wsgi.py' cannot be loaded as Python module. 

ceci est mon django.conf dans /etc/httpd/conf.d/django.conf

<VirtualHost *:80> 
WSGIProcessGroup myapp 
WSGIDaemonProcess myapp display-name=%{GROUP} 
ServerName test.com 
ServerAlias www.test.com 
ServerAdmin [email protected] 
DocumentRoot /path/to/root 
WSGIScriptAlias//path/to/root/myapp/wsgi.py 
Alias /static /path/to/root/myapp/static 
ErrorLog /path/to/error.log 
CustomLog /path/to/access.log combined </VirtualHost> 

comment puis-je résoudre ce problème?

+0

Comment avez-vous installé mod-wsgi? Il doit être compilé avec une certaine version de Python. Si vous yum installé, je suppose que vous avez une version très démodée de Python 2 de yum. – FlipperPA

+0

Oui, le wsgi a été installé avec yum, comment puis-je compiler wsgi pour python 3.5? – Arash

Répondre

0

Le problème semble être l'exécution d'une version yum installée de mod_wsgi, qui est très obsolète et compilée avec Python 2.7. La manière la plus simple d'installer Python 3.5 et mod_wsgi consiste à utiliser le référentiel IUS, qui fournit des packages à jour pour RedHat et CentOS. Je vais supposer que vous exécutez 64 bits.

Tout d'abord, désinstallez mod_wsgi installé à partir EPEL:

sudo yum -y remove mod_wsgi 

Ceci installera le référentiel IUS:

sudo yum -y install https://centos6.iuscommunity.org/ius-release.rpm 

Une fois installé, vous pouvez installer Python 3.5 et mod_wsgi:

sudo yum -y install python35u 
sudo yum -y install python35u-pip 
sudo yum -y install python35u-mod_wsgi 

Cela va installer mod_wsgi à /usr/lib64/httpd/modules/mod_wsgi_python3.5.so, qui est l'endroit où vous devrez charger de votre configuration Apache:

LoadModule wsgi_module /usr/lib64/httpd/modules/mod_wsgi_python3.5.so 

Vous devrez également vous assurer que vos virtualenv des points à Python 3.5 lors de sa création:

virtualenv -p /usr/bin/python3.5 myapp 

Ce que tout cela fait, c'est que la même version Python (3.5) exécute votre code Django via votre virtualenv et votre serveur web (mod_wsgi) sans affecter la version Python du système (version 2.6.6 sur CentOS 6). Bonne chance!