使用virtualenv, uwsgi, nginx来布署flask

目录(?)[+]

本文讲述了如何使用virtualenv, uwsgi, nginx来布署flask的步骤。

升级软件包

执行以下命令,保证你的机器安装了最新的软件包。

sudo apt-get update 
sudo apt-get upgrade

安装python和virtualenv

sudo apt-get install build-essential python-dev python-pip 
sudo pip install virtualenv

创建存放网站的目录

例如,在/home/gzlihao/webservice目录下创建mysite目录

mkdir mysite

配置virtualenv和安装flask, uwsgi

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

cd mysite 
virtualenv .env 
source .env/bin/activate 
pip install flask 
pip install uwsgi

在mysite目录下创建hello.py

hello.py的内容如下:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=8080)
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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

配置uwsgi

增加配置文件uwsgi.ini,内容如下:

[uwsgi]
chdir=/home/gzlihao/webservice/mysite
home=/home/gzlihao/webservice/mysite/.env
module=hello
callable=app
master=true
processes=2
socket=%(chdir)/mysite.sock
chmod-socket=666
logfile-chmod=644
daemonize=%(chdir)/uwsgi.log
uid=gzlihao
gid=gzlihao
procname-prefix-spaced=mysite
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

启动uwsgi

uwsgi –ini uwsgi.ini

(注意参数是两个 - 然后加上ini,该死的CSDN,我都打两个 - 了,还是显示一个 :() 
可以看到mysite目录下新增了以下文件 
mysite.sock以及uwsgi.log

安装nginx

deactivate 
sudo apt-get install nginx

配置nginx

在/etc/nginx/sites-availabel目录下创建mysite.conf文件,内容如下:

server {
    listen 80;
    server_name www.mysite.com;
    charset utf-8;

    client_max_body_size 5M;

    location / {
         include uwsgi_params;
         uwsgi_pass unix:/home/gzlihao/webservice/mysite/mysite.sock;
     }

     location /static {
         alias /home/gzlihao/webservice/mysite/static;
     }
}
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

为了使用这个配置文件生效,创建mysite.conf的链接文件:

cd /etc/nginx/sites-enabled 
ln -s ../sites-available/mysite.conf mysite.conf

nginx重启

重启前先对nginx配置进行语法检查

nginx -t

然后对nginx进行平滑重启

kill -HUP 27198

其中27198 为nginx主进程号,可以使用ps -efl | grep nginx | grep master获取

访问网站

编辑C:\Windows\System32\drivers\etc\hosts文件,增加一项 
[布署mysite的ip地址] www.mysite.com 
例如 
192.168.229.166 www.mysite.com

打开浏览器,输入www.mysite.com,回车,即可以看到输出结果。 
运行结果


转自:http://blog.csdn.net/lihao21

参考资料

  1. Running flask with virtualenv, uwsgi, and nginx
  2. Serving Flask With Nginx
  3. flask uWSGI
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值