problem with nginx + uwsgi in vhost mode, running django app

99封情书 提交于 2019-12-23 19:15:17

问题


I have a couple of django apps on my servers, running perfectly on their own socket file, but i plan to introduce some more django apps, so i prefer to run uwsgi in vhost mode, but it seems to have some problem with the import/paths

Here is the nginx virtualhost configuracion

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;

and in the "mysite.py" file i have this:

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

i'm running uwsgi with this command:

uwsgi -s 127.0.0.1:1088 -M --no-site --vhost 

and HERE is the error

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

as you can imagine, django is correctly installed on the system

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

thanks!

UPDATE 18/8 finally i've found the solution.. i've changed the mysite.py file and added the paths to django and the python libs

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

回答1:


UWSGI_PYHOME will set a virtualenv, so if you are not under a virtualenv you have to remove it. You may be interested in this config: http://projects.unbit.it/uwsgi/wiki/TipsAndTricks




回答2:


I don't think it's right to added things in wsgi file. It's actually hard coded if doing that.

What happened if you deploy code to different systems or even different versions of Python? maybe python2.6, python2.7 .etc, so have to append correct sys.path upon deployed server.



来源:https://stackoverflow.com/questions/7081462/problem-with-nginx-uwsgi-in-vhost-mode-running-django-app

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!