今天做一个flask项目,需要部署在服务器上面。系统为centOS7.5
写好了flask项目,直接在服务器上运行nohup python main.py理论上,就可以了,一开始还能访问的挺舒服的,,,,不过很快访问的速度会卡顿甚至直接无法服务像遭受了ddos一样黑化了,黑化的时间会因服务器提供商不同而异(没错,我在多个不同的服务器提供商的服务器上尝试过,哈哈哈)。在百度搜索之后说,如果要真正部署在生产环境下的话,那就需要使用uwsgi+nginx。第一次尝试,我只用了uwsgi发现效果还挺不错的,而且完全可用。nginx是反向代理,理论上不使用,项目也是可以成功访问的。所以今天先记录到这里,以下为笔记:
- 首先,安装uwsgi。
pip install uwsgi (conda install不行,但是用anaconda环境的照样可以pip install)- 配置uwsgi的配置文件。方法:在任何一个位置新建一个文件 XXX.ini(名字也自己起)然后写下下面的东西:
[uwsgi]
http=0.0.0.0:80 //想打开那个端口开哪个
wsgi-file=/path/to/flask_project/main.py //就是你的flask项目里面的主程序啦 要绝对路径哦
callable=app //flask独有的配置,就是用来调用的那个对象的名字,我的是app(应该大部分的人都一样吧)
touch-reload=/path/to/flask_project/ //项目文件夹的绝对路径PS:这只是最简单的方法之一,当然这个配置文件可以写很多东西在上面,百度上可以搜到。 另外,需要注意,在你的flask主程序里面,app.run()里面最好不要加port、host参数等等,直接就可以了。。
- 运行uwsgi程序:
nohup uwsgi --ini /path/to/XXX.ini
XXX.ini就是你上面创建的那个文件啦。
对了,有些时候nohup找不到uwsgi这个命令,那就要把uwsgi的绝对路径输进去啦。
好了,现在可以从外网访问你的flask项目了,鲁棒性瞬间++
这是使用uwsgi部署的第一个笔记,以后会逐步写一些更加深入的东西。