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

书接上回。。。

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

部署我们的应用

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

scp -r USER/FILE/LOCATION [email protected]:~/
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))