J'ai quelques applications django sur mes serveurs, qui fonctionnent parfaitement sur leur propre fichier socket, mais j'ai l'intention d'introduire d'autres applications django, donc je préfère exécuter uwsgi en mode vhost, mais il semble y avoir un problème avec l'importation/les chemins d'accès.
Voici la configuration du virtualhost de nginx
location / {
include uwsgi_params;
uwsgi_param UWSGI_PYHOME /home/httpd/django.udm.local/public_html;
uwsgi_param UWSGI_PYHOME /home/httpd/django.udm.local/public_html;
uwsgi_param UWSGI_PYTHONPATH /home/httpd/django.udm.local/public_html;
uwsgi_param UWSGI_CHDIR /home/httpd/django.udm.local/public_html
uwsgi_param UWSGI_ENV DJANGO_SETTINGS_MODULE=settings;
uwsgi_param UWSGI_MODULE mysite;
uwsgi_pass 127.0.0.1:1088;
et dans le fichier "mysite.py" j'ai ceci :
import os, sys
sys.path.append(os.path.dirname(__file__))
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
J'exécute uwsgi avec cette commande :
uwsgi -s 127.0.0.1:1088 -M --no-site --vhost
et voici l'erreur
*** Operational MODE: single process ***
*** no app loaded. going in full dynamic mode ***
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 1838)
spawned uWSGI worker 1 (pid: 1839, cores: 1)
Traceback (most recent call last):
File "./mysite.py", line 7, in <module>
import django.core.handlers.wsgi
ImportError: No module named django.core.handlers.wsgi
unable to load app SCRIPT_NAME=django.udm.local|
comme vous pouvez l'imaginer, django est correctement installé sur le système
# python
Python 2.6.6 (r266:84292, Dec 27 2010, 00:02:40)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django.core.handlers.wsgi
>>>
Merci !
UPDATE 18/8 enfin j'ai trouvé la solution j'ai changé le fichier mysite.py et ajouté les chemins vers django et les librairies python
import os, sys
sys.path.append(os.path.dirname(__file__))
sys.path.append('/usr/lib/pymodules/python2.6')
sys.path.append('/usr/lib/python2.6/dist-packages')
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()