我试图设置我的服务器与nginx的uwsgi到Django的堆栈,但我有uwsgi部分的问题。
当我运行uwsgi并传入命令行中的所有参数时,它可以正常工作。 我的uwsgi调用如下所示:
uwsgi --socket /tmp/uwsgi.sock --chdir ~/web/test.com --wsgi-file ~/web/test.com/store/wsgi.py --virtualenv ~/web/test.com/testenv --chmod-socket=666 --enable-threads
然后我将这些参数复制到一个如下所示的ini文件中:
# django.ini file [uwsgi] master = true socket = /tmp/uwsgi.sock chmod-socket = 666 chdir = /home/ubuntu/web/test.com wsgi_file = /home/ubuntu/web/test.com/store/wsgi.py virtualenv = /home/ubuntu/web/test.com/causumptionenv vacuum = true enable-threads = true
但是,当我运行与django.ini文件uwsgi,我得到这个输出。
[uWSGI] getting INI configuration from django.ini *** Starting uWSGI 1.9.11 (64bit) on [Fri May 31 14:52:44 2013] *** compiled with version: 4.6.3 on 30 May 2013 15:40:11 os: Linux-3.2.0-40-virtual #64-Ubuntu SMP Mon Mar 25 21:42:18 UTC 2013 nodename: ip-10-245-64-211 machine: x86_64 clock source: unix detected number of CPU cores: 1 current working directory: /home/ubuntu/web/test.com detected binary path: /usr/local/bin/uwsgi your processes number limit is 4594 your memory page size is 4096 bytes detected max file descriptor number: 1024 lock engine: pthread robust mutexes uwsgi socket 0 bound to UNIX address /tmp/uwsgi.sock fd 3 Python version: 2.7.3 (default, Aug 1 2012, 05:25:23) [GCC 4.6.3] Set PythonHome to /home/ubuntu/web/test.com/testenv Python main interpreter initialized at 0xcb4dd0 python threads support enabled your server socket listen backlog is limited to 100 connections your mercy for graceful operations on workers is 60 seconds mapped 145440 bytes (142 KB) for 1 cores *** Operational MODE: single process *** *** no app loaded. going in full dynamic mode *** *** uWSGI is running in multiple interpreter mode *** spawned uWSGI master process (pid: 15976) spawned uWSGI worker 1 (pid: 15977, cores: 1) --- no python application found, check your startup logs for errors ---
最值得注意的是“ 没有应用程序加载,进入完全dynamic模式 , 没有findpython应用程序,请检查您的启动日志是否有错误
所以我的问题是,在命令行传递参数和通过ini文件传递它们之间的区别是什么?
它的wsgi文件不是wsgi_file,命令行选项和文件选项总是一样的
只是为了增加对uwsgi&django的整体困惑,这里是一个适合我的ini文件。
它使用http和http-socket但不是套接字。
它被devise为运行多个设置文件在一个目录设置a'la两个Django的多个部署文件勺(这就是为什么我testing)
所以— / velocity是manage.py所在的“home”项目目录。 /velocity/velocity/settings/dev_settings_chris_l.py是实际的设置文件
这一切都需要完成,因为你需要能够从django代码之外引导正确的设置文件,因此不能在wsgi.py中设置DJANGO_SETTINGS_MODULE行或者manage.py(使用django-admin)
有很多关于这类事情的讨论,报告了各种错误消息。 希望“不是完全相关的问题可以帮助某人。
Django 1.8
[uwsgi] http-socket = 127.0.0.1:8004 buffer-size = 32768 processes = 4 threads = 2 pythonpath = .. env = DJANGO_SETTINGS_MODULE=velocity.settings.dev_chris_l module=velocity.wsgi:application home = /home/chris/.virtualenvs/velocity plugin = python,http show-config stats = 127.0.0.1:9191 chdir = /home/chris/development/webfuels/velocity
aptitude install uwsgi-plugin-python
然后重启uwsgi,你会看到正确的页面。