Centos 7 - uWSGI服务器 虚拟环境配置详解及
@
目录
1. 系统环境
Centos 7
anaconda3
2. uWSGI安装
pip install uwsgi
3. 虚拟环境配置
3.1 创建虚拟环境
conda create --name testenv python=3.7
3.2 启动虚拟环境
好像有些是 source activate
,不过笔者这里的是下面的命令启动虚拟环境的。
conda activate testenv
虚拟环境内安装uwsgi
(testenv)pip install uwsgi
有些文章说是系统级安装uWSGI服务器,不过这里有一个让人头疼的问题,那么就是安装了系统级的 uWSGI 服务器后,已经配置好了虚拟环境python解释器路径,但是uWSGI 竟然老是默认是系统级的 python 解释器,导致虚拟环境内的 python 解释器无法被识别调用,这就很古怪了,一开始以为是虚拟环境的路径识别问题,在激活虚拟环境后,在虚拟环境内使用 python -m venv --upgrade venv path
,更新虚拟环境路径配置文件,但最多解决Python3 venv 模块 No module named 'encodings'
问题,面对这种问题,笔者在虚拟环境内再次安装 uWSGI ,至此,问题解决,虚拟环境内的 python 解释器路径能被识别。
4. uwsgi.ini 配置模板
shell 命令查看虚拟环境下 uwsgi.ini 文件的配置变量:
uwsgi --help | grep virtualenv
[uwsgi]
#uid=test
#gid=test
#uid=www-data # Ubuntu系统下默认用户名
#gid=www-data # Ubuntu系统下默认用户组
project=testproject# 项目名
base=/home/work/testproject# 项目根目录
wsgi-file=/home/work/testproject/testproject/wsgi.py
home = /home/anaconda3/envs/testenv
#virtualenv = /home/anaconda3/envs/testenv
#pyhome = /home/anaconda3/envs/testenv
#http=127.0.0.1:8080
#http-socket=127.0.0.1:8080
#socket=/home/work/testproject/testproject.sock
socket=127.0.0.1:8080
pidfile=uwsgi.pid
processes=4
threads=2
enable-threads=true
# socket权限设置
chmod-socket=664 # 为 .sock 文件配置读、写、运行权限
# 服务停止时,自动移除unix socket和pid文件
vacuum=True
master=True
# 设置自中断时间
harakiri=300
# 设置缓冲
post-buffering=6553600
# 超时
http-timeout=600
#配置dump uwsgi 服务器日志记录
daemonize=/home/work/testproject/test_uwsgi.log
5. uWSGI服务器无法识别虚拟环境内的python解释器
5.1 查看 uwsgi 的可执行文件位置
进入anaconda3 虚拟环境
conda activate testenv
which命令:
(testenv) which uwsgi
/home/anaconda3/envs/testenv//bin/uwsgi
位置在这里
/home/anaconda3/envs/testenv//bin/uwsgi
5.2 直接命令运行
/home/anaconda3/envs/testenv//bin/uwsgi --ini /home/work/testproject/testproject.ini
后台运行:
nohup /home/anaconda3/envs/testenv//bin/uwsgi --ini /home/work/testproject/testproject.ini >/dev/null 2>&1 &
5.3 查看 uWSGI服务器的日志文件,验证是否成功
用 vs code 编辑器,反正都可以,或者命令行 cat
cat /home/work/testproject/test_uwsgi.log
参考链接
1. 使用uWSGI和nginx来设置Django和你的web服务器
2. Python3 venv 模块 No module named 'encodings' 其中一种解决办法
3. python虚拟环境配置文件_uwsgi 配置 python virtualenv 虚拟环境目录 ( ini 配置)
有人说:“如果你拥有的只是一把锤子,那么一切看起来都像钉子一样。”