首页 > 技术文章 > 阿里云部署 Flask + uWSGI + Nginx

li-li 2019-02-17 10:43 原文

一、引言

  今天入手了一台阿里云服务器,是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

 

推荐阅读