我已经使用Nginx和uWSGI多次,但是我从未见过即使显式指定套接字也不会被创建。
我的 uWSGI配置(/etc/uwsgi/sites/my_site.ini
)非常简单:
[uwsgi]
project = my_site
base = /root
chdir = %(base)/%(project)
home = %(base)/Env/%(project)
module = %(project).wsgi:application
master = true
processes = 5
socket = /run/uwsgi/%(project).sock
chmod-socket = 664
vacuum = true
可见,uWSGI必须创建具有644
权限的套接字(尽管有些建议它应该是666
)。
Nginx服务器配置(/etc/nginx/nginx.conf
)也非常简单:
server {
listen 80;
server_name mysite.com www.mysite.com;
location /static/ {
root /root/my_site;
}
location / {
include uwsgi_params;
uwsgi_pass unix:/run/uwsgi/my_site.sock;
}
}
uwgsi.service(启动脚本)(在CentOS上为/etc/systemd/system/uwsgi.service
):
[Unit]
Description=uWSGI Emperor service
After=syslog.target
[Service]
ExecStart=/usr/uwsgi --emperor /etc/uwsgi/sites
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all
[Install]
WantedBy=multi-user.target
完成这些配置后,我执行了以下命令:
sudo systemctl daemon-reload
sudo systemctl restart uwsgi
sudo systemctl restart nginx
sudo systemctl status uwsgi
sudo systemctl status nginx
根据上述命令,一切都很好,但是Nginx访问网站时返回了502错误的网关错误。
因此,我检查了/var/log/nginx/error.log/
:
2018/08/25 19:33:10 [crit] 14920#0:* 3 connect()到unix:/run/uwsgi/my_site.sock在连接到上游时失败(2:没有这样的文件或目录) ,客户端:xx.xxx.xxx.xx,服务器:my_site.com,请求:“ GET / HTTP / 1.1”,上游:$
如上所示,由于某种原因,uWSGI不在/run/uwsgi/
目录中创建套接字...
我确定/run/uwsgi/
不会返回任何内容,因此不会在ls /run/uwsgi/
上创建套接字。
权限:
sudo usermod -a -G root nginx;chmod 710 /root
uWSGI没有在上述配置中的指定路径上创建unix套接字,这可能是问题所在吗?
有什么可能的原因吗?