Flask Nginx uWSGI&gunicorn

Flask Nginx uWSGI&gunicorn

使用Nginx部署Flask uWSGI和gunicorn服务器

Flask

  • 创建项目文件夹
    mkdir flask_t && cd flask_t

  • 配置python虚拟环境
    由于是Ubuntu 16.04版本,所以需要安装python3-venv
    sudo apt-get install python3-venv
    python3 -m venv venv
    激活. /venv/bin/activate

  • 安装相应的包

pip install flask
pip install gunicorn
pip install uWSGI
from flask import Flask

app = Flask(__name__)


@app.route('/')
def hello_world():
    return '<title>hello nginx and flask and gunicorn</title>Hello, World!'

Nginx安装

  • 安装PCRE库
    sudo apt-get install libpcre3 libpcre3-dev

  • 下载Nginx包
    wget http://nginx.org/download/nginx-0.7.66.tar.gz
    解压tar zxf nginx-0.7.66.tar.gz

  • 下载zlib库
    sudo apt-get install zlib1g zlib1g-dev

  • OpenSSL
    sudo apt-get install openssl libssl-dev

  • 编译三部曲

./configure
make
sudo make install

在这里插入图片描述
这个版本的Nginx的安装路径还是在/usr/local/nginx
在这里插入图片描述
后面的Nginx默认的安装路径已经改为了/etc/nginx/
在这里插入图片描述

  • 创建nginx文件设置守护进程,并添加执行权限
caisi@ubuntu:~/src/flask_t$ cat /etc/init.d/nginx 
#! /bin/sh

set -e 
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="nginx daemon"
NAME=nginx
DAEMON=/usr/local/nginx/sbin/$NAME
SCRIPTNAME=/etc/init.d/$NAME

test -x $DAEMON || exit 0

d_start(){
	$DAEMON || echo -n " already running"
}

d_stop(){
	$DAEMON -s quit || echo -n " not running"
}

d_reload(){
	$DAEMON -s reload || echo -n " could not reload"
}

case "$1" in
start)
	echo -n "Starting $DESC: $NAME"
		d_start
		echo "."
;;
stop)
	echo -n "Stopping $DESC: $NAME"
		d_stop
		echo "."
;;
reload)
	echo -n "Reloading $DESC configuration..."
		d_reload 
	echo "reloaded."
;;
restart)
	echo -n "Restarting $DESC: $NAME"
		d_stop
		sleep 2
		d_start
		echo "."
;;
*)
	echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2
	exit 2
;;
esac

exit 0

sudo chmod +x /etc/init.d/nginx

刷新系统级别初始化脚本update-rc.d -f nginx defaults

  • 启动和查看状态
    service nginx start
    service nginx status

使用uwsgi或gunicorn

  • 使用uwsgi启动flask
    (venv) caisi@ubuntu:~/src/flask_t$ uwsgi --http 127.0.0.1:8000 --module app:app

  • gunicorn启动命令
    (venv) caisi@ubuntu:~/src/flask_t$ gunicorn -b 127.0.0.1:8000 app:app

  • 注意这里一次启动一个就可以了

[nginx配置]

  • 这里只改了location下的内容
    在这里插入图片描述

总结

  • 可能是比较老的nginx版本了,又或者是nginx的安装配置本来就比较麻烦,开始安装一些库的时候有很多库名都不一样的,比如openssl-dev,还好后面都解决了,后面看到很多安装nginx都是使用docker的
  • 看了nginx的资料,一大堆也没记住多少,或者也没用到多少,最后还是在flask官方文档中的靠谱
  • 最后看了一些使用docker部署flask+uWSGI、gunicorn的,感觉还差数据库这块就差不多了
  • 循序渐进,昨天看了关于docker的资料,今天看了nginx的,在去看一下使用docker部署上线的就感觉简单多了

https://soft.ryana.cn/eBook/15_Nginx%E7%9B%B8%E5%85%B3/%E5%AD%A6%E4%B9%A0Nginx%20HTTP%20Server%E4%B8%AD%E6%96%87%E7%89%88.pdf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值