ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

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

2021-10-19 13:00:58  阅读:182  来源: 互联网

标签:__ Gunicorn ssl nginx Python app server Nginx home


Flask通过pip安装

pip install 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

 

标签:__,Gunicorn,ssl,nginx,Python,app,server,Nginx,home
来源: https://www.cnblogs.com/OoGKoO/p/15424281.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有