赞
踩
因为一个好奇心,所以开始学习Flask,自己做一些简单的工具,用来解决工作上的问题.在过程中,遇到了这样的一个问题.我应该把我的应用部署到哪里?因为我只有一个windows server2008,网上粗略搜索到的,都是基于linux部署的.为了让我的APP能运行的更加省心,我整理了一下windows上部署flask的方案.
由于flask本身运行不稳定,需要将其部署在可以容纳WSGI应用的服务器上,客户服务器是windows server 2008,原来发布解决方案是在Linux下Nginx+uWSGI,uWSGI不能运行在windows下。于是梳理可以在windows下运行方法。
嗯...这里使用了Twisted Web.
方案1:
可以尝试pip安装下:(在我的win10下,尝试了下,不一定能成功)
pip install twisted
方案2:
到这个网址下载:https://www.lfd.uci.edu/~gohlke/pythonlibs/
下载和自己python版本对应的twisted:
如我的python是3.6 win32,我就下载了Twisted-17.9.0-cp36-cp36m-win32.whl
然后执行安装:pip install Twisted-17.9.0-cp36-cp36m-win32.whl
剩下需要依赖的,程序会自动下载下来
方案3:
工作环境是内网,与外网物理隔离.所以我们可以先外网安装好,打包虚拟环境到内网。在内网安装先安装相同版本的python,再启动虚拟环境,启动安装好的程序。
- # 新建文件twisted_web.py 录入如下代码
- from twisted.web.wsgi import WSGIResource
- from twisted.internet import reactor
-
- def application(environ, start_response):
- start_response('200 OK', [('Content-type', 'text/plain')])
- return ['Hello, world!']
-
- resource = WSGIResource(reactor, reactor.getThreadPool(), application)
-
- # 在cmd下执行:
- twistd -n web --wsgi twisted_web.application
其中twisted_web是文件名,application是函数application(environ, start_response).(因为环境问题,可能会有坑..下文会有解决方案)
一个简单的FlaskDemo(main.py)
- from flask import Flask,render_template
- app = Flask(__name__)
-
- @app.route('/')
- def hello():
- return render_template("index.html")
-
- if __name__ == '__main__':
- app.run(debug=True)
CMD中执行:
twistd -n web --wsgi main.app
其中main是文件名,app是app = Flask(__name__)中变量
em..然后遇到了这个信息:
twistd: No such WSGI application: 'main.app'
网上查了下,原因是twistd没有正确找到环境变量,所以,我们只要设置PYTHONPATH为当前目录即可.这里提供了一个简单的启动脚本(run.bat):
- set PYTHONPATH=.
- twistd -n web --port tcp:8080 --wsgi main.app
参考:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。