/flask_web

flask小型博客与部署

Primary LanguageHTML

flask 小型博客

项目构架

  • nginx 作为web服务器

  • gunicorn 提供 WSGI HTTP 服务

  • flask 作为后端

  • mariadb 作为数据库

环境

debian 9

python 3.7 (亲测依赖模块不适用于2.7与3.8)

部署

  1. 下载所需要的组件
apt install nginx

apt install mariadb-server 

#apt install mariadb-client

apt install python3

apt install python3-pip

pip3 install gunicorn

pip3 install supervisor

apt install git

cd 到你想存放网站数据的地方

git clone 本项目
  1. 修改nginx配置文件

在 http{ } 中增加该server块,用于将80代理到gunicorn的8000端口

  server {
    listen 80;
    server_name example.org;
    access_log  /var/log/nginx/example.log;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
  }

如果nginx已经启动,则重载配置文件

nginx -s reload

  1. 使用supervisor监控gunicorn的运行

如果是第一次使用supervisor,请参考http://supervisord.org/

3.1 生成supervisor的配置文件

sudo echo_supervisord_conf > /etc/supervisord.conf

3.2 修改配置文件,在其中加入

[program:gunicorn]
command=gunicorn app:app
directory=/path/to/project # 此处改为项目地址,也就是flask_web目录
user=nobody
autostart=true
autorestart=true
redirect_stderr=true

这是在监控目录中加入程序:gunicorn

3.3 启动supervisor

supervisord -c /etc/supervisord.conf

3.4 supervisor理解

supervisor分为两部分

supervisord是一个服务端,监听于9001端口

supervisorctl是一个客户端,用于控制与查看server的状态

  1. 数据库的部署与启动

mysql的rpm安装比较容易出错,所以建议采用apt install mariadb的方式安装

它的原理也和supervisor类似,一个server,一个client。

mysqld 启动服务端,配置好账号密码,如果要远程控制数据库的话要,开启远程访问,不然只能本地使用数据库。

4.1 创建数据库flask

4.2 修改config.py文件中的

SQLALCHEMY_DATABASE_URI = 'mysql://user:password@ip:3306/flask'
  1. 数据库迁移同步

用于完成ORM映射

cd 项目目录

python3 manage db init

python3 manage db upgrade

python3 manage db migrate
  1. 项目部署完毕!