美文网首页
Flask + mod_wsgi + Apache Window

Flask + mod_wsgi + Apache Window

作者: 依旧丶森 | 来源:发表于2019-10-18 16:55 被阅读0次

    写了一个爬虫小程序,想通过 API 接口调用程序,返回抓取结果,就简单使用Flask写了一个后端服务,现在准备部署在Windows Server 2012服务器上 ,百度了一下,大多数使用了两种方 IIS部署和Apache部署,这里采用了第二种方法部署

    1. 首先准备环境

    使用的Python环境为3.6版本
    根据对应python的 VC 版本可以选择对应的Apache版本,我这里使用了 Apache2.4 。
    还要准备对应的 mod_wsgi 版本 这里使用的是 mod_wsgi-4.6.4+ap24vc14-cp36-cp36m-win_amd64.whl

    2. 安装Apache

    下载网址: https://www.apachehaus.com/cgi-bin/download.plx
    解压,将里面的Apache24文件夹拷贝存放在所要安装的目录下
    进入文件夹下的 conf 子文件夹找到 httpd.conf 文件,编辑文件

    #  1. 找到 Define SRVROOT 这一行,屏蔽,改为本地的安装路径
    #Define SRVROOT "/Apache24"
    Define SRVROOT "D:\SoftWare\Apache24"
    
     # 2. 找到 Listen 80 这里默认为80端口,如果80端口被使用,要修改为未占用的端口号
     #Listen 80
     Listen 8082
    

    进入 cmd 命令行 ,切换到指定bin目录下,执行命令启动Apache

    cd Apache24/bin
    httpd –k start
    

    没有报错信息证明启动成功,在浏览器输入 localhost:8082 ,显示为Apache页面即为启动成功。

    2. 安装mod_wsgi

    进入项目的Python虚拟环境中,将 mod_wsgi-4.6.4+ap24vc14-cp36-cp36m-win_amd64.whl 文件准备好,安装 mod_wsgi 库。

    pip isntall "mod_wsgi-4.6.4+ap24vc14-cp36-cp36m-win_amd64.whl"
    

    这里之所以推荐 whl 文件安装方式是因为直接通过 pip install xx 会报错缺少 vc14++ 解决需要下载3个G 多的包,很麻烦。直接使用 whl 文件即可安装成功。

    安装成功后,在 Python 虚拟环境中的 scripts 文件夹中进入 cmd 命令行 ,执行命令

    mod_wsgi-express module-config
    

    会生成三行数据,这三行数据保存下载,是需要的数据

    LoadFile "c:/program files/python36/python36.dll"
    LoadModule wsgi_module "c:/program files/python36/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
    WSGIPythonHome "c:/program files/python36"
    

    这表明的是将要使用的 Python 解释器路径和 mod_wsgi 路径 和使用 WSGIPython 路径。

    3. 配置 wsgi

    在 Flask 程序路径下 创建 wsgi 文件。

    import sys
    from BoatWebAPI import app
    
    #app's path  Flask项目文件夹
    sys.path.insert(0,"F:/work/Python/BOATRECORD")
    
    #Initialize WSGI app object 将Flask 中的app 导入
    application = app
    

    Flask 项目文件

    from flask import Flask,jsonify
    
    app = Flask(__name__)
    app.config['JSON_AS_ASCII'] = False
    
    @app.route('/BOATNINFO/<boatname>', methods=['GET'])
    def ws(boatname):
        return jsonify({'success': 'true', 'msg': '调用成功!'})
    
    @app.route('/')
    def hello():
        return '欢迎使用船舶查询API接口!'
    
    if __name__ == '__main__':
       app.run()
    
    4. 再次配置Apache

    mod_wsgi 配置完成后 要将信息配置在Apache中,打开之前的 httpd.conf 文件,在后面追加配置。

    #前三个是mod_wsgi 生成的环境路径 
    LoadFile "c:/program files/python36/python36.dll"
    LoadModule wsgi_module "c:/program files/python36/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
    WSGIPythonHome "c:/program files/python36"
    
    #后面是配置环境的 wsgi文件路径和项目路径 以及访问限制
    <VirtualHost *>
        ServerName example.com
        WSGIScriptAlias / F:\work\Python\BOATRECORD\Flaskweb.wsgi
        <Directory F:\work\Python\BOATRECORD\>
            Require all granted
        </Directory>
    </VirtualHost>
    

    至此,整个 Apache 配置完成。重启 Apache 。

    httpd –k restart
    

    输入访问路径,即可访问部署的 Web 服务。

    5. 补充

    如果部署在服务器上需要将服务器的中 Web 服务使用的 8082 端口打开,否则外网和局域网无法访问。具体开端口自行百度即可。

    相关文章

      网友评论

          本文标题:Flask + mod_wsgi + Apache Window

          本文链接:https://www.haomeiwen.com/subject/rchdyctx.html