Gunicorn + Nginx尝试应用代码更改时出现内部服务器错误

时间:2017-01-01 03:46:02

标签: python django nginx gunicorn

我设置了一个VPS(django + gunicorn + nginx)并且它正常显示默认的django屏幕,但在我更新了我的django代码并进行了所有迁移之后我认为现在我需要重新启动gunicorn来应用更改。 / p>

所以我这样做了:

sudo systemctl restart gunicorn 

在此之后我得到Internal Server Error 一切都设置为here

gunicorn.service:

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

[Service]
User=thekotik
Group=www-data
WorkingDirectory=/home/thekotik/glboy
ExecStart=/home/thekotik/glboy/denv/bin/gunicorn --workers 3 --bind unix:/home/thekotik/glboy/closer.sock closer.wsgi:application

[Install]
WantedBy=multi-user.target

1 个答案:

答案 0 :(得分:0)

<class 'socket.error'>, [Errno 13] Permission denied: file: /usr/lib/python2.7/socket.py line: 228

unix socket文件拥有相同的unix文件权限;文件(/home/thekotik/glboy/closer.sock)当前正在被引用error 13的gunicorn进程用户使用或不归。{/ p>

我建议使用TCP选项--bind 127.0.0.1:8000。对于基于tcp的更改,

<强> gunicorn.service

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

[Service]
User=thekotik
Group=www-data
WorkingDirectory=/home/thekotik/glboy
ExecStart=/home/thekotik/glboy/denv/bin/gunicorn --workers 3 --bind 127.0.0.1:9090 closer.wsgi:application

[Install]
WantedBy=multi-user.target

使用以上systemd服务文件为gunicorn&amp;将nginx中的代理选项更改为

proxy_pass http://127.0.0.1:9090$request_uri;

将避免基于unix socket文件的权限问题。