启动 uWSGI 服务静默失败
Starting uWSGI service fails silently
我遇到了一个让我抓狂的问题。我正在尝试创建一个 Ubuntu 15.04 Upstart 作业,它将启动 uWSGI 服务器(uWSGI 版本 2.0.7-debian)运行 Django 应用程序。
我已按如下方式配置服务并尝试通过发出命令 $ sudo service uwsgi start
来启动作业。日志文件中没有输出,没有创建套接字文件,也没有错误。
# file: /etc/init/uwsgi.conf
description "uWSGI server"
start on runlevel [2345]
stop on runlevel [!2345]
exec /usr/bin/uwsgi --ini /srv/configs/uwsgi.ini
service uwsgi status
说
● uwsgi.service - LSB: Start/stop uWSGI server instance(s)
Loaded: loaded (/etc/init.d/uwsgi)
Active: active (exited) since Tue 2015-05-05 09:40:08 EEST; 1s ago
Docs: man:systemd-sysv-generator(8)
Process: 21405 ExecStop=/etc/init.d/uwsgi stop (code=exited, status=0/SUCCESS)
Process: 21460 ExecStart=/etc/init.d/uwsgi start (code=exited, status=0/SUCCESS)
May 05 09:40:08 web-2 systemd[1]: Starting LSB: Start/stop uWSGI server instance(s)...
May 05 09:40:08 web-2 uwsgi[21460]: * Starting app server(s) uwsgi
May 05 09:40:08 web-2 uwsgi[21460]: ...done.
May 05 09:40:08 web-2 systemd[1]: Started LSB: Start/stop uWSGI server instance(s).
uWSGI 应用配置为
[uwsgi]
uid = www-data
gid = www-data
socket = /srv/sockets/uwsgi.sock
chmod-socket = 666
master = true
processes = 4
enable-threads = true
plugins = python
chdir = /srv/sites/current
module = wsgi:application
virtualenv = /srv/environments/current
logto = /srv/logs/uwsgi.log
logfile-chown = true
touch-reload = /srv/sites/current/wsgi.py
服务启动正常,如果直接启动服务,一切正常,例如通过发出命令:
sudo -u www-data /usr/bin/uwsgi --ini /srv/configs/uwsgi.ini
对于套接字目录和日志文件目录,我设置了最宽松的权限。
所以,我很茫然。接下来做什么?
感谢 nmgeeks 的评论,我开始寻找其他配置 uWSGI 的地方。
在尝试将我们自己的应用程序相关的所有内容移动到 /srv
下时,我删除了 /run/uwsgi
目录,其中 uWSGI 正在尝试创建 PID 文件。
您可以在 /usr/share/uwsgi/conf/default.ini
找到参考资料。
可惜uWSGI在这种情况下没有产生任何错误,这让我沮丧了一天。
我只想补充一些细节。在我的例子中,我没有删除任何东西,但是,由于某些原因,systemd
无法创建 /run/uwsgi
目录。所以,我做到了echo "/run/uwsgi 0755 www-data www-data -" > /etc/tmpfiles.d/uwsgi.conf
。之后我重新启动了我的虚拟机(我没有找到不重新启动就应用此更改的方法)并且 uwsgi 开始工作了!
是的,uWSGI 在这种情况下没有产生任何错误真是太糟糕了。
我遇到了一个让我抓狂的问题。我正在尝试创建一个 Ubuntu 15.04 Upstart 作业,它将启动 uWSGI 服务器(uWSGI 版本 2.0.7-debian)运行 Django 应用程序。
我已按如下方式配置服务并尝试通过发出命令 $ sudo service uwsgi start
来启动作业。日志文件中没有输出,没有创建套接字文件,也没有错误。
# file: /etc/init/uwsgi.conf
description "uWSGI server"
start on runlevel [2345]
stop on runlevel [!2345]
exec /usr/bin/uwsgi --ini /srv/configs/uwsgi.ini
service uwsgi status
说
● uwsgi.service - LSB: Start/stop uWSGI server instance(s)
Loaded: loaded (/etc/init.d/uwsgi)
Active: active (exited) since Tue 2015-05-05 09:40:08 EEST; 1s ago
Docs: man:systemd-sysv-generator(8)
Process: 21405 ExecStop=/etc/init.d/uwsgi stop (code=exited, status=0/SUCCESS)
Process: 21460 ExecStart=/etc/init.d/uwsgi start (code=exited, status=0/SUCCESS)
May 05 09:40:08 web-2 systemd[1]: Starting LSB: Start/stop uWSGI server instance(s)...
May 05 09:40:08 web-2 uwsgi[21460]: * Starting app server(s) uwsgi
May 05 09:40:08 web-2 uwsgi[21460]: ...done.
May 05 09:40:08 web-2 systemd[1]: Started LSB: Start/stop uWSGI server instance(s).
uWSGI 应用配置为
[uwsgi]
uid = www-data
gid = www-data
socket = /srv/sockets/uwsgi.sock
chmod-socket = 666
master = true
processes = 4
enable-threads = true
plugins = python
chdir = /srv/sites/current
module = wsgi:application
virtualenv = /srv/environments/current
logto = /srv/logs/uwsgi.log
logfile-chown = true
touch-reload = /srv/sites/current/wsgi.py
服务启动正常,如果直接启动服务,一切正常,例如通过发出命令:
sudo -u www-data /usr/bin/uwsgi --ini /srv/configs/uwsgi.ini
对于套接字目录和日志文件目录,我设置了最宽松的权限。
所以,我很茫然。接下来做什么?
感谢 nmgeeks 的评论,我开始寻找其他配置 uWSGI 的地方。
在尝试将我们自己的应用程序相关的所有内容移动到 /srv
下时,我删除了 /run/uwsgi
目录,其中 uWSGI 正在尝试创建 PID 文件。
您可以在 /usr/share/uwsgi/conf/default.ini
找到参考资料。
可惜uWSGI在这种情况下没有产生任何错误,这让我沮丧了一天。
我只想补充一些细节。在我的例子中,我没有删除任何东西,但是,由于某些原因,systemd
无法创建 /run/uwsgi
目录。所以,我做到了echo "/run/uwsgi 0755 www-data www-data -" > /etc/tmpfiles.d/uwsgi.conf
。之后我重新启动了我的虚拟机(我没有找到不重新启动就应用此更改的方法)并且 uwsgi 开始工作了!
是的,uWSGI 在这种情况下没有产生任何错误真是太糟糕了。