当前位置: 首页 > 工具软件 > mod_wsgi > 使用案例 >

wsgi和mod_wsgi

龚同
2023-12-01

wsgi:全称:python web server gateway interface
也就是python的网络服务器网关接口,用于将web server和python后端程序联通起来,通过wsgi是可以启动python工程的。
通过Apache联通python是需要有媒介的,mod_wsgi和wsgi文件就是这个东西,Apache需要使用mod_wsgi.so库进行wsgi调用,配置位置在httpd.conf内,通过:
LoadModule wsgi_module modules/mod_wsgi_python3.so
LoadModule wsgi_module /usr/lib64/httpd/modules/mod_wsgi.so

mod_wsgi的安装

modwsgi.so的安装可以通过三种方式:
yum安装,源码安装以及通过pip安装
yum 安装最方便:
yum install mod_wsgi
就可以了,
源码安装方式:

$ wget https://github.com/GrahamDumpleton/mod_wsgi/archive/4.7.1.tar.gz
$ tar xzvf 4.7.1.tar.gz
$ cd mod_wsgi-4.7.1
$ ./configure --with-python=/usr/bin/python3
$ make
$ make install

参考文章:https://yanbin.blog/about-apache-flask-integration/

不过我在kylin上没有正常编译;
同样的,使用pip install mod_wsgi也是出了错
安装方式参考文章:
https://blog.csdn.net/u014102846/article/details/98762023不过该文描述的是通过apt-get 安装的Apache2的方式,kylin不支持apt-get 的方式安装

参考wsgi文件

wsgi文件的位置一般在工程目录下,wsgi文件的位置是通过virtualHost配置的,进而通过Apache进行启动虚拟主机

示例:

activate_this = '/aips/aips-nxp-web-back/venv/bin/activate_this.py'
with open(activate_this) as file_:
exec(file_.read(), dict(__file__=activate_this))
 
import sys
sys.path.insert(0, '/aips/aips-nxp-web-back/app')
from app import app as application

示例2:

activate_this = '/aips/aips-nxp-web-back/venv/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
 
import sys
sys.path.insert(0, '/aips/aips-nxp-web-back/app')
from app import app as application

手动启动app和Apache启动方式

 python -m app.py
export FLASK_APP=app.py
flask run
# flask run有几个参数,
比如--host=0.0.0.0,就是以局域网内的IP启动,而非以127.0.0.1的方式启动,这样局域网内的站点也能访问到该server
--port=5001,就是设定端口,默认5000
--debug=TRUE 就是启动调试模式,更新程序后自动重启

wsgi文件启动需要设定wsgi文件,示例如上
如果通过Apache启动的话,因为Apache配置虚拟站点内配置了wsgi以及解释器的位置,可以通过wsgi找到app的位置进而启动app.py
所以只需要执行:
systemctl restart httpd就可以重启Apache,进而启动了python 的server

 类似资料: