Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Service 活动:失败(结果:达到服务启动限制)_Service_Gunicorn_Systemd - Fatal编程技术网

Service 活动:失败(结果:达到服务启动限制)

Service 活动:失败(结果:达到服务启动限制),service,gunicorn,systemd,Service,Gunicorn,Systemd,在部署python项目的任务中,我已经完成了gunicorn设置 正在检查gunicorn状态文件(我今天早些时候刚刚运行了这个命令,它返回了以下内容): 我刚才去运行这个命令,结果不同: sudo systemctl status gunicorn.socket ● gunicorn.socket - gunicorn socket Loaded: loaded (/etc/systemd/system/gunicorn.socket; enabled; vendor preset: e

在部署python项目的任务中,我已经完成了gunicorn设置

正在检查gunicorn状态文件(我今天早些时候刚刚运行了这个命令,它返回了以下内容):

我刚才去运行这个命令,结果不同:

sudo systemctl status gunicorn.socket
● gunicorn.socket - gunicorn socket
   Loaded: loaded (/etc/systemd/system/gunicorn.socket; enabled; vendor preset: enabled)
   Active: failed (Result: service-start-limit-hit) since Sun 2020-02-16 21:45:01 UTC; 28min ago
   Listen: /run/gunicorn.sock (Stream)

Feb 16 21:42:10 ubuntu-s-1vcpu-1gb-nyc3-01 systemd[1]: Listening on gunicorn socket.
Feb 16 21:45:01 ubuntu-s-1vcpu-1gb-nyc3-01 systemd[1]: gunicorn.socket: Failed with result 'service-st
lines 1-7/7 (END)
我运行了
systemctl restart ssh
,但这并没有解决问题


有人知道这是什么原因吗

您需要了解gunicorn从活动状态更改为失败状态时的情况。 使用
sudo systemctl restart gunicorn.socket激活后,使用
sudo tail-f/var/log/syslog检查

尝试访问您的网站或gunicorn正在做的任何事情,它将更改状态并在syslog中打印更多信息


如果gunicorn是python环境的午餐,请尝试重新安装类似on的环境。

我三天前遇到过类似的问题。检查
/var/log/syslog
是解决问题的第一种方法。主要原因是gunicorn或nginx(或您使用的任何web服务器)中的配置错误。我在课堂上按照指示做

假设您有这样的文件夹结构(在我的假设中,您安装django并使用wsgi):

  • /home/user/venv/myvenv->您的虚拟环境目录
  • /home/user/venv/myvenv/myproject->您的项目目录
  • /home/user/venv/myvenv/bin/gunicorn->gunicorn文件通过pip安装后

  • 如果您创建了gunicorn服务文件(比如/etc/systemd/system/gunicorn.service),将文件
    gunicorn.sock
    放入
    /run/gunicorn.sock
    ,您可以按照下面的配置或类似的方式操作:

    [Unit]
    Description=gunicorn daemon
    Requires=gunicorn.socket
    After=network.target
    
    [Service]
    User=user
    Group=www-data
    WorkingDirectory=/home/user/venv/myvenv/myproject
    ExecStart=/home/user/venv/myvenv/bin/gunicorn \
        --access-logfile - \
        --workers 3 \
        --bind unix:/run/gunicorn.sock \
        myproject.wsgi:application
    
    [Install]
    WantedBy=multi-user.target
    
    ExecStart=/home/user/venv/myvenv/bin/gunicorn \
        --access-logfile - \
        --workers 3 \
        --bind unix:/run/gunicorn.sock \
        --chdir /home/user/venv/myvenv/myproject \
        myproject.wsgi:application
    
    请注意,myproject是您的python项目。有时,它无法工作,因为gunicorn不知道myproject文件夹的位置。您可以在ExecStart中添加
    --chdir
    选项,使其如下所示:

    [Unit]
    Description=gunicorn daemon
    Requires=gunicorn.socket
    After=network.target
    
    [Service]
    User=user
    Group=www-data
    WorkingDirectory=/home/user/venv/myvenv/myproject
    ExecStart=/home/user/venv/myvenv/bin/gunicorn \
        --access-logfile - \
        --workers 3 \
        --bind unix:/run/gunicorn.sock \
        myproject.wsgi:application
    
    [Install]
    WantedBy=multi-user.target
    
    ExecStart=/home/user/venv/myvenv/bin/gunicorn \
        --access-logfile - \
        --workers 3 \
        --bind unix:/run/gunicorn.sock \
        --chdir /home/user/venv/myvenv/myproject \
        myproject.wsgi:application
    
    --chdir
    用于指向项目文件夹。每次更改gunicorn.service时,在重新启动之前,不要忘记重新加载该服务

    $ sudo systemctl daemon-reload
    
    然后:

    $ sudo systemctl restart gunicorn
    

    不要与myproject.wsgi混淆。不是文件名。它将调用myproject文件夹中的wsgi文件。

    有解决这种情况的方法吗?