我正在努力如何在 Ubuntu 16.04 上使用 uWSGI 和 Nginx 提供 Django 应用程序。
我已经完成了教程并重新启动了 nginx 和 uwsgi。我注意到,如果我转到我的服务器的 IP,我会看到我的网站(这让我认为 uwsgi 工作正常)。但是如果我转到www.mysite.com
,我会收到 502 错误。我的 nginx 配置文件/etc/nginx/sites-available
包含mysite
:
server {
listen 80;
server_name mysite.com www.mysite.com;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/deploy/mysite;
}
location / {
include uwsgi_params;
uwsgi_pass unix:/run/uwsgi/mysite.sock;
}
我究竟做错了什么?
$ systemctl status uwsgi
Failed to connect to bus: No such file or directory
我很困惑,我知道我一直在处理一些 uwsgi 文件,
$ sudo systemctl start uwsgi
不会导致错误。此外,该网站仍在该 IP 地址上提供服务。我以为是 uwsgi 这样做的。
$ netstat -a|grep uwsgi
unix 2 [ ACC ] STREAM LISTENING 2373238691 /run/uwsgi/mysite.sock
答案1
502 Bad Gateway 错误意味着服务器没有从另一台服务器获得正确的响应。在你的情况下,它是uWSGI
服务器。它要么没有运行,要么由于错误而停止。
使用 检查 uWSGI 服务器的状态sudo systemctl status uwsgi
。
答案2
在 php7 中 www-conf 位于:/etc/php/7.0/fpm/pool.d
在此文件中我发现这个:
; Note: This value is mandatory.
listen = /run/php/php7.0-fpm.sock
; Set listen(2) backlog.
我在中设置了一个参数/etc/nginx/sites-available/[site]
upstream php-handler {
#server 127.0.0.1:9000;
server unix:/run/php/php7.0-fpm.sock;
}
而且它正在发挥作用:)