您的位置:首页 > 运维架构 > Nginx

使用virtualenv, uwsgi, nginx来布署flask

2015-07-23 15:44 741 查看
版权声明:本文为博主原创文章,转载请注明出处: http://blog.csdn.net/lihao21 或 leehao.me

目录(?)[+]

本文讲述了如何使用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


参考资料

Running flask with virtualenv, uwsgi, and nginx
Serving Flask With Nginx
flask uWSGI
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android eclipse svn