关于这一点似乎有很多关于StackOverflow的问题,但遗憾的是没有任何对我有用.
我在Nginx上遇到502坏网关,以及日志上的以下内容:connect()到… myproject.sock连接到上游时失败(13:权限被拒绝)
我在ubuntu上运行wsgi和Nginx,我一直在关注this guide from Digital Ocean.我显然正确配置wsgi因为uwsgi -s myproject.sock –http 0.0.0.0:8000 –module app – callable app工作,但我继续获取Nginx权限被拒绝错误,我不明白为什么:
在遇到this question和this other one之后,我更改了.ini文件并添加了chown-socket,chmod-socket,uid和gid参数(也尝试设置前两个,或者,以及几个不同的权限设置 – 和即使是最宽容的也行不通).
This one seemed promising,但我不相信selinux安装在我的Ubuntu上(运行sudo apt-get删除selinux给出“套件’selinux’没有安装,所以没有删除”和找到/ -name“selinux”没有显示任何东西) .不过,为了以防万一,我也尝试了this post推荐的内容.卸载apparmor(sudo apt-get install apparmor)也无法正常工作.
每次我做一个更改,我运行sudo服务Nginx重启,但我只看到502网关错误(和我读取日志时的权限被拒绝错误).
server {
listen 80;
server_name 104.131.110.156;
location / {
include uwsgi_params;
uwsgi_pass unix:/home/user/myproject/web_server/myproject.sock;
}
}
.conf文件:
description "uWSGI server instance configured to serve myproject"
start on runlevel [2345]
stop on runlevel [!2345]
setuid user
setgid www-data
env PATH=/root/.virtualenvs/my-env/bin
chdir /home/user/myproject/web_server
exec uwsgi --ini /home/user/myproject/web_server/myproject.ini
.ini文件:
[uwsgi]
module = wsgi
master = true
processes = 5
socket = /home/user/myproject/web_server/myproject.sock
chown-socket=www-data:www-data
chmod-socket = 664
uid = www-data
gid = www-data
vacuum = true
die-on-term = true
(如果它有帮助,这些是我的数字海洋机器的规格:Linux 3.13.0-43-generic#72-Ubuntu SMP Mon Dec 8 19:35:06 UTC 2014 x86_64 x86_64 x86_64 GNU / Linux)
如果我有什么可以做的,请告诉我,非常感谢你.
server {
listen 80;
server_name localhost;
location / { try_files @yourapplication; }
location @yourapplication; {
include uwsgi_params;
uwsgi_pass unix:/PATH_TO_PROJECT/PROJECT.sock;
}
}
我的.ini文件效果不好,所以我决定利用uWSGI的广泛参数.这是我用过的东西:
uwsgi -s /PATH_TO_PROJECT/PROJECT.sock -w wsgi:app -H / PATH_TO_PROJECT / venv –http-processes = 4 –chmod-socket = 666 –master&
哪里:
-s /PATH_TO_PROJECT/PROJECT.sock =我的.sock文件的位置
-w wsgi:app =我的wsgi.py文件和app的位置是我的Flask对象的名称
-H / PATH_TO_PROJECT / venv =我的虚拟环境的位置
–http-processes = 4 =要创建的uWSGI的http进程数
–chmod-socket = 666 =在套接字上设置的权限
–master =允许uWSGI与其主进程管理器一起运行
&安培; =在后台运行uWSGI
希望这可以帮助!