Apache+mod_wsgi实现Windows本地部署Flask

一.前言

        最近,刚来公司实习,在leader的要求下,想办法把开发的自动化测试平台部署到服务器上,一开始,我认为这个问题可能会不难,可事实上我太轻浮了。

        一开始,问了很多做开发的人员,很多人说flask的部署可以用uwsgi和gunicron,于是兴致勃勃的在博客上去寻找如何安装uwsgi,最开始那股认真劲,觉得我一定行,一定可以解决,我按照网上的步骤一步一步的来,几乎所有博客都看了。安装过程你会出现各种各样的Bug。直到看到了这篇博客,整个人傻了,耽误了我一整天,当时我的leader还帮我查了很久的问题。事实上,Windows就是不支持uwsgi(如果有大佬能解决的话可以在评论区告诉我一下,谢谢),有很多人水博客,最后一步的难题我目前没找到解决办法!!!!! 附录二 windows上直接安装uwsgi(不可行)_Suyuoa的博客-CSDN博客_windows 安装uwsgi

        后来,吸取flask的经验,在安装gunicron之前,我先去问度娘,得到的结果是在Windows下部署不支持uwsgi和gunicorn。因此,我不得不寻找其他办法方法来解决,最终选择了Apache+mod_wsgi的部署方式。

        首先,我的python版本是python3.7,值得一提的是,我们需要保证python、apache、mod_wsgi的版本统一,如果不统一的话,会出现很多头疼的问题。

二. 安装Apache

  1. 下载地址:Download - The Apache HTTP Server Project
  2. vc14下载地址:https://www.apachelounge.com/download/VC14/

 因为我是64位的win10系统,

 因此,我们需要进入到下载页面选择我们需要的VC14的版本。将下载好的Apache放在D盘顶级目录下(你也可以放在其他位置)

接下来,需要对apache文件里面的 Apache24\conf\httpd.conf进行一些修改。

(1)找到下面的语句 ,可以将监听端口改为一个没有被占用的,比如我的8068。

#Listen 12.34.56.78:80  
Listen 80

(2)找到Define SRVROOT "/Apache24"语句,将后面的地址设置为你的地址。比如我的地址:Define SRVROOT "D/Apache24"。

(3)我们利用CMD命令打开命令行窗口,进入到D盘。然后在目录下使用httpd -k install -n "Apache2.4"安装Apache,然后输入httpd 启动命令。然后在浏览器输入http://localhost:8068/。如果网页上显示 It Works! ,那说明apache服务器运行起来了。你应该庆幸自己的第一步成功了·。如果没看到“It Works!”,那么倒回去检查是否有端口冲突,是否下载了正确版本的Apache,然后再装一遍。卸载不正确版本的Apache前记得停止Apache服务。

>CD D:\Apache24\bin

三. 安装mod_wsgi

1.下载mod_wsgi:下载页面

 我的python37,amd64代表64位的,所以我选择安装mod_wsgi‑4.9.0‑cp37‑cp37m‑win_amd64.whl。接下来将下载好的文件解压到任意目录下。使用命令行界面(以管理员身份运行)进入到mod_wsgi-4.9.0-cp37-cp37m-win_amd64.whl对应目录,直接安装。

>pip install mod_wsgi-4.7.1-cp37-cp37m-win_amd64.whl
Installing collected packages: mod-wsgi
Successfully installed mod-wsgi-4.9.0

当出现Successfully installed mod-wsgi-4.9.0字样时就说明我们的mod_wsgi安装成功。但这时你先别着急退出,接着输入mod_wsgi-express module-config。输入完成后会出现一下三行代码。我们将其复制到httpd.conf文件的LoadMoudle后面。

LoadFile "c:/python37/python37.dll"
LoadModule wsgi_module "c:/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "c:/python37"

接下来我们对httpd.conf里面的文件进行配置,在上面的语句下面添加WSGIApplicationGroup %{GLOBAL}。将LoadModule access_compat_module modules/mod_access_compat.so前面的#去掉。

 四. 编写测试文件

为了验证我们的mod_wsgi是否安装成功,我们可以编写一个测试文件,我们将其命名为test.wsgi,部署时,我们先不要引用其他文件的app。

test.wsgi文件:

def application(environ,start_response):
    status = "200 Ok"
    output = b"Hello wsgi"
    response_headers=[('Content-type','text/plain'),('Content-Length',str(len(output)))]
    start_response(status,response_headers)
    return[output]

配置好wsgi文件后,重启apache:httpd –k restart

访问:http://127.0.0.1:8068  当页面出现Hello wsgi说明我们的mod_wsgi配置成功。至此,apache服务算是搭建成功了一大半~

 五. 配置flask项目的wsgi文件

接下来的部分,本应该很快完成,但对于一个入门不深的人来说,还是面临许多挑战。

在wsgi文件中可以引入其他模块的对象,在这里需要从项目中引入ap和api

在引入时需要把项目目录添加到系统环境变量中,让wsgi能够识别到需要引入的对象位置

注意:在填写路径时大家可以采用我的方法:"r+\\" ,不然极容易出现ImportError: cannot import name 'app' from 'app'的错误。

然后我们在httpd.conf进行最终配置。

 配置完成后在我们的浏览器输入local host:8068,就会出现我的test-web项目界面

 这样,我们的Flask项目就算是成功部署在本地了,当然在这过程中你会遇到各种各样的错误,你可以查看Apache下面的error.log(apache日志),分析错误,解决错误。

用apache+wsgi部署flask服务的作用:

用apache部署了flask服务后,不用运行flask api代码,直接访问apache中配置的地址就可以访问api服务,每次访问时,apache会把请求转给flask api服务程序,进行返回

第一次创作,可能写的不完美,语言不够精简,大家有困惑的地方可以评论区留言哟!!!

感谢

https://www.cnblogs.com/xiaxiaoxu/p/10964907.html

flask在window下使用Apache进行部署的详细指南

  • 6
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值