目标

在Ubuntu 16.04+宝塔面板(nginx1.14)的环境中,实现对flask的简单部署,并且支持在一个域名下对多个flask服务进行单独访问,从而实现一定程度的扩展性。

nginx配置

为了实现目标中的扩展性,我的计划是建立一个单独的虚拟主机,专门用作访问服务器上的flask服务。

  1. 所以首先新建一个站点,并设置域名,我在此处设置的是sspku.app这个域名,未来将通过sspku.app/xxxxx的形式访问各服务。在宝塔面板中建立站点时,不设置ftp/php/mysql等,只建立一个纯静态的站点即可,目的是使用nginx做前端的web server。
  2. 接下来在上一步新建好的站点的伪静态规则中,添加测试服务的访问url,将请求转发给uwsgi处理
location /test {
    include uwsgi_params;
    uwsgi_param SCRIPT_NAME /test;
    uwsgi_pass 127.0.0.1:10000;
}

测试发现uwsgi_param SCRIPT_NAME可能不是必须的。

虚拟环境+uwsgi

  1. conda创建虚拟环境
  2. source 激活虚拟环境
  3. pip freeze +pin install -r
  4. pip install uwsgi
  5. 创建uwsgi配置文件,关键在于callable/mount/manage-script-name的设置
[uwsgi]
socket=127.0.0.1:10000
callable=app
mount=/test=run.py
manage-script-name=true
master=true
processes=4
threads=2
  1. uwsgi -i uwsgi.ini即可

supervisor

conda虚拟环境的加入方法:

environment加入虚拟环境的bin目录即可