美文网首页
在阿里云上部署我们的Flask App(2)

在阿里云上部署我们的Flask App(2)

作者: 何赛艾慕 | 来源:发表于2019-06-03 15:10 被阅读0次

    书接上回。。。

    上一节分享了一下阿里云上的一些基本配置,诸如防火墙,这些虽然看似与部署无关,但是都是整个实践过程中为了确保安全性和便宜性不可缺少的事宜。

    部署我们的应用

    首先要明确的是,把我们的代码推送到linux服务器上的方式有很多,我用过的有git管理和scp指令。git的方法很常用,在这里就不多说了,scp是常用的基于linux系统下ssh远程拷贝的命令,使用scp的话就可以绕过git管理,是一种更加简单的方式,当然使用git的习惯还是很好的,在这里我们使用“scp”指令进行操作。

    scp -r USER/FILE/LOCATION USERNAME@00.00.00.00:~/
    
    image.gif

    指令同Linux下常用的mv差不多,这里不多作介绍。

    同时如果使用这种方法,你需要手动添加一个"requirements.txt"文件夹,以“=”的格式写上每个扩展所需的依赖,当然为了方便起见,最好创建一个虚拟环境,将上述的依赖安装到虚拟环境中。

    上述步骤做好之后,如果你的敏感信息没有暴露在外面,那么你可以使用"flask run"查看你的应用了,注意,为了让我们可以从本机环境中看到应用运行的状态,我们使用:

    flask run --host=0.0.0.0
    
    image.gif

    注意我们上文开放的端口,有可能你即使开放了5000端口,在本地浏览器输入:

    ***.***.***.***:5000      //***代表你的共有IP
    
    image.gif

    仍然可能打不开,这是因为阿里云的安全组并没有开放5000端口,你需要手动设置一下

    image image.gif

    Nginx Gunicorn and Supervisor

    当然,实际的应用部署肯定不能这么草草了事,我们需要更健壮的服务器来运行我们的实例。简单的说,Nginx是一款Web服务器,很方便,而且有不错的性能,但是他只能处理CSS,JS等文件,不能识别Python代码,因此,Gunicorn就有了用武之地。gunicorn是一个python Wsgi http server,只支持在Unix系统上运行,来源于Ruby的unicorn项目。Gunicorn使用prefork master-worker模型,能够与各种wsgi web框架协作。

    当然不只是这些,如果你想不用一直开着窗口网站也可以运行,那么Supervisor之类的软件就必不可少了,Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,同时也可以对后台程序进行监控。通过这三个依赖相互结合,我们就可以创建出拥有不错性能的小博客。

    首先删除默认配置并写入新配置:

    sudo rm /etc/nginx/sites-enabled/default
    sudo vim /etc/nginx/sites-enabled/flaskblog
    
    
    image.gif
    //Nginx:
    
    server{
            listen 80;
            server_name **.**.**.**;
    
            location /static {
                    alias /home/**/**/app/static;
    
            }
    
            location / {
                    proxy_pass http://localhost:8000;
                    include /etc/nginx/proxy_params;
                    proxy_redirect off;
            }
    }
    
    
    image.gif

    同时可以开启80端口,具体操作就不说了。

    使用下面操作重启Nginx,当然这时候你可以看到CSS文件,却看不到网页的样子,原因就是我们之前所说的Nginx不识别Python Code。

    sudo systemctl restart nginx
    
    image.gif

    这时我们使用:

    gunicorn -w 3 test:app
    
    image.gif

    关于gunicorn我们在Flask部署在Heroku一文中已经提到了,这里不再详述。

    最后我们配置一下Supervisor:

    [program:flaskblog]
    directory=/home/**/tutorial
    command=/home/**/tutorial/venv/bin/gunicorn -w 3 test:app
    user=**
    autostart=true
    autorestart=true
    stopasgroup=true
    killasgroup=true
    stderr_logfile=/var/log/flaskblog/flaskblog.err.log
    stdout_logfile=/var/log/flaskblog/flaskblog.out.log
    
    
    image.gif

    并创建我们需要的文件夹,重启Supervisor即可得到成品的网站啦。

    下一节,也就是最后一节,我们会看看域名怎么和IP绑定。

    相关文章

      网友评论

          本文标题:在阿里云上部署我们的Flask App(2)

          本文链接:https://www.haomeiwen.com/subject/mlmcxctx.html