flask+uwsgi+nginx部署后测试

在生产环境下,可以通过Nginx+uwsgi+Flask部署Web服务,从而达到高并发高稳定性的要求。
如果要部署多个APP,可以采用单个Nginx,多个uwsgi+Flask的方式来实现,如下图所示。

6779176-1543903986debef3.png
多APP.png

2,安装过程

2.1,升级软件包

sudo apt-get update 

 
 

2.2,安装virtualenv和python环境


 
 
  1. sudo apt-get install build-essential python-dev python-pip
  2. sudo pip install virtualenv

2.3,在virtualenv中部署flask app,并测试

  • 创建存放网站的目录
mkdir mysite

 
 
  • 配置virtualenv和安装flask

进入mysite目录,然后创建虚拟环境.env,激活虚拟环境,然后安装flask


 
 
  1. cd mysite
  2. virtualenv .env # 创建Python虚拟环境
  3. source .env/bin/activate # 进入Python虚拟环境,退出命令是deactivate
  4. pip install flask # 在虚拟环境下安装flask
  • 在mysite目录下创建hello.py

 
 
  1. from flask import Flask
  2. app = Flask(__name__)
  3. @app.route("/app1/")
  4. def hello():
  5. return "Hello World!"
  6. @app.route("/app1/flask/")
  7. def hello_flask():
  8. return "Hello World! Hello Flask!"
  9. if __name__ == "__main__":
  10. app.run(host= '0.0.0.0', port= 8080)

需要注意的是,app.run()只是开发时测试使用,故需要放置在if __name__ == "__main__"下,这样uwsgi才不会执行app.run()方法。而host需要设置为0.0.0.0,表示让flask监听机器的所有ip地址的8080端口。

  • 启动测试
    执行以下命令,可以启动Flask。通过浏览器访问192.168.1.32:8080/app1/,如果返回“Hello World!”,则证明启动OK。
python hello.py

 
 

2.4,在virtualenv中部署uwsgi,并测试

  • 进入到Python虚拟环境,并安装uwsgi

 
 
  1. source .env/bin/activate # 进入Python虚拟环境,退出命令是deactivate
  2. pip install uwsgi # 在虚拟环境下安装uwsgi
  • 创建uwsgi目录,做好目录规划如下

 
 
  1. (.env) kevin@orange :~/web/flask/mysite$ tree .
  2. .
  3. ├── hello.py
  4. ├── hello.pyc
  5. ├── uwsgi
  6. │ ├── uwsgi.log
  7. │ ├── uwsgi.pid
  8. │ ├── uwsgi.sock
  9. │ └── uwsgi.status
  10. └── uwsgi.ini
  • 修改uwsgi配置文件

 
 
  1. (.env) kevin@orange:~/web/flask/mysite$ vi uwsgi.ini
  2. [uwsgi]
  3. chdir=/home/kevin/web/flask/mysite/
  4. home=/home/kevin/web/flask/mysite/.env
  5. module=hello
  6. callable=app
  7. master= true
  8. processes=2
  9. chmod-socket=666
  10. logfile-chmod=644
  11. uid=kevin_web
  12. gid=kevin_web
  13. procname-prefix-spaced=mysite
  14. py-autoreload=1
  15. #http=0.0.0.0:8080
  16. vacuum= true
  17. socket=%( chdir)/uwsgi/uwsgi.sock
  18. stats=%( chdir)/uwsgi/uwsgi.status
  19. pidfile=%( chdir)/uwsgi/uwsgi.pid
  20. daemonize=%( chdir)/uwsgi/uwsgi.log

配置参数的含义,可参考http://www.jianshu.com/p/c3b13b5ad3d7

  • 启动uwsgi(在虚拟环境下),并测试

 
 
  1. (.env) kevin@orange :~/web/flask/mysite$ uwsgi --ini uwsgi.ini
  2. [uWSGI] getting INI configuration from uwsgi.ini
  3. (.env) kevin@orange :~/web/flask/mysite$ ps -ef | grep mysite
  4. zhangsh+ 2270 1 0 16:15 ? 00:00:00 mysite uWSGI master
  5. zhangsh+ 2273 2270 0 16:15 ? 00:00:00 mysite uWSGI worker 1
  6. zhangsh+ 2274 2270 0 16:15 ? 00:00:00 mysite uWSGI worker 2
  7. zhangsh+ 2278 2171 0 16:15 pts/1 00:00:00 grep --color=auto mysite

2.5,安装nginx,并配置测试

  • 安装nginx(不在python虚拟环境下)
sudo apt-get install nginx

 
 
  • 编辑配置文件:/etc/nginx/conf.d/flask.conf

 
 
  1. server {
  2. listen 81;
  3. server_name www.mysite.com;
  4. charset utf -8;
  5. client_max_body_size 5M;
  6. location /app1/ {
  7. include uwsgi_params;
  8. uwsgi_pass unix: /home/kevin/web/flask/mysite/uwsgi/uwsgi.sock;
  9. }
  10. location / static {
  11. alias /home/kevin/web/flask/mysite/ static;
  12. }
  13. }
  • nginx启动测试

 
 
  1. kevin@orange :~/web/flask/mysite$ sudo service nginx start
  2. kevin@orange :~/web/flask/mysite$ ps -ef | grep nginx
  3. root 2324 1 0 16:19 ? 00:00:00 nginx: master process /usr/sbin/nginx
  4. www-data 2325 2324 0 16:19 ? 00:00:00 nginx: worker process
  5. www-data 2326 2324 0 16:19 ? 00:00:00 nginx: worker process
  6. www-data 2327 2324 0 16:19 ? 00:00:00 nginx: worker process
  7. www-data 2328 2324 0 16:19 ? 00:00:00 nginx: worker process
  8. zhangsh+ 2330 2171 0 16:20 pts/1 00:00:00 grep --color=auto nginx

2.6,服务测试

  • Http访问测试,一切OK

 
 
  1. kevin@Blue :~$ curl http:/ /192.168.1.32:81/app1/flask/
  2. Hello World! Hello Flask!
  3. kevin@Blue :~$ curl http:/ /192.168.1.32:81/app1/
  4. Hello World!
  • 浏览器访问测试,一切OK
6779176-efb4cc618a5b9869.png
test 1.png
6779176-dd54308e674c1ca8.png
test 2.png

3,参考资料

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值