我试图在我的VPS上build立一个django项目。 我试图让一个天王皇帝跑,从而产生封臣。 我已经build立了所有我的configuration文件build议由许多网站,包括uWSGI文档。 然而,当我运行文件命令
paul @例子:/ $ sudo service uwsgi start
我得到以下内容:
开始:未知作业:uwsgi
我想这是因为Upstart无法识别/ etc / init /中的uwsgi.conf文件http://uwsgi-docs.readthedocs.org/en/latest/Upstart.html 。 但经过审查,我找不到任何问题。
paul @例子:/ etc / init $ sudo vim uwsgi.conf
#皇帝uWSGI脚本 预启动脚本 记者“uWSGI皇帝预启动” 结束脚本 后启动脚本 记者“uWSGI皇帝后启动” 结束脚本 描述“uWSGI Emperor” 在运行级别开始[2345] 在运行级别停止[!2345] 重生 env LOGTO = /var/log/uwsgi.log exec / usr / local / bin / uwsgi --master --die-on-term --emperor / etc / uwsgi / vassals --logto $ LOGTO
我还检查了我的/ etc / uwsgi / vassals文件,以确保它们处于正常工作状态。 我现在唯一的文件是一个mysite.ini文件:
paul @例子:/ etc / uwsgi / vassals $ sudo vim mysite.ini
[uwsgi] base = / home / paul / djprojs / mysite / chdir =%(base) master = true 线程= 20 socket = /tmp/sockets/%n.sock home = /home/paul/.virtualenvs/dj env = DJANGO_SETTINGS_MODULE =%n.settings module = django.core.handlers.wsgi:WSGIHandler()
但是这对我来说也是好的。
最后,为了testinguWSGI是否可以从命令行运行,我在没有Upstart的情况下启动了它。 我跑了
paul @exmaple / $ uwsgi --emperor / etc / uwsgi / vassals
它的工作原理是:
***在[Sat Jul 27 19:23:43 2013]上启动uWSGI 1.9.13(32bit)*** 2013年7月21日03:35:50编译版本:4.6.3 os:Linux-3.2.0-24-virtual#37-Ubuntu SMP Wed Apr 25 12:51:49 UTC 2012 nodename:example.me 机器:i686 时钟源:unix 检测到的CPU核心数量:1 当前工作目录:/ 检测到二进制文件path:/ usr / local / bin / uwsgi ***警告:如果没有其主进程pipe理器,您正在运行uWSGI *** 您的进程数量限制是3922 你的内存页面大小是4096字节 检测到最大文件描述符编号:1024 ***开始uWSGI皇帝*** *** has_emperor模式检测(fd:6)*** [uWSGI]从mysite.ini获取INIconfiguration ***在[Sat Jul 27 19:23:43 2013]上启动uWSGI 1.9.13(32bit)*** 2013年7月21日03:35:50编译版本:4.6.3 os:Linux-3.2.0-24-virtual#37-Ubuntu SMP Wed Apr 25 12:51:49 UTC 2012 nodename:example.me 机器:i686 时钟源:unix 检测到的CPU核心数量:1 当前工作目录:/ etc / uwsgi / vassals 检测到二进制文件path:/ usr / local / bin / uwsgi 您的进程数量限制是3922 你的内存页面大小是4096字节 检测到最大文件描述符编号:1024 锁引擎:pthread强大的互斥锁 uwsgi socket 0绑定到UNIX地址/tmp/sockets/mysite.sock fd 3 Python版本:2.7.3(默认,2013年4月10日,06:03:17)[GCC 4.6.3] 将PythonHome设置为/home/paul/.virtualenvs/dj Python的主要解释器在0x9bdb000初始化 python线程支持启用 您的服务器套接字监听积压被限制为100个连接 你对工人优美的操作的怜悯是60秒 为20个内核映射410112字节(400 KB) ***操作模式:螺纹*** 在解释器0x9bdb000 pid:18213(默认应用程序)上,WSGI应用程序0(安装点='')准备就绪0秒 *** uWSGI正在以多种解释器模式运行*** 衍生uWSGI主进程(pid:18213) 产生的uWSGI工人1(pid:18214,核心:20)
然后我没有bash提示。 uWSGI cli显示所有的服务器请求,不返回让我input另一个命令。 我真的觉得有必要有一个更好的方式来做到这一点(也就是使用'sudo服务uwsgi启动/重新启动'),但我不知道如何。 我已经看了这个post,但我不确定不同的运行级别将解决手头的问题。
想办法。 不知道我知道如何。 我认为这是uwsgi.conf文件的LOGTO部分,使其无法工作。 这是我现在的uwsgi皇帝档案:
描述“uWSGI Emperor” 在运行级别开始[2345] 在运行级别停止[!2345] 重生 exec uwsgi --emperor / etc / uwsgi / vassals / --master --uid www-data --gid www-data --logto /var/log/uwsgi/emperor.log
这是我的附庸,即。 mysite.ini
[uwsgi] base = / home / paul / djprojs / mysite chdir =%(base) module = mysite.wsgi:application pidfile = /tmp/uwsgi_vassal_%n.pid socket = /tmp/sockets/%n.sock 真空=真 wsgi-file = /home/paul/djprojs/mysite/mysite/wsgi.py home = /home/paul/.virtualenvs/dj
还在努力如何清理它,但它像一个漂亮的工作。
这个工作是无效的 – 只要运行“ init-checkconf job.conf
”就会告诉你问题是什么:
ERROR: File /tmp/job.conf: syntax invalid: init:aa.conf:18: Unexpected token
总之,在env节中,键和值之间不能有空格。 参见init(5)节的语法。
虽然这是一个古老的问题,但我怀疑我刚刚花了几个小时,为了同样的问题,把我的头撞到了墙上。 对我来说,uWSGI试图在一个没有权限的文件夹中使用文件。对目录中的一个简单的chmod修复了这一切(我的日志文件)。 这个问题不断被看作是别的东西,但最终只是这一切。 可能不是你的问题的真正答案,但希望它可以帮助其他人在那里痛苦,因为我一直。