欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Flask学习11:阿里云新手Flask + nginx + uwsgi + ubuntu的完整项目部署教程

程序员文章站 2022-06-11 14:38:46
...

Flask项目部署

web工作原理

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

nginx安装

源码安装、apt-get install …

sudo /usr/local/nginx/sbin/nginx -s reload

添加虚拟主机

  1. 在nginx的主配置文件最后一个大括号的上面添加:

    include vhost/*.conf;

  2. 在conf/下新建文件夹,用于保存所有的虚拟主机配置文件

    mkdir vhost

  3. vhost目录下新建一个虚拟主机的配置文件(sudo vim idandan.vip.conf)

server{
    listen 80;
  server_name idandan.vip;
  location / {
      root html/blog;
      index index.html;
  }
}

# sudo vim idandan.vip.conf
  1. 在html目录下创建blog文件夹,在blog下新建index.html

    Hello World

  2. 重启nginx(sudo /usr/local/nginx/sbin/nginx -s reload)

  3. 添加本地的域名解析,修改文件:(C:\Windows\System32\drivers\etc\hosts)

    最后一行添加:139.196.81.238 idandan.vip

  4. 测试,在浏览器地址栏输入:idandan.vip

uWSGI

  1. 安装:pip3 install uwsgi
  2. 配置:

    http:    # 采用http协议
    socket:      # 采用socket协议
    wsgi-file    # 将数据交给哪个模块
    callable # 具体可调用的对象
    chdir        # 指定uwsgi启动后的当前目录
    daemonize    # 后台运行,需要指定一个日志文件
    
    
    # blog.py文件
    
    from flask import Flask
    app = Flask(__name__)
    
    @app.route('/')
    def index():
     return 'Hi'
    
    if __name__ == '__main__':
     app.run()
    
    1. 简单实例

      1.在blog目录下创建blog.py文件,里面写上flask启动代码用于测试
      2.启动:
          sudo uwsgi --http host:port --wsgi-file blog.py --callable app
      
    2. socket方式启动

      1. nginx转发请求:
        python
        server{
        listen 80;
        server_name idandan.vip;
        location / {
        # root html/blog;
        # index index.html;
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:5000;
        }
        }
      2. 以socket方式启动

        sudo uwsgi --socket 127.0.0.1:5000 --wsgi-file blog.py --callable app
      3. 将启动参数配置写进配置文件

        [uwsgi]
        socket  = 127.0.0.1:5000
        wsgi-file = blog.py
        callable = app
        
        (blog/vim uwsgi.ini)
        启动:sudo uwsgi wsgi.ini

      静态文件处理

      1. 准备静态资源
        python
        1.在项目根目录下(blog)创建static目录
        2.将图片拷贝到static下
      2. 配置nginx转发

        
        # 添加一个location
        
        location /static{
         # root html/blog;
        
        # 或
        
        alias html/blog/static;  # 两种方式都可以
        }