2010-08-17 7 views
2

Je voudrais exécuter un projet Django sur un serveur en utilisant virtualenv dans Apache en utilisant mod_python. Maintenant, je sais que le module apache recommandé est mod_wsgi, mais je ne veux pas l'installer pour le moment. L'installation python par défaut sur le serveur est python2.4, qui est utilisée par un autre site Web sur le serveur. Parce que mon projet a été construit sur python2.6, je l'ai installé à côté de python2.4 dans/usr/local/en utilisant 'make altinstall'. J'ai utilisé ce site Web pour installer mon fichier de configuration apache: http://mydjangoblog.com/2009/03/30/django-mod_python-and-virtualenv/.Exécution de Django dans Virtualenv avec Apache avec Mod_Python et plusieurs installations Python

Ma question est: existe-t-il un moyen de spécifier que (mod_python probablement) devrait utiliser python2.6 au lieu de python2.4? S'il n'y a aucun moyen d'exécuter 2 versions python dans un apache en utilisant mod_python, cela serait-il possible en utilisant mod_wsgi? Ou serait-il possible dans une installation apache avec l'autre site en utilisant mod_python et moi en utilisant mod_wsgi?

Répondre

4

Non, vous ne pouvez pas faire cela. mod_python est pré-compilé avec une version particulière de Python. Si vous vouliez changer cette version, vous devriez recompiler mod_python - et si vous le faites, vous pouvez aussi bien installer mod_wsgi.

est possible avec mod_wsgi, car cela n'incorpore pas un interpréteur dans Apache lui-même, donc il ne se soucie pas de la version que vous utilisez. Il est assez facile d'obtenir virtualenv travailler avec mod_wsgi - il vous suffit d'activer le virtualenv dans votre script .wsgi:

activate_this = os.path.join(path_to_my_site, "bin/activate_this.py") 
execfile(activate_this, dict(__file__=activate_this)) 
+1

+1 pour mod_wsgi. Consultez aussi http://code.google.com/p/modwsgi/wiki/VirtualEnvironments Je l'ai trouvé assez détaillé et utile. –

+2

Désolé, ce que vous conseillez est erroné sur mod_wsgi. Dans mod_wsgi, il intègre toujours un interpréteur dans Apache et il est toujours lié à une version spécifique de Python. Vous ne pouvez pas simplement utiliser les environnements virtuels pour que mod_wsgi fasse référence à une version différente de Python. FWIW, vous ne pouvez pas non plus utiliser mod_python et mod_wsgi en même temps où chacun utilise une version différente de Python. –

+0

@ Graham Dumpleton: Merci pour votre réponse. Si ce que vous dites est le cas, cela signifie-t-il que je vais devoir exécuter 2 versions d'Apache dans lesquelles chacune peut utiliser une version différente de Python? – Heyl1

1

Vous pouvez également exécuter le projet django avec un runwsgiserver sur un port différent et ensuite utiliser apache avec un revers Procuration.

comme ceci:

source your_env/bin/activate 
python manage.py runwsgiserver host=localhost port=8123 

et le proxy inverse sur apache:

<VirtualHost *:80> 
    ServerName sitename.com 
    ServerAlias www.sitename.com 

ProxyRequests Off 

<Proxy *> 
Order deny,allow 
Allow from all 
</Proxy> 

ProxyPass/http://localhost:8123/ 
ProxyPassReverse/http://localhost:8123/ 

</VirtualHost> 
Questions connexes