2011-08-16 57 views
3

我在我的服務器上有幾個django應用程序,它們在自己的套接字文件上運行完美,但我打算引入一些更多的django應用程序,所以我更喜歡運行uwsgi在虛擬主機模式,但它似乎有一些問題,與進口/路徑vhost模式下nginx + uwsgi的問題,運行django應用程序

這裏是nginx的虛擬主機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; 

,並在「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 

,這裏是錯誤

*** 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的路徑和蟒蛇庫

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將設置的virtualenv ,所以如果你不在virtualenv下,你必須刪除它。你可能會對這個配置感興趣:http://projects.unbit.it/uwsgi/wiki/TipsAndTricks

+0

不,同樣的錯誤在這裏:添加/ home/httpd /到pythonpath。 回溯(最近通話最後一個): 文件「./mysite.py」,14號線在 進口django.core.handlers.wsgi 導入錯誤:沒有模塊名爲django.core.handlers.wsgi – reiven

+0

,你可以看,我已經添加了我找到的解決方案。謝謝! – reiven

0

我不認爲它是正確的在wsgi文件中添加的東西。 這實際上是硬編碼如果這樣做。

如果您將代碼部署到不同系統甚至不同版本的Python,會發生什麼情況?可能是python2.6,python2.7 .etc,因此必須在部署的服務器上追加正確的sys.path。

+0

這個問題並沒有過時,因爲這發生在django v1.3上,而現在這個django v1.3已經被宣佈了,並且新的django版本附帶了他們自己的wsgi文件,這個文件只是用於virtualenv – reiven