账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    supervisor 配合 gunicorn3 无法启动, 但是可以单独启动 gunicorn3
    64
    0

    本人买了一个服务器, 第一次部署flask程序遇到了一点问题, 如下

    谷歌了一下发现可以直接使用gunicorn3支持python3, 服务器安装了以后单独使用gunicorn3可以启动, 命令如下:

    # 我的程序在 /home/todo 下面
    cd /home/todo
    gunicorn3 wsgi --bind 0.0.0.0:2000

    此时访问:2000可以看到程序运行

    自己配置了supervisor发现无法启动, 配置如下:

    vim /etc/supervisor/conf.d/todo.conf
    # 在 todo.conf 里面新建一个配置, 内容如下
    
    [program:todo]
    command=/usr/local/bin/gunicorn3 wsgi --bind 0.0.0.0:2000 
    directory=/root/home/todo
    autostart=true
    autorestart=true

    启动服务器命令如下:

    → supervisorctl restart todo
    # 报错
    todo: ERROR (not running)
    todo: ERROR (spawn error)
    
    → service supervisor restart
    # 没有任何响应

    自己谷歌了一下, 网上说是supervisor不支持python3, 自己也不是很清楚具体原因出在哪里, 或者可能是自己配置错误等其他原因. 请问该如何解决这一问题? 第一次部署对这些知识比较欠缺, 望见谅!

    希望能有前辈指点, 给出方向我可以尝试自己解决.

    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 淚已干丶心已碎 普通会员 1楼

      在Supervisor中配合Gunicorn3无法启动的可能原因可能有以下几种:

      1. supervisor配置问题:Supervisor会检查Gunicorn的配置文件(Supervisor configuration file)以确保Gunicorn可以正确地运行。Gunicorn的配置文件通常位于/etc/supervisor/conf.d/gunicorn.conf/etc/supervisor/conf.d/gunicorn.conf.d/目录下,其中包含各种配置选项,如工作进程数、工作目录、启动优先级、日志路径等。

      如果你的Gunicorn配置文件中存在以下错误,Supervisor可能会无法启动:

      • workdirworkdir.d目录未正确设置:确保你的Gunicorn工作进程的启动目录是正确的,且你有权限访问这个目录。
      • worker_processesworker_processes.d目录未正确设置:如果你在/etc/supervisor/conf.d/gunicorn.conf中设置了worker_processes,你需要在worker_processes.d目录下添加相同数量的配置文件(例如,worker_processes = 2)并添加正确的配置文件内容,例如:

      bash worker_processes 2

      • worker_connectionsworker_connections.d目录未正确设置:如果你在/etc/supervisor/conf.d/gunicorn.conf中设置了worker_connections,你需要在worker_connections.d目录下添加相同数量的配置文件(例如,worker_connections = 1024)并添加正确的配置文件内容,例如:

      bash worker_connections 1024

      • daemonizedaemonize.d目录未正确设置:如果你在/etc/supervisor/conf.d/gunicorn.conf中设置了daemonize,你需要在daemonize.d目录下添加相同数量的配置文件(例如,daemonize = true)并添加正确的配置文件内容,例如:

      bash daemonize = true

      • socketsocket.d目录未正确设置:如果你在/etc/supervisor/conf.d/gunicorn.conf中设置了socket,你需要在socket.d目录下添加相同数量的配置文件(例如,socket = /tmp/gunicorn.sock)并添加正确的配置文件内容,例如:

      bash socket = /tmp/gunicorn.sock

      • worker_connectionsworker_connections.d目录或socket文件名与Gunicorn不匹配:确保你指定的Gunicorn配置文件路径与Gunicorn的配置文件名匹配。如果路径不正确,Supervisor可能会忽略该配置文件并使用默认的配置文件。

      • Gunicorn配置问题:Gunicorn本身可能也存在配置错误,例如错误的端口号、错误的连接超时、错误的请求处理策略等。请检查Gunicorn的配置文件,并确保其配置与你的Supervisor配置文件的对应部分正确。

      • supervisor连接超时:Supervisor默认会检查Gunicorn的超时配置,并在超时时间内(通常为30秒)尝试重启Gunicorn。如果你的Gunicorn超时设置错误,Supervisor可能会无法启动Gunicorn。检查Gunicorn的超时配置文件(例如,/etc/supervisor/gunicorn.conf)并确保其设置正确。

      • supervisor守护进程数量与Gunicorn数量冲突:如果你在Supervisor中设置了多个Gunicorn守护进程,可能会导致它们之间出现冲突。确保你指定的Gunicorn守护进程数量与你的Supervisor配置文件中的Gunicorn数量匹配,或者指定的Gunicorn守护进程数量为零,以避免冲突。

      • supervisor配置错误:在Supervisor中,你可能需要设置某些特定的启动命令,例如启动Gunicorn时的参数或启动后执行的命令。如果你的启动命令或启动后执行的命令设置错误,例如包含路径、缺少参数或语法错误,可能会导致Gunicorn无法启动。

      通过检查以上可能的原因,你可以尝试以下步骤来解决Gunicorn与Supervisor之间的冲突:

      • 检查Gunicorn的配置文件,并确保其配置与你的Supervisor配置文件的对应部分正确。
      • 如果你使用的是supervisorctl命令启动Gunicorn,确保你的配置文件正确(例如,配置了正确的工作进程数和启动优先级)。
      • 检查Supervisor的连接超时配置,确保其设置正确(例如,指定的超时时间)。
      • 如果你设置了多个Gunicorn守护进程,确保其数量与你的Supervisor配置文件中的Gunicorn数量匹配,或者指定的Gunicorn守护进程数量为零,以避免冲突。
      • 如果你需要启动Gunicorn时的参数或启动后执行的命令,确保其设置正确(例如,指定的启动命令或参数)。
      • 如果你在gunicorn.conf.d目录中使用了Supervisor配置文件,确保你正确地将配置文件路径复制到gunicorn.conf文件中,或者将配置文件路径设置为/etc/supervisor/gunicorn.conf.d/

      如果你尝试了以上步骤但仍然无法解决问题,你可能需要联系Supervisor的官方支持或寻求专业帮助,他们可能能提供更详细的错误信息和解决方案。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部