Flask项目部署(Nginx+Gunicorn)
flask项目刚开始在服务器上部署的时候,没有选择任何框架,只是在本地安装了python之后,直接命令行启动运行的。这样部署服务是可用的,但是经常会挂掉。同时,由于这种模式只能开单线程,性能也比较差。为了解决稳定性的问题,决定使用Nginx+Gunicorn+flask部署服务,目的在于提高服务的稳定性,提高服务的性能。
一.项目文件准备
1.安装python环境:
1
2
|
$
sudo
apt
-
getupdate
$
sudo
apt
-
getinstall
python
-
dev
python
-
pip
python
-
virtualenv
|
2.安装Nginx:
1
|
$
sudo
apt
-
get
install
nginx
|
3.新建一个文件夹,修改文件夹权限:
1
2
|
$
sudo
mkdir
/
var
/
www
/
myflask
$
sudo
chmod777
/
var
/
www
/
myflask
|
4.上传你的项目文件:
1
|
$
scp
-
r
myflask
root
@
www
.
mydomain
.
com
:
/
var
/
www
/
myflask
|
二.Gunicorn:
1.安装Gunicorn: Gunicorn 应该装在你的 virtualenv 环境下,安装前记得激活 venv
1
|
(
venv
)
$
pipinstall
gunicorn
|
2.运行Gunicorn:
1
|
(
venv
)
$
gunicorn
-
w4
-
b127
.
0.0.1
:
8080
manage
:
application
|
参数说明: -W 4 :指定Gunicorn线程数 127.0.0.1:8000 :本机地址及端口号 manage:程序入口文件(不包括后缀/模块名) application:flask实例的名称 到目前为止,如果安装顺利切正确的话,你在浏览器输入127.0.0.1:8000是可以正常访问你的程序的。如果不能打开,请仔细检查你的IP地址和端口号(如果是本机,IP地址就是127.0.0.1:8000;如果是远程机器,注意设置为0.0.0.0:8000)
三.Nginx:
1.Nginx安装: 安装教程网上很多,不细讲 2.修改nginx配置文件:
1
2
3
4
5
6
7
8
9
10
|
server
{
listen
80
;
server_name
example
.
org
;
# 这是HOST机器的外部域名,用地址也行
location
/
{
proxy_pass
http
:
/
/
127.0.0.1
:
8080
;
# 这里是指向 gunicorn host 的服务地址
proxy_set_header
Host
$
host
;
proxy_set
_header
X
-
Forwarded
-
For
$
proxy_add_x_forwarded_for
;
}
}
|
3.重启Nginx:
1
|
sudo
service
nginx
restart
|
至此,flask项目已经成功部署了,打开浏览器输入地址访问,发现确实比之前用flask框架自带的web server要快的多。
可以参考这个
https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-gunicorn-and-nginx-on-ubuntu-14-04