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