Nginx+Gunicorn+Python Flask部署网站到服务器

Flask通过pip安装

pip install flask

 

项目目录构成

Nginx+Gunicorn+Python Flask部署网站到服务器

 

 

 

后端:

启动文件main.py,运行该文件部署网站到localhost:8080

from flask import Flask,render_template

app=Flask(__name__)

#注册蓝图
from app import daka_blue,home_blue
app.register_blueprint(daka_blue)
app.register_blueprint(home_blue)

#起始页面
@app.route('/')
def index():
    return render_template('index.html')

if __name__ == '__main__':
    app.run(host='0.0.0.0',port=8080,debug=True)

 

 

蓝图文件__init__.py,各个py代码通过该文件和Blueprint模块连接

from flask import Blueprint

daka_blue=Blueprint('daka', __name__, url_prefix='/daka')
home_blue=Blueprint('home', __name__, url_prefix='/home')

from . import daka,home

 

后台文件,通过__init__.py文件连接到main.py

举例:

from flask import Flask,request,render_template
import pymysql
from app import home_blue

@home_blue.route('/')
def home():
    # return  render_template('home.html')
    return "home"

 

前端:

html文件放置在templates目录

css、js、img等放在static目录

static内文件调用举例:

<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='css/index/index.css')}}"/>

 

云服务器CentOS系统部署网站:

Gunicorn:

首先安装Gunicorn

pip install gunicorn

 

进入main所在的目录,输入以下命令:

gunicorn -w 4 -b 0.0.0.0:5000 -D main:app

-w表示工作进程数,设置4个进程以充分利用资源

-b是部署所在端口,这样就不是在8080端口,而是在5000端口

main为主程序,不带.py

app是main.py内的实例名

 

Nginx:

使用Nginx对Gunicorn映射的5000端口进行反代理

进入/etc/nginx,打开nginx.onf

vim /etc/nginx/nginx.conf

 

将server改为以下:

server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  127.0.0.1:5000;
        return 301 https://$host$request_uri;
        
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;


           location / {
            proxy_pass http://*.*.*.*:5000; # 这里是指向 gunicorn host 的服务地址,*.*.*.*为服务器IP
           }

           error_page 404 /404.html;
           location = /404.html {
           }

           error_page 500 502 503 504 /50x.html;
            ocation = /50x.html {
            }
}
    

 

设置https证书:

在nginx.conf后面添加一个server:

server {
    #SSL 访问端口号为 443
    listen 443 ssl; 
    #填写绑定证书的域名
    server_name 你的域名; 
    #证书文件名称
    ssl_certificate ssl/Nginx/*.crt; 
    #私钥文件名称
    ssl_certificate_key ssl/Nginx/*.key; 
    ssl_session_timeout 5m;
    #请按照以下协议配置
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
    ssl_prefer_server_ciphers on;
    location / {
    #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
        proxy_pass http://*.*.*.*:5000; # 这里是指向 gunicorn host 的服务地址
            }
    }

}

 

重启nginx完成对Gunicorn的反代理

nginx -s reload

 

上一篇:Django之gunicorn部署


下一篇:react-router 路由跳转遇到的坑