关于Flask在windows上的部署
因为一些原因,可能有些时候我们需要在windows机器上部署Flask程序,之前的话,都是直接“ python main.py ” 解决。不过这样的情况似乎后面不好维护。所以这里整理了一个奇怪而且容易维护的方法。
需要的东西:
- 虚拟环境:避免影响系统的python环境,便于迁移。
- tornado:用tornado架起flask app
- nginx: 反向代理,让其他机器更容易访问服务。。(windows server上,直接python main.py ,服务启动后,其他的机器上有时候访问不到服务的。可能有地方限制了,但是没弄明白。)
- srvany:将flask程序注册到系统服务里。便于维护。
流程:
先假设我们的flask应用已经写好了。
1. 编写启动脚本:
from tornado.wsgi import WSGIContainer
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from run import app
http_server = HTTPServer(WSGIContainer(app))
http_server.listen(5000) #flask默认的端口
IOLoop.instance().start()
写一个cmd脚本:
D:\pyspace\Flask\Flask_AppBulider\venv\Scripts\python D:\pyspace\Flask\Flask_AppBulider\tj\run.py
2. 使用srvany注册服务
srvany.exe是Microsoft Windows Resource Kits工具集的一个实用小工具,用于将EXE程序作为Windows服务运行。srvany是其注册程序的服务外壳,我们可以通过它让我们的程序以SYSTEM账户启动,或者实现随机器启动而自启动,也可以隐藏不必要的窗口,比如说控制台窗口等等。
下载:
https://wwr.lanzoui.com/iaC6Hubrukd
配置: 新建一个自建服务,配置上上面bat的脚本。启动方式可以设置为自动启动或者手动启动。
启动和终止程序的话,直接用这个工具找到我们配置好的,启动或者终止即可。