这个问题比较简单,缺少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
}



