云服务器nginx+gunicorn+flask 部署详解

需求

  • 使用flask开发了一个小型网站,想要快速部署到云服务器上,查了一些资料发现使用gunicorn+nginx即可满足基本需求。

环境准备(python-dev、 python-pip、 python-virtualenv、nginx、others.)

$ sudo apt-get update
$ sudo apt-get install python-dev python-pip python-virtualenv
$ sudo apt-get install nginx
$ sudo apt-get install others...

开始部署

step1-上传代码(使用scp上传,也可使用IDE快速部署deploy)

scp -r website  root@你服务器的ip:/home/www/my_flask

step2-切换到虚拟环境、安装gunicorn、配置并测试运行

切换到虚拟环境

source /home/www/my_flask/venv/bin/activate

安装gunicorn

(venv) $ pip install gunicorn
(venv) $ pip install -r requirements.txt

配置gunicorn config文件

sudo vi /home/www/gun.conf
import os
bind='0.0.0.0:5000'
workers=4
backlog=2048
worker_class="gevent" #这里选择gevent模式
debug=True
proc_name='gunicorn.pid'
pidfile='/var/log/gunicorn/debug.log'
loglevel=‘debug'

以gunicorn测试运行flask app,这里引导文件为run.py,运行程序为app.run()

(venv)$ gunicorn -c /home/www/gun.conf run:app

step3-配置nginx并启动

vi /etc/nginx/sites-available/default

server {
    listen 80;
    server_name 云服务器IP地址

    location / {
        proxy_pass http://0.0.0.0:5000; #这里是flask程序的host和端口
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
  }

启动nginx

sudo service nginx start

step4—将gnicorn作为服务运行

sudo vi /etc/init/website.conf

#config#:::
description "The website service"

start on runlevel [2345]
stop on runlevel [!2345]


respawn
setuid root
setgid www-data

env PATH=/home/www/my_flask/venv/bin/
chdir /home/www/my_flask

exec gunicorn -c /home/www/gun.conf run:app
#config over#:::

测试运行

sudo service website start

结束语

  • 实际部署中碰到了一些问题,�基本可以通过查看对应的日志找到原因。

你可能感兴趣的:(云服务器nginx+gunicorn+flask 部署详解)