我试过安装uWSGI,没有成功,然后选择了Apache24 (httpd-2.4.46-o111h-x64-vc15.zip)、
mod_wsgi-4.7.1-cp36-cp36m-win_amd64.whl、Flask、Python 3.6.5 x64,虽然,能访问,但是,没有解决导入numpy和pandas等包的问题,最后,选择tornado成功了。
一定要注意版本!!!
1、搭建Apache环境
1.1 下载Apache
下载的时候,请注意是python3.6对应VC15版本。
Apache在第三方网站下载地址
ApacheHaus
https://www.apachehaus.com/cgi-bin/download.plx
1.2 安装
解压httpd-2.4.46-win64-VC15.zip压缩包,如下:
将压缩包中的Apache24文件放在C盘的根目录下(即进入C盘的目录即可),如果要放置其他盘修改Apache24\conf\httpd.conf目录下的“Define SRVROOT "/Apache24"即可,我放在了D盘。
例如:修改为d盘,
# Define SRVROOT "/Apache24"
Define SRVROOT "D:/Apache24"
1.3 启动Apache
双击启动Apache
Apache默认监听80端口,在浏览器中输入: http://localhost/,出现下面结果表明成功。
2、 安装mod_wsgi
2.1 下载安装
好像不支持在线安装(我安装没成功)
mod_wsgi下载地址: https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi
安装方法:pip install mod_wsgi-4.7.1-cp36-cp36m-win_amd64.whl
2.2 配置mod_wsgi环境
安装结束后,在dos下输入以下命令:mod_wsgi-express module-config
将输出的结果输入到httpd.conf文件中,如下:
输入命令:
将结果放在C:\Apache24\conf\httpd.conf文件中的 #LoadModule后即可。
3、 编写Flask并配置环境
3.1 工程文件
工程目录如下:
flask_test
--hello_word.py
--mode_wsgi.py
文件内容:
# hello_word.py
from flask import Flask
app = Flask(__name__)
@app.route('/hello')
def index():
return 'Flask mod_WSGI'
if __name__ == '__main__':
app.run()
# mode_wsgi.py
import sys
import os
# 必须在导入app之前
sys.path.insert(0, os.path.dirname(os.path.realpath(__file__)))
from hello_word import app
application = app
3.2 配置虚拟环境
(1)添加5000端口
(2)关闭ssl_module
(3)添加应用
将下面的代码放置在Apache24/conf/httpd.conf文件中的最后即可,我的工程目录放在了“F:/config_web/”下面。
#---*** Set host of web **---
<VirtualHost *:5000>
ServerName example.com
WSGIScriptAlias / F:\config_web\flask_test\mode_wsgi.py
<Directory F:\config_web\flask_test >
WSGIScriptReloading On
Require all granted
</Directory>
</VirtualHost>
# 也可以如下设置
#---*** Set host of web **---
<VirtualHost *:5000>
ServerName example.com
WSGIScriptAlias / "F:/config_web/flask_test/mode_wsgi.py"
<Directory "F:/config_web/flask_test ">
WSGIScriptReloading On
Require all granted
</Directory>
</VirtualHost>
3.3 运行结果
4 使用tornado
4.1 遇到的问题
Apache可以使用,但是,我发现导入numpy、pandas等包时,Apache和flask都不报错,访问地址时浏览器一直转圈。我使用了site导入site-packages目录(numpy所在的包目录),还是转圈。
# hello_word.py
# 导入numpy,访问 http://localhost:5000/hello 浏览器一直转圈,不返回结果
# 注销numpy正常返回结果
import numpy
from flask import Flask
app = Flask(__name__)
@app.route('/hello')
def index():
return 'Flask mod_WSGI'
if __name__ == '__main__':
app.run()
4.2 使用tornado
(1)使用pip安装tornado即可
(2)编写tornado代码如下
#工程目录
flask_test
--hello_word.py
--my_tornado.py
# hello_word.py
没有变化
# my_tornado.py
# coding=utf-8
from tornado.wsgi import WSGIContainer
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from hello_word import app
if __name__ == '__main__':
http_server = HTTPServer(WSGIContainer(app))
http_server.listen(5000)
IOLoop.instance().start()
(3)运行
使用python打开即可,双击my_tornado.py文件,或者python my_tornado.py也行,访问 http://localhost:5000/hello
个人建议
在windows上搭建Flask环境,建议使用tornado(可能tornado也会有一定的问题),使用uWSGI、Apache安装和配置真的很费劲,能用Linux操作系统最好。