nginx + uwsgi在vhost模式下运行django应用的问题



我的服务器上有几个django应用程序,在他们自己的套接字文件上完美地运行,但我计划引入一些更多的django应用程序,所以我更喜欢在vhost模式下运行uwsgi,但似乎有一些问题与import/paths

下面是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;

,在"mysite.py"文件中我有如下内容:

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

我正在用这个命令运行uwsgi:

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

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

你可以想象,django已经正确安装在系统上了

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

谢谢!

UPDATE 18/8最后我找到了解决方案。我已经更改了mysite.py文件,并添加了django和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()

UWSGI_PYHOME将设置一个虚拟环境,因此如果您不在虚拟环境下,则必须删除它。您可能对这个配置感兴趣:http://projects.unbit.it/uwsgi/wiki/TipsAndTricks

我不认为在wsgi文件中添加东西是正确的。这是硬编码的

如果将代码部署到不同的系统甚至不同版本的Python上会发生什么?可能是python2.6, python2.7 .etc,所以必须添加正确的sys。

最新更新