为什么新贵不启动uWSGI?

我试图在我的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修复了这一切(我的日志文件)。 这个问题不断被看作是别的东西,但最终只是这一切。 可能不是你的问题的真正答案,但希望它可以帮助其他人在那里痛苦,因为我一直。