如何让nginx执行python代码_python – 如何在执行模式下使用SELinux运行Flask Nginx uWSGI?...

我正在关注this tutorial在Nginx服务器上运行Flask.我几乎让它工作,其中当SELinux设置为Permissive时页面加载,但当SELinux处于Enforcing模式时显示502 Bad Gateway.

以下是一些相关文件:

myproject.ini

[uwsgi]

module = wsgi

master = true

processes = 5

socket = myproject.sock

chmod-socket = 660

vacuum = true

die-on-term = true

myproject.service

[Unit]

Description=uWSGI instance to serve myproject

After=network.target

[Service]

User=thisuser

Group=nginx

WorkingDirectory=/home/thisuser/public_html

Environment="PATH=/home/thisuser/thisuser_env/bin"

ExecStart=/home/thisuser/thisuser_env/bin/uwsgi --ini myproject.ini

[Install]

WantedBy=multi-user.target

thisuser.com.conf(Nginx配置)

server {

listen 80;

server_name thisuser.com www.thisuser.com;

access_log /home/thisuser/logs/access.log;

error_log /home/thisuser/logs/error.log;

location / {

include uwsgi_params;

uwsgi_pass unix:/home/thisuser/public_html/myproject.sock;

try_files $uri $uri/ =404;

}

}

Flask文件目录的位置是/ home / thisuser /,它的上下文设置如下:

[root@dev ~]# ls -ldZ /home/thisuser/

drwx--x--x. thisuser thisuser unconfined_u:object_r:user_home_dir_t:s0 /home/thisuser/

[root@dev ~]# ls -ldZ /home/thisuser/public_html/

drwxrwxr-x. thisuser thisuser unconfined_u:object_r:httpd_sys_content_t:s0 /home/thisuser/public_html/

错误如下:

/var/log/audit/audit.log

type=AVC msg=audit(1498880449.864:156): avc: denied { write } for pid=2667 comm="nginx" name="myproject.sock" dev="dm-2" ino=67165858 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:httpd_sys_content_t:s0 tclass=sock_file

type=SYSCALL msg=audit(1498880449.864:156): arch=c000003e syscall=42 success=no exit=-13 a0=f a1=7f526e12e548 a2=6e a3=7ffdf52991b0 items=0 ppid=2666 pid=2667 auid=4294967295 uid=997 gid=995 euid=997 suid=997 fsuid=997 egid=995 sgid=995 fsgid=995 tty=(none) ses=4294967295 comm="nginx" exe="/usr/sbin/nginx" subj=system_u:system_r:httpd_t:s0 key=(null)

/home/thisuser/logs/error.log

2017/06/30 23:40:49 [crit] 2667#0: *1 connect() to unix:/home/thisuser/public_html/myproject.sock failed (13: Permission denied) while connecting to upstream,client: 192.168.1.15,server: thisuser.com,request: "GET / HTTP/1.1",upstream: "uwsgi://unix:/home/thisuser/public_html/myproject.sock:",host: "thisuser.com"

试过的步骤:

>尝试将sock权限更改为chmod-socket = 666

>使用了setsebool -P httpd_can_network_connect 1

>将FROM = thisuser更改为user = nginx

>将此用户添加到nginx组

唯一有效的方法是将SELinux更改为Permissive.我可以进行一些更改/添加,以便SELinux继续执行吗?

编辑:在firewalld中已经​​允许http(s)

[root@dev ~]# firewall-cmd --permanent --zone=public --add-service=https

[root@dev ~]# firewall-cmd --permanent --zone=public --add-service=http

[root@dev ~]# firewall-cmd --reload

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值