【问题标题】:Starting uWSGI service fails silently启动 uWSGI 服务静默失败
【发布时间】:2015-05-05 06:58:38
【问题描述】:

我遇到了一个让我发疯的问题。我正在尝试创建一个 Ubuntu 15.04 Upstart 作业,它将启动运行 Django 应用程序的 uWSGI 服务器(uWSGI 版本 2.0.7-debian)。

我已将服务配置如下,并尝试通过发出命令$ 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

对于套接字目录和日志文件目录,我设置了最宽松的权限。

所以,我很茫然。下一步该做什么?

【问题讨论】:

  • 根据我在 Ubuntu 15.04 中看到的有关 systemd 的情况,默认情况下它可能不会记录到任何 /var/log 文件。它可能将它的“单元”配置文件存储在 /etc/init 之外的某个地方:我在文档中看到 /lib/systemd/system 并且您的状态输出显示 /etc/init.d。所以也许它使用了不同的服务配置文件,将套接字文件放在你不看的位置。我这样说是因为您的状态输出表明 systemd thinks uwsgi 已经在运行。您可以通过ps auxww|wsgi 查找流程。
  • ps aux | grep wsgi 仅显示 grep 行,因此进程未运行。此外,我尝试使用这些说明在 /lib/systemd/system 中创建一个 uwsgi.service 文件,uwsgi-docs.readthedocs.org/en/latest/Systemd.html 但sudo systemctl status uwsgi.service 报告的内容与service uwsgi status 相同。
  • 很高兴我提供了一些的帮助。您应该发布自己的问题答案吗?
  • 看到您的评论后,我在 15 分钟内解决了问题。我想说你的帮助很重要。

标签: django ubuntu uwsgi upstart


【解决方案1】:

我只想补充一些额外的细节。就我而言,我没有删除任何内容,但由于某些原因,systemd 无法创建 /run/uwsgi 目录。所以,我做了echo "/run/uwsgi 0755 www-data www-data -" > /etc/tmpfiles.d/uwsgi.conf。之后我重新启动了我的虚拟机(我没有找到一种方法来应用这些更改而不重新启动)并且 uwsgi 开始工作!

是的,uWSGI 在这种情况下不会产生任何错误,这太糟糕了。

【讨论】:

    【解决方案2】:

    感谢 nmgeeks 的评论,我开始查看其他配置 uWSGI 的地方。

    在尝试将与我们自己的应用程序相关的所有内容移动到 /srv 下时,我删除了 /run/uwsgi 目录,uWSGI 正在尝试创建 PID 文件。

    您可以在/usr/share/uwsgi/conf/default.ini 找到参考。

    可惜 uWSGI 在这种情况下不会产生任何错误,这让我沮丧了一天。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-09
      • 1970-01-01
      • 2013-01-27
      • 2013-01-12
      • 2017-08-08
      • 2020-05-23
      • 2016-12-30
      相关资源
      最近更新 更多