【问题标题】:Django Gunicorn errorDjango Gunicorn 错误
【发布时间】:2017-03-28 14:07:47
【问题描述】:

我正在尝试使用他们的教程how to setup django 在数字海洋上部署 django 应用程序。像其他人一样,我也面临 502 错误。我看到没有生成 myproject.sock 文件。如何修复错误。 我的/etc/systemd/system/gunicorn.service

[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=root
Group=www-data
WorkingDirectory=/home/root/myproject
ExecStart=/home/root/myproject/myprojectenv/bin/gunicorn --workers 3 --bind unix:/home/root/myproject/myproject.sock myproject.wsgi:application

[Install]
WantedBy=multi-user.target

/etc/nginx/sites-available/myproject 的 nginx 配置

server {
    listen 80;
    server_name my_server_ip;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/root/myproject;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/root/myproject/myproject.sock;
    }
}

我在我的项目根文件夹中找不到任何 myproject.sock 文件

【问题讨论】:

    标签: django nginx gunicorn


    【解决方案1】:

    nginx 看起来不错,但对于 .sock 文件,我建议更改它并调用 .sh 文件: myproject.sock:

    [Unit]
    Description=Myproject gunicorn daemon
    
    [Service]
    Type=simple
    User=root
    ExecStart=/home/root/myproject_start.sh
    
    [Install]
    WantedBy=multi-user.target
    

    myproject_start.sh

    #!/bin/bash
    
    NAME="myproject"                              
    DJANGODIR=/home/root/myproject           
    SOCKFILE=/home/root/myproject/myproject.sock      
    USER=root                                       
    #GROUP=www-data                                   
    NUM_WORKERS=3                                    
    DJANGO_SETTINGS_MODULE=myproject.settings   
    DJANGO_WSGI_MODULE=myproject.wsgi
    
    echo "Starting $NAME as `whoami`"
    
    # Activate the virtual environment
    cd $DJANGODIR
    #IF YOU HAVE VIRTUALENV - OTHERWISE CHOOSE YOUR PYTHON DIR
    source /home/root/myproject/myprojectenv/bin/activate
    export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
    export PYTHONPATH=$DJANGODIR:$PYTHONPATH
    
    # Create the run directory if it doesn't exist
    RUNDIR=$(dirname $SOCKFILE)
    test -d $RUNDIR || mkdir -p $RUNDIR
    
    # Start your Django Unicorn
    
    exec /home/root/myproject/myprojectenv/bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
        --name $NAME \
        --workers $NUM_WORKERS \
        --user $USER \
        --bind=unix:$SOCKFILE
    

    【讨论】:

      猜你喜欢
      • 2017-12-31
      • 2017-10-01
      • 2012-05-28
      • 2017-05-17
      • 2014-06-28
      • 2018-12-05
      • 2015-03-31
      • 2021-11-19
      • 2015-06-17
      相关资源
      最近更新 更多