这段时间用Flask写了一个小项目, 尝试部署到阿里云服务器上,本来项目并不复杂,可是部署的时候却踩了很多坑。
通过PyCharm创建项目,在app.py中做了一些配置后,是这样的:
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
显然,这样是失败的,查了一些资料,Flask运行app.run()是默认的127.0.0.1:5000, 命令行显示如下:
root@iZwz98p61d8twwl8rrjhj5Z:~/iAsk/iask# python app.py
* Serving Flask app "app" (lazy loading)
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
然后将app.run()指定host参数,app.run(host=’0.0.0.0’), 这样解决的一个问题,外网理论上是能够访问的, 然而并没有,还是访问不了…..这个时候,又想抓狂了, 然后又将5000端口改成8000,9000, 8080等等等等, 反正就是不行, 本地浏览器访问服务器公网地址仍然无法访问。
最终,我在网上查了N种方法,反复测试, 终于找到问题所在, 原来阿里云服务器安全组里要添加访问的端口, 而这个过程要在阿里云服务器的网页上操作。
如图是我为Nginx添加的80端口,
这次将app.run()添加80端口,app.run(host=’0.0.0.0’, port=80), 这样再从外网访问就可以了。
当然这样部署Flask肯定是不可以的,根本无法应用与生成环境,这只能算正式部署前的一个网络访问测试。通过Nginx,WSGI进行正式部署还有待研究。