Flask采用Virtualenv+Supervisor+Nginx部署应用
--
首先是概念解释
- WSGI服务器,负责我们的app与服务器的交互,常用的有Gunicorn
- Web服务器,是个HTTP服务器,就相当于tomacat于Java,常用的有Nginx
Web服务器中,Nginx是一款面向性能设计的HTTP服务器,相较于Apache、lighttpd具有占有内存少,稳定性高等优势。
部署工具:
- Virtualenv,用户创建独立的虚拟的Python运行环境,可以解决版本,依赖等问题
- Supervisor,负责管理应用:应用的开启,关闭,以及多应用的管理等
Virtualenv
安装
sudo pip install virtualenv
使用
#创建虚拟环境
virtualenv venv
#启动虚拟环境
source venv/bin/activate
#停止虚拟环境
deactivate
Supervisor
安装
sudo apt-get install supervisor
使用
配置Supervisor的配置文件的路径:/etc/supervisor/conf.d/*conf
cd /etc/supervisor/conf.d/*conf
在这里目录下,我们创建我们应用的配置文件,这样Supervisor才能读取到
sudo vim app.conf
里面的内容输入(内容其实就是执行我们的Python文件):
[program:app]
command = python /home/tengfei/api01/test/TestTo/TODO-orm/app.py
//注,这个配置是和后文中Nginx配置好后对象的9000的转发端口执行的操作
[program:todo]
command = /home/tengfei/api01/test/TestTo/TODO-orm/venv/bin/gunicorn -b 127.0.0.1:9000 app:app
directory = /home/tengfei/api01/test/TestTo/TODO-orm
更改配置文件后,要让supervisor的配置文件生效,执行
supervisorctl reload
启动supervisor:
sudo service supervisor start
重启:
sudo service supervisor restart
查看supervisor程序当前的状态
sudo supervisorctl
这里面可以使用status
指令来查看程序的运行状态
app名字:就是刚才配置配置文件中[program:app]的,比如我这里输入 start app就可以了,以后同上:
start app名字 # 启动app
stop app # 停止app
需要注意的是supervisor发生错误的话,需要它的日志中才能看到
supervisor错误日志地址:
/var/log/supervisor/supervisord.log
Nginx
安装
sudo apt-get update
sudo apt-get install nginx
配置
nginx的也是把程序运行需要的配置文件放到指定的目录下即可
cd /etc/nginx
在/etc/nginx
子目录下,有两个文件要格外关注关注一下:
sites-available :可用的配置文件
sites-enabled :生效的配置文件
1:先在sites-available 目录下创建配置文件vim api_app
里面写上:
# api_app内容
server {
listen 81;
location /static {
alias /home/tengfei/api01/test/TestTo/TODO-orm/;
}
location / {
proxy_pass http://127.0.0.1:9000;
}
}
注,listen 81;
:意思是nginx监听的是81端口,我开始监听80端口,结果和默认的冲突了;location /static
:是把静态文件转发到后文中的目录下;location /
:是把动态请求转发到本机(服务器)的9000端口,上面文件的内容的格式可自行百度。我开始
然后创建软连接到sites-enabled
sudo ln -s ../sites-available/api01_app .
然后重新启动nginx
sudo service nginx reload
//这代表nginx重启成功
* Reloading nginx configuration nginx [ OK ]
使用
启动
sudo service nginx restart
重启
sudo service nginx reload
查看nginx的状态
sudo service nginx status
参考:How To Install Nginx on Ubuntu 14.04 LTS
gunicorn
安装
apt-get install gunicorn
使用
gunicorn -b 0.0.0.0:8080 run:app
尝试在虚拟环境中运行一下程序,看看是否可以成功
//注意下面语句前面的run是指运行的python文件的的名字为run.py的话,执行run:app,如果为app.py那就是app:app
参考文档
“error: command 'x86_64-linux-gnu-gcc' failed with exit status 1” in virtualenv
how to install the SQLALchemy on the ubuntu?
声明本文内容来源于:Flask应用部署与运维
特地感谢极客学院的shin0922老师,真的受益匪浅,如果涉嫌侵权,请告知我,我将删除文章