2019-06-27
Wampserver64工具下配置Windows+Apache+mod_wsgi+Flask的简要说明
Apache的服务器有很多种类,此处随便找Wampserver64集成的服务器部署一下,主要是记录某些坑,方便复现
2.4.37Apache
启动的配置文件和log都可以在这个地方找到,之后要去文件夹里找到配置文件进行修改
完成后可以开始下载mod_wsgi
打开http://www.lfd.uci.edu/~gohlke/pythonlibs/#pil
找到Mod_wsgi,下载对应位数和python的版本,本人是python3.7,64位windows
可以选择mod_wsgi‑*+ap24vc*‑cp37‑cp37m‑win_amd64.whl版本
按照官方的话说,windows下其实好多命令行就用不了了,需要利用mod_wsgi-express module-config做编译,然后通过结构的输出地址进行配置
On Windows the start-server command is not available. Using pip install mod_wsgi on Windows is only for getting the mod_wsgi module compiled. Once you have it compiled, run:
mod_wsgi-express module-config
Copy the output from that into your Apache configuration file to have it load the mod_wsgi module. Then configure Apache manually to host your specific WSGI application.
先用命令行安装一下下载好的whi文件 pip3 install "mod_wsgi‑*+ap24vc*‑cp37‑cp37m‑win_amd64.whl"
进行安装在安装成功后在python的安装目录的\scripts文件夹下运行或者配置了系统环境可以直接运行(一定要确定自己用的是哪个python环境):
mod_wsgi-expressmodule-config
输出如下三行结果
LoadFile "c:/program files/python37/python37.dll"
LoadModule wsgi_module "c:/program files/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "c:/program files/python37"
把这三行内容复制到http.cnf文件下的其他LoadModule命令后面。
把下面两条LoadModule的注释去掉:
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
再次启动服务器即可
之后安装flask的过程暂时跳过
在配置完普通flask网站后,在_init_文件下创建工厂模式生成Flask的实例
然后可以创建一个runserver.py的文件用来做为主程序开启服务其的入口
文件内容如下
from 项目根目录名(与flask的app名对应一致最好) import create_app
app=create_app()
if __name__ =='__main__':
if app.debug:
app.run(debug=True)
else:
app.run(host='0.0.0.0')
然后可以创建wsgi.py文件用于给服务器提供程序入口的信息
内容如下
from 项目根目录名.runserver import app as application
此处如果找不到类,需要在项目的位置上做修改,也可以利用
import sys
sys.path.append('')
来确定项目地址
之后需要在配置文件中配置虚拟主机。
打开httpd.conf,输入:
Listen 9001
<VirtualHost *:9001>
ServerAdmin admin@example.com
WSGIScriptAlias / C:项目地址\wsgi.py
<Directory ‘C:项目地址'>
Require all granted
Require host ip
</Directory>
</VirtualHost>
之后即可通过网页访问,端口为9001