Flask - 项目部署

WEB 工作原理

  • 客户端 <=> WEB 服务器(nginx)<=> WSGI(uWSGI)<=> Python(Flask)<=> 数据库(MySQL)

nginx 服务器

  • 讲 Linux 时已安装
  • 虚拟主机配置
    • nginx 主配置文件 nginx.conf 最后一个大括号前添加 include vhost /*.config;
    • conf 目录创建 vhost 文件夹
    • vhost 文件夹中创建一个新的虚拟主机配置文件 www.blog.com.conf
    • 里面写上 server,即代表一个虚拟主机(一个网站)
      1
      2
      3
      4
      5
      6
      7
      8
      9
      server {
      listen 80;
      server_name www.blog.com blog.com;

      location / {
      root html/blog;
      index index.html;
      }
      }

uWSGI

  • 说明:实现了 WSGI 协议的应用程序,使用非常方便
  • 安装:pip install uwsgi
  • 配置:
    1
    2
    3
    4
    5
    6
    7
    8
    http			# 采用http协议启动
    socket # 采用socket协议启动
    wsgi-file # 将数据交给那个模块处理
    callable # 具体可调用的对象
    chdir # uwsgi启动后的当前目录
    daemonize # 后台,需要指定一个日志文件
    processes # 指定程序运行的进程数
    threads # 指定程序运行的线程数
  • 简单启动示例(http 协议)
    1
    uwsgi --http 127.0.0.1:5000 --wsgi-file blog.py --callable app
  • socket 方式启动:
    • nginx 转发请求,以 socket 协议转发到 127.0.0.1:5000
      1
      2
      3
      4
      location / {
      include uwsgi_params;
      uwsgi_pass 127.0.0.1:5000;
      }
    • uwsgisocket 协议启动,监听 127.0.0.1:5000
    • 示例:uwsgi --socket 127.0.0.1:5000 --wsgi-file blog.py --callable app
    • 将启动配置写入文件 uwsgi.ini
      1
      2
      3
      4
      5
      6
      [uwsgi]
      socket = 127.0.0.1:5000
      wsgi-file = blog.py
      callable = app
      # 后台启动,需要指定日志文件,日志文件需要有操作权限
      daemonize = /var/log/uwsgi.log

静态文件处理

  • 说明:上面所有的请求都转发是没有必要的,譬如:静态文件直接返回即可
  • 准备:
    • 创建 static 目录
    • 拷贝几个用于测试的静态文件,如:图片、js、css 等
  • 设置转发规则:
    1
    2
    3
    4
    location /static {
    root html/blog;
    # alias html/blog/static;
    }