我正在conda虚拟环境中使用python2.7.11运行一个uwsgi/flaskpython应用程序。在
我正从CentOS 6迁移到CentOS 7,我想利用systemd作为服务运行我的应用程序。如果我手动调用应用程序的启动脚本(sh start-foo.sh
),一切(配置和代码)都可以正常工作,但当我尝试将其作为systemd服务(sudo systemctl foo start
)启动时,它会启动应用程序,但会立即失败,并出现以下错误:
WSGI app 0 (mountpoint='') ready in 8 seconds on interpreter 0x14c38d0 pid: 3504 (default app)
mountpoint already configured. skip.
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 3504)
emperor_notify_ready()/write(): Broken pipe [core/emperor.c line 2463]
VACUUM: pidfile removed.
这是我的系统单元文件:
^{pr2}$不确定是否需要,但下面是我的uwsgi皇帝和附庸的配置:
皇帝
[uwsgi]
emperor = /app/foo/conf/vassals/
daemonize = /var/log/foo/emperor.log
附庸
[uwsgi]
http-timeout = 500
chdir = /app/foo/scripts
pidfile = /app/foo/scripts/foo.pid
#socket = /app/foo/scripts/foo.soc
http = :8888
wsgi-file = /app/foo/scripts/foo.py
master = 1
processes = %(%k * 2)
threads = 1
module = foo
callable = app
vacuum = True
daemonize = /var/log/foo/uwsgi.log
我试图用谷歌搜索这个问题,但似乎找不到任何相关的东西。我怀疑这与在虚拟环境中运行uwsgi并使用systemctl启动它有关。我是一个系统的n00b,所以如果我在我的单位档案中做了什么错事,请告诉我。在
这不是一个阻止程序,因为我仍然可以通过手动执行脚本来启动/停止我的应用程序,但我希望能够将其作为服务运行,并在启动时使用systemd自动启动它。在
按照uwsgi文档中关于设置systemd服务的说明here解决了这个问题。在
我改变的是:
从皇帝和附庸的配置中删除{}。在
从上面的链接中获取了单元文件,并对其进行了轻微修改,以便与我的应用程序配合使用
相关问题 更多 >
编程相关推荐