我正在关注http://www.obeythetestinggoat.com/book/chapter_08.html书,它说添加一个unix套接字来运行带有gunicorn的nginx服务器,我做了。 这是我的nginx文件
server {
listen 80;
server_name mydjsuperlist-staging.tk;
location /static {
alias /home/elspeth/sites/mydjsuperlist-staging.tk/static;
}
location / {
proxy_set_header Host $host;
proxy_pass http://unix:/tmp/mydjsuperlist-staging.tk.socket;
}
}
Nginx重新加载没有任何失败,并使用nginx -t
进行检查当我跑步时:
gunicorn --bind unix:/tmp/mydjsuperlist-staging.tk.socket superlists.wsgi:application
它在tmp文件夹中成功创建了mydjsuperlist-staging.tk.socket文件,我在终端上创建了这个文件
2016-09-01 18:56:01 [15449] [INFO] Starting gunicorn 18.0
2016-09-01 18:56:01 [15449] [INFO] Listening at: unix:/tmp/mydjsuperlist-staging.tk.socket (15449)
2016-09-01 18:56:01 [15449] [INFO] Using worker: sync
2016-09-01 18:56:01 [15452] [INFO] Booting worker with pid: 15452
一切似乎都很好,但是当我访问我的网站mydjsuperlist-staging.tk时,它会出现(502)错误的网关错误。 当我使用端口时,我的网站运行完美。我在这里做错了什么?
答案 0 :(得分:2)
我遇到了同样的问题,我也在做相同的教程,所以这是我的解决方案: http://docs.gunicorn.org/en/stable/deploy.html
注意:我没有使用Upstart,我正在使用SystemD服务
1)在/etc/systemd/system/nginx.service
[Unit]
Description=Gunicorn server for {SITENAME}
After=network.target
[Service]
User={user}
Group=www-data
WorkingDirectory=/home/{user}/sites/{SITENAME}/source
ExecStart=/home/{user}/sites/{SITENAME}/virtualenv/bin/gunicorn --workers 3 --bind unix:/tmp/{SITENAME}.socket superlists.wsgi:application
Restart=always
[Install]
WantedBy=multi-user.target
2)我按照http://docs.gunicorn.org/en/stable/deploy.html制作 gunicorn.socket 和 gunicorn.conf 的后续步骤,但我只是注意到我的套接字状态是不活跃,所以我认为没有必要。
/usr/lib/tmpfiles.d/gunicorn.conf
d /run/gunicorn 0755 someuser someuser -
接下来启用服务,以便它们在启动时自动启动:
$ systemctl enable nginx.service $ systemctl enable gunicorn.socket
重启或手动启动服务:
$ systemctl start nginx.service $ systemctl start gunicorn.socket
一些有用的提示:
$ systemctl status gunicorn.service
$ sudo nginx -t
ALLOWED_HOSTS = [**'**{SITENAME}**'**]
我花了6个小时让它运行但是我第一次这样做并且在Unix上没有任何知识我认为没问题。
希望它有所帮助,继续努力直到它起作用!!
答案 1 :(得分:1)
将套接字文件放入 / var / run 而不是 / tmp
不客气。
这个答案花了我两个小时,fml ...
我在https://serverfault.com/questions/463993/nginx-unix-domain-socket-error/464025#464025
中找到了它