【问题标题】:uWSGI, Nginx, Flask app service keeps failinguWSGI、Nginx、Flask 应用服务不断失败
【发布时间】:2016-12-16 03:04:16
【问题描述】:

转到我的应用程序会产生 502 网关错误。发现这是因为我的 how_lit.service 失败了。但我很难找出原因。

尝试编辑应用程序和 ini 文档。无法弄清楚出了什么问题。

Nginx 和 uWSGI 服务正常运行。

服务状态:

    lit@digitalocean:~/howlit$ sudo service how_lit status
[sudo] password for lit: 
● how_lit.service - uWSGI instance to serve how lit rest api
   Loaded: loaded (/etc/systemd/system/how_lit.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Thu 2016-08-04 00:30:44 EDT; 5 days ago
  Process: 14294 ExecStart=/home/lit/howlit/env/bin/uwsgi --ini /home/lit/howlit/howlit.ini (code=exited, status=1/FAILURE)
 Main PID: 14294 (code=exited, status=1/FAILURE)

Aug 04 00:30:44 digitalocean systemd[1]: Started uWSGI instance to serve how lit rest api.
Aug 04 00:30:44 digitalocean uwsgi[14294]: [uWSGI] getting INI configuration from /home/lit/howlit/howlit.ini
Aug 04 00:30:44 digitalocean systemd[1]: how_lit.service: Main process exited, code=exited, status=1/FAILURE
Aug 04 00:30:44 digitalocean systemd[1]: how_lit.service: Unit entered failed state.
Aug 04 00:30:44 digitalocean systemd[1]: how_lit.service: Failed with result 'exit-code'.

目录和权限:

lit@digitalocean:~/howlit$ ls -l .
total 16
drwx---r-x 6 lit www-data 4096 Jul 29 11:47 env
-rwx---r-x 1 lit www-data  202 Aug  3 23:29 howlit.ini
-rwx---r-x 1 lit www-data 1203 Aug  3 23:01 how_lit_restapi.py
-rwxr-xr-x 1 lit www-data   72 Aug  3 23:27 wsgi.py

/etc/systemd/system/how_lit.service:

lit@digitalocean:~/howlit$ cat /etc/systemd/system/how_lit.service 
[Unit]
Description=uWSGI instance to serve how lit rest api
After=network.target


[Service]
User=lit
Group=www-data
WorkingDirectory=/home/lit/howlit/
Environment="PATH=/home/lit/howlit/env/bin"
ExecStart=/home/lit/howlit/env/bin/uwsgi --ini    /home/lit/howlit/howlit.ini

[Install]
WantedBy=multi-user.target

howlit.ini 文件:

lit@digitalocean:~/howlit$ cat howlit.ini 
[uwsgi]
module = wsgi:app

uid = lit
gid = www-data



master = true
processes = 5


socket = how_lit_restapi.sock

chmod-sock = 666

vacum = true

die-on-term = true


gto = /var/log/uwsgi/%n.log

尝试手动运行:

lit@digitalocean:~/howlit$ /home/lit/howlit/env/bin/uwsgi --ini /home/lit/howlit/howlit.ini 
[uWSGI] getting INI configuration from /home/lit/howlit/howlit.ini
*** Starting uWSGI 2.0.13.1 (64bit) on [Tue Aug  9 18:28:25 2016] ***
compiled with version: 5.4.0 20160609 on 29 July 2016 11:48:08
os: Linux-4.4.0-31-generic #50-Ubuntu SMP Wed Jul 13 00:07:12 UTC 2016
nodename: digitalocean
machine: x86_64
clock source: unix
detected number of CPU cores: 1
current working directory: /home/lit/howlit
detected binary path: /home/lit/howlit/env/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
your processes number limit is 1896
your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
bind(): Permission denied [core/socket.c line 230]

又是权限错误?

已解决:通过将我的套接字发送到 tmp,但当我导航到我的站点时仍然出现网关错误:(

【问题讨论】:

  • 检查 SELinux 是否允许您创建和连接套接字。
  • 好吧,我看到我创建了一个 sock 文件,所以这不意味着我不能吗?大声笑
  • 没关系解决它!

标签: nginx service deployment flask uwsgi


【解决方案1】:

解决了我自己的问题。

首先我检查了我的服务。

sudo service nginx status
sudo service uwsgi status
sudo service how_lit status

然后我看到它们都在运行并正常运行,但仍然出现错误的网关错误。好吧,检查日志后没有错误。我不得不假设我的配置。 然后我意识到我的错误......我从来没有重新启动它,只是在某些时候某些部分。所以我重新启动了每一个:

sudo service nginx restart
sudo service uwsgi restart
sudo service how_lit restart

现在可以了。

关于权限问题,我尝试将套接字放入 /tmp 目录,这样 www-data 组用户可以像 root 一样访问它。我了解到您需要能够创建套接字并允许它访问系统。

后来我将它从 tmp 移出用于生产,因为有人告诉我这不是最佳实践。

【讨论】:

    猜你喜欢
    • 2023-02-09
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    • 2016-08-12
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 2019-03-15
    相关资源
    最近更新 更多