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 配置)

posted @ 2023-03-24 16:45  Muxiu  阅读(308)  评论(0编辑  收藏  举报