Flask + mod_wsgi + Apache Window

2019-10-18  本文已影响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 端口打开,否则外网和局域网无法访问。具体开端口自行百度即可。

上一篇下一篇

猜你喜欢

热点阅读