• 阿里云部署 Flask + uWSGI + Nginx


    一、引言

      今天入手了一台阿里云服务器,是centeros 7.5版本。本文解决的是 Flask 的部署问题。假设你的Flask的应用已经完成,现在只是部署的问题,本文以部署我的二次开发微信订阅号的项目(项目代码参考:https://www.cnblogs.com/li-li/p/10331714.html

      我采用的部署方案是:

        - Web 服务器采用 uwsgi host Flask;

        - 用 supervisor 引用 uwsgi 作常规启动服务;

        - 基于 Nginx 作反向代理;

      首先, 阿里云服务器可以通过 SSH 指令在本机的终端进行远程连接

    ssh root@云服务器地址

      输入密码后可连接至云服务器。

    二、安装python3、安装并配置虚拟环境

      参考博客:https://www.cnblogs.com/li-li/p/10192625.html

    三、在虚拟环境下安装flask以及项目的其他依赖

    1、我是用清单文件一次性安装Flask和他的相关依赖的,这样会更快。我的引用清单(requirements.txt)内容如下: 

    certifi==2018.11.29
    chardet==3.0.4
    Click==7.0
    Flask==1.0.2
    Flask-Script==2.0.6
    idna==2.8
    itsdangerous==1.1.0
    Jinja2==2.10
    MarkupSafe==1.1.0
    requests==2.21.0
    SQLAlchemy==1.2.17
    urllib3==1.24.1
    Werkzeug==0.14.1

    2、安装清单文件中依赖的命令如下:

    (wechatEnv) [root@wanglili my_flask]# pip3 install -r requirements.txt

      注意:一定要在运行这个安装之前启用了python 虚拟环境,否则会直接安装到全局去的!

    3、上传 Flask的项目文件,整个项目文件结构如下:

    /root/my_flask
            ├── app
            │   ├── __init__.py 
            │   ├── templates
            │   │       └── index.html
            │   └── views
            │         └── wx_demo.py
            ├── logs
            ├── manager.py
            ├── settings.py
            └── requirements.txt

    四、安装并配置uWSGI

      到此,项目的准备工作已经做完了,我们接下来要安装uWSGI,使用配置文件的方式启动项目,步骤如下:

    (wechatEnv) [root@wanglili my_flask]# pip3 install -i https://pypi.douban.com/simple uwsgi                # 安装uwsgi
    (wechatEnv) [root@wanglili my_flask]# touch uwsgi.ini             # 创建配置文件,写入如下内容
    [uwsgi]
    # uwsgi 启动时所使用的地址与端口
    http-socket = 0.0.0.0:5000
    
    # 指向网站目录
    chdir = /root/my_flask
    
    # python 启动程序文件
    wsgi-file = manager.py
    
    # python 程序内用以启动的 application 变量名
    callable = my_app
    
    # 处理器数
    processes = 4
    
    # 线程数
    threads = 2
    
    # 状态检测地址
    stats = 0.0.0.0:8000

      安装完成后,使用命令启动,验证配置是否正确:

    (wechatEnv) [root@wanglili my_flask]# uwsgi uwsgi.ini

    五、安装Nginx

    1、安装nginx,参考博客

    2、nginx的配置

    server {
            listen       80;
            # 配置成自己服务器的url地址
            server_name  39.xx.xx.130;
    
            ......
    
            location / { 
                # 配置nginx的反向代理功能,自己服务器的5000端口,因为接下来的项目使用flask,且将其运行在自己的服务器的5000端口
                proxy_pass  http://39.xx.xx.130:5000;  
                # root   html;
                # index  index.html index.htm;
            }
    
            ......
      }

    六、安装supervisor并配置

    [root@wanglili my_flask]# easy_install supervisor       # 注意此时要退出虚拟环境执行
    (wechatEnv) [root@wanglili my_flask]# echo_supervisord_conf > /etc/supervisor.conf      # 使用命令生成supervisor的配置文件
    (wechatEnv) [root@wanglili my_flask]# vi /etc/supervisor.conf      # 编辑,在最后写入如下内容
    [program:my_flask]
    # 启动命令入口 command
    =/root/Envs/wechatEnv/bin/uwsgi /root/my_flask/uwsgi.ini
    # 命令程序所在目录 directory
    =/root/my_flask
    # 运行命令的用户 user
    =root
    autostart
    =true autorestart=true
    # 日志地址 stdout_logfile
    =/root/my_flask/logs/uwsgi_supervisor.log
    (wechatEnv) [root@wanglili my_flask]# supervisord -c  /etc/supervisor.conf    # 启动supervisord服务端,指定配置文件启动
    (wechatEnv) [root@wanglili my_flask]# supervisorctl -c  /etc/supervisor.conf    # 进入supervisor的交互模式,可以启动或者关闭服务
    supervisor> start my_flask
  • 相关阅读:
    Android源码之Gallery专题研究(2)
    Android源码之Gallery专题研究(1)
    Android UI 优化——使用HierarchyViewer工具
    如何打开USB OTG功能:
    JavaSE入门学习5:Java基础语法之keyword,标识符,凝视,常量和变量
    Multiply Strings
    android动态控制组件的位置、大小和新的动画
    linux系统编程:线程同步-信号量(semaphore)
    imx6q GPIO功能的用法
    NoSQL数据库概览及其与SQL语法的比較
  • 原文地址:https://www.cnblogs.com/li-li/p/10390364.html
Copyright © 2020-2023  润新知