栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

nginx+uwsgi搭建python web运行环境一些问题记录

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

nginx+uwsgi搭建python web运行环境一些问题记录

问题1:pip3 install uwsgi安装失败,找不到python.h

         这个问题比较简单,缺少python头文件,yum install -y python3-devel即可。

问题2:uwsgi如何调用venv或virtualenv虚拟环境

        使用virtualenv选项即可,如果是ini配置文件,添加“virtualenv = 你的虚拟环境目录”

问题3:uswgi启动时候报找不到python_plugin.so

       启动时可以看到日志如下:

UNABLE to load uWSGI plugin: ./python_plugin.so: cannot open shared object file: No such file or directory!

        把uswgi配置文件中的plugins = python注释后,就好了,目前不知道有什么影响。

问题4:nginx报Permission denied错误

          配置完nginx和uwsgi配置文件后,打不开网站。查看nginx日志,可以发现Permission denied错误,如下:

connect() failed (111: Connection refused) while connecting to upstream, client: 1.1.1.1, server: localhost, request: "GET / HTTP/1.1", upstream: "uwsgi://1.1.1.1:8000", host: "1.1.1.1", referrer: "http://1.1.1.1/"

上网查找问题,有人说是目录权限,尝试更改目录权限未果,尝试变更uwsgi执行用户,也没有解决。最后有人说要修改setsebool -P httpd_can_network_connect 1。进一步了解一下,原来还是selinux在作怪,因为是新建虚拟机,又忘记关闭selinux了,不知道第几次倒在selinux面前。

问题5:uwsgi启动报错!!! Python Home is not a directory: /XXXX !!!

        这个问题是在上一个问题中尝试更换uid和gid启动uwsgi后发生的,之前以root身份运行是没有问题的。后来把虚拟环境的用户和用户组变更一下就解决了。

uswgi的ini配置文件简单配置:

[uwsgi]

# 外部访问地址,可以指定多种协议,和nginx中配置一致
socket = 127.0.0.1:8000 # uwsgi的监听端口

# 无nginx时使用
# http = 127.0.0.1:8080

# 指向项目目录
chdir =  /home/web1/

# flask启动程序文件
wsgi-file = app.py

# flask在manage.py文件中的app名
callable = app

# 这行一定要加上,不然请求时会出现-- unavailable modifier requested: 0 --错误提示
# 我配置这行后启动提示错误
#plugins = python

# 处理器数
processes = 2

# 线程数
threads = 2

logto = /home/web1/logs/uwsgierror.log

# 配置虚拟环境路径
virtualenv = /home/testenv/

# 启用主进程
master = true

# 主进程id文件目录
pidfile = /home/web1/uwsgi.pid

# uWSGI服务器运行时的用户id
uid=nginx

# uWSGI服务器运行时的用户组id
gid=nginx

nginx的default.conf中关于uwsgi的简单配置:

    location / {
        uwsgi_pass      127.0.0.1:8000; # 转发端口,需要和uwsgi配置当中的监听端口一致
        include uwsgi_params; # 导入uwsgi配置
        uwsgi_param UWSGI_PYTHON /home/自己创建的venv目录/bin/python3; # Python解释器所在的路径(这里为venv虚拟环境)
        uwsgi_param UWSGI_CHDIR  /home/web1/; # 自己创建的项目根目录
        uwsgi_param UWSGI_script app:app; # 指定启动程序
        # 比如你测试用test.py文件,文件中app = Flask(name),那么这里就填 test:app
    }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/657326.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号