apache+mod_wsgi+flask+windows部署 作者:马育民 • 2019-09-19 23:36 • 阅读:10348 # 概述 本节介绍flask框架的部署 flask中文文档中提供多种部署解决方案: http://docs.jinkan.org/docs/flask/deploying/index.html ### 部署环境 - Windows10 - python3.7(64位) - Apache x64-vc15 - mod_wsgi(4.7.0+ap24vc15-cp37-cp37m-win_amd64) - flask # 部署 Apache x64-vc15 ### 下载地址 http://httpd.apache.org/download.cgi ### 配置apache路径 解压apache文件,打开文件`Apache24\conf\httpd.conf`, 找到`Define SRVROOT` 后面把apache路径补全 [![](https://www.malaoshi.top/upload/0/0/1EF4zNY361eb.png)](https://www.malaoshi.top/upload/0/0/1EF4zNY361eb.png) ### 修改端口 找到`Listen 80`,此处为设置端口 ### 检测配置文件是否正确 ``` httpd -t ``` 若出现`syntax ok`则表示配置正确 ### 添加到服务 执行下面命令: ``` httpd -k install -n apache ``` -n表示安装的服务的名称,可以任取 安装名为apache的服务,在服务中可以看到 ### 删除服务 ``` httpd -k uninstall -n apache ``` ### 启动和关闭服务 启动: ``` net start apache ``` 关闭: ``` net stop apache ``` 重启: ``` httpd -k restart ``` # 配置apache和mod_uwsgi ### 下载mod_wsgi.whl https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi 注意:mod_uwsgi的下载需要依赖于apache与python版本和cpu架构(如amdx64) 这里要选择apache版本为VC15的才匹配,图中37表示python 3.7版本 amdx64表示64位版本,点击下载即可。 [![](https://www.malaoshi.top/upload/0/0/1EF4zNvK33c3.png)](https://www.malaoshi.top/upload/0/0/1EF4zNvK33c3.png) ### 安装mod_wsgi.whl ``` pip install 文件路径 ``` (直接把下载文件拖进控制台就可自动生成路径) ### 执行命令查看信息 到python安装路径下,找到scripts文件夹 如:`python\Scripts`, 并在该路径执行命令 `mod_wsgi-express module-config` 结果如下: [![](https://www.malaoshi.top/upload/0/0/1EF4zO0r0AnA.png)](https://www.malaoshi.top/upload/0/0/1EF4zO0r0AnA.png) ### 启用mod_vhost_alias.so 再次打开`Apache24\conf\httpd.conf`文件 找到`LoadModule vhost_alias_module modules/mod_vhost_alias.so` 并删除前面的`#`符号,表示启用该mod(虚拟主机,待会有用) [![](https://www.malaoshi.top/upload/0/0/1EF4zO0OLYo7.png)](https://www.malaoshi.top/upload/0/0/1EF4zO0OLYo7.png) ### 集成 然后在该文件末尾粘贴 刚才记录下来的三条命令,保存文件 [![](https://www.malaoshi.top/upload/0/0/1EF4zO54kyuI.png)](https://www.malaoshi.top/upload/0/0/1EF4zO54kyuI.png) # 测试flask项目 简易flask文件编写 文件结构:static存放静态文件,templates存放模板文件 [![](https://www.malaoshi.top/upload/0/0/1EF4zO80IPeM.png)](https://www.malaoshi.top/upload/0/0/1EF4zO80IPeM.png) ### Main.py文件 [![](https://www.malaoshi.top/upload/0/0/1EF4zO9FWTSP.png)](https://www.malaoshi.top/upload/0/0/1EF4zO9FWTSP.png) ### app.wsgi文件 内容如下 ``` import sys sys.path.insert(0, r"C:\Users\mym\Desktop\python\sms") #项目路径 from server import app #将我们的flask项目project名引入 # applcation一定不能改成别的,因为wsgin在解析这个文件时,只认applcation application = app ``` **注意:** 最下面要有```application = app```,而且application不能改动 # 部署flask项目 修改配置`httpd.conf`文件, 在文件httpd.conf最后加上下面代码并保存 ``` WSGIScriptAlias / C:\test\app.wsgi #项目路径 Require all granted Require host ip ``` 在浏览器里访问:localhost,如果顺利就能访问网站了 # 错误 在执行命令: ``` httpd -k install ``` 提示httpd.conf有语法错误,大意是```Order allow,deny```不能写Order **解决如下:** 把下面代码取消注释 ``` LoadModule access_compat_module modules/mod_access_compat.so ``` # 启动后不能访问的解决办法 如果启动服务后,不能访问,找到apache的logs文件夹,如下: ``` C:\Apache24\logs ``` 访问信息记录在 **access.log** 文件中 错误信息记录在 **error.log** 文件中 查找这两个文件,会找到错误的线索 # 备注 apache vc14下载地址: https://www.apachelounge.com/download/VC14/ mod_wsgi下载地址: https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi 感谢 感谢下面文章,写的极为详尽 https://blog.csdn.net/k295330167/article/details/80616519 记录下我配置时遇到的问题,以及注意事项 原文出处:http://malaoshi.top/show_1EF466pLnHgH.html