Hi Matt, Thanks for your answer. I solved the problem. The reason is my uwsgi is installed upon system python2.6, I haven't installed for the virtual env python2.7. So, to fix this: 1. activate the virtual env 2. pip install uwsgi 3. run uwsgi from the virtual env
Thanks. Wesley 在 2014年8月28日星期四UTC+8上午1时31分57秒,Matt Gushee写道: > > Hi, Wesley-- > > I can't claim to be a uWSGI expert (can anyone? ;-) ), but I do have a > mezzanine site running with uWSGI & nginx. My setup is quite different > from yours (e.g. my OS is FreeBSD, and though I have only one > Django-based site, I'm also hosting a couple of other sites that are > not Python-based at all), so I don't know that my configuration will > help you. > > But I do have a couple of questions for you. > > 1) Have you read this tutorial? > http://uwsgi-docs.readthedocs.org/en/latest/tutorials/Django_and_nginx.html > > 2) Where is your uWSGI installed? Is it installed in your virtualenv, > or in your system-wide python library, or is a standalone build? The > above tutorial recommends installing it in your virtualenv. I am using > a system-wide standalone version, and it works fine; the main reason I > do that is because of the non-python sites. It may also be relevant > that unlike most Linux distros, FreeBSD does not assume that you have > Python installed at all, let alone what version of Python you have or > where it is located. Anyway, I have a wild guess about this: if you > are using a system-wide version of uWSGI integrated into the Python > library, perhaps it thinks your Python executable is 2.6. > > Beyond that ... I'm hesitant to say that your config looks wrong, but > I'm unfamiliar with your approach - especially running multiple apps > with one uWSGI config, using the Nginx config to distinguish between > them. Where did you learn to do that? I run uWSGI in emperor mode, > with a separate config file for each application. > > It does appear to me that some of the variables being passed from > Nginx are redundant. Although none of them seem obviously relevant to > your issue, I think eliminating duplication would make it easier to > reason about the problem. E.g. define PYHOME once in the uWSGI config > instead of twice in the Nginx config. Also, a minor point, but are > you sure there is a variable called UWSGI_SCRIPT? I can't find it > listed in the uWSGI documentation (which may or may not mean it isn't > there ;-) ). > > Hope that helps a bit. > > -- > Matt Gushee > > On Wed, Aug 27, 2014 at 5:11 AM, Wesley <[email protected] <javascript:>> > wrote: > > > > Hi guys, > > I hit a problem when using nginx+uwsgi to serve two mezzanine sites > upon > > one VPS. > > I use virtualenvwrapper to create a env with python2.7.6, note that > > system(centos6.5) has default python2.6. > > > > Here is my uwsgi.xml: > > <uwsgi> > > <socket>127.0.0.1:9000</socket> > > <listen>100</listen> > > <master>true</master> > > <pidfile>/usr/local/nginx/uwsgi.pid</pidfile> > > <processes>8</processes> > > <pythonpath>/home/Portal</pythonpath> > > <pythonpath>/home</pythonpath> > > <module>wsgi</module> > > <profiler>true</profiler> > > <memory-report>true</memory-report> > > <enable-threads>true</enable-threads> > > <logdate>true</logdate> > > <limit-as>6048</limit-as> > > <daemonize>/home/django.log</daemonize> > > </uwsgi> > > > > here is django uwsgi files included in nginx conf: > > 1. django_uwsgi.xml: > > server { > > listen 80; > > server_name happydiaosi.com; > > location / { > > uwsgi_pass 127.0.0.1:9000; > > include uwsgi_params; > > uwsgi_param UWSGI_CHDIR /home/Portal; > > uwsgi_param UWSGI_SCRIPT wsgi; > > uwsgi_param UWSGI_PYHOME /home/pyvirenvs/py276; > > #uwsgi_param UWSGI_PYHOME /home/pyvirenvs/easonportal; > > #uwsgi_param UWSGI_PYHOME /usr/lib64/python2.6; > > access_log off; > > } > > location /static/ { > > root /home/Portal/; > > access_log off; > > log_not_found off; > > autoindex on; > > } > > } > > > > 2. django_uwsgi2.xml > > # Django project > > server { > > listen 80; > > server_name eason.happydiaosi.com; > > location / { > > uwsgi_pass 127.0.0.1:9000; > > include uwsgi_params; > > uwsgi_param UWSGI_CHDIR /home/EasonPortal; > > uwsgi_param UWSGI_SCRIPT wsgi; > > uwsgi_param UWSGI_PYHOME /home/pyvirenvs/py276; > > #uwsgi_param UWSGI_PYHOME /home/pyvirenvs/easonportal; > > #uwsgi_param UWSGI_PYHOME /usr/lib64/python2.6; > > access_log off; > > } > > location /static/ { > > root /home/EasonPortal/; > > access_log off; > > log_not_found off; > > } > > } > > > > So, after I start uwsgi and nginx, when access from browser, it raises: > > Traceback (most recent call last): > > File "/home/EasonPortal/wsgi.py", line 16, in <module> > > from django.core.wsgi import get_wsgi_application > > ImportError: No module named django.core.wsgi > > > > actually, within the py276, I can import . > > So,here is sys.path of py276: > > (py276)[root@show python2.7]# python > > Python 2.7.6 (default, Aug 27 2014, 02:35:36) > > [GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2 > > Type "help", "copyright", "credits" or "license" for more information. > >>>> import sys > > [31326 refs] > >>>> sys.path > > ['', '/home/pyvirenvs/py276/lib/python27.zip', > > '/home/pyvirenvs/py276/lib/python2.7', > > '/home/pyvirenvs/py276/lib/python2.7/plat-linux2', > > '/home/pyvirenvs/py276/lib/python2.7/lib-tk', > > '/home/pyvirenvs/py276/lib/python2.7/lib-old', > > '/home/pyvirenvs/py276/lib/python2.7/lib-dynload', > > '/usr/local/lib/python2.7', '/usr/local/lib/python2.7/plat-linux2', > > '/usr/local/lib/python2.7/lib-tk', > > '/home/pyvirenvs/py276/lib/python2.7/site-packages'] > > > > And, here is output from wsgi.py(I add code to print sys.path in > wsgi.py): > > > ******************************************************************************** > > > > ['/home/pyvirenvs/py276/lib/python2.6', '/home/EasonPortal', > > '/usr/lib64/python26.zip', '/usr/lib64/python2.6', > > '/usr/lib64/python2.6/plat-linux2', '/usr/lib64/python2.6/lib-tk', > > '/usr/lib64/python2.6/lib-old', '/usr/lib64/python2.6/lib-dynload', > > u'/home'] > > > ******************************************************************************** > > > > > > So, why the path for wsgi looks like above? why everytime pointed to > > python26 which doesn't exist,say,/home/pyvirenvs/py276/lib/python2.6, > > it should be python2.7 under /home/pyvirenvs/py276/lib, not python2.6... > > > > What wrong here? Anything wrong with my uwsgi.xml or django_uwsgi.conf > > files? > > > > Thanks. > > Wesley > > > > -- > > You received this message because you are subscribed to the Google > Groups > > "Mezzanine Users" group. > > To unsubscribe from this group and stop receiving emails from it, send > an > > email to [email protected] <javascript:>. > > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Mezzanine Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
