Flask采用Virtualenv+Supervisor+Nginx部署应用

--

首先是概念解释

  1. WSGI服务器,负责我们的app与服务器的交互,常用的有Gunicorn
  2. Web服务器,是个HTTP服务器,就相当于tomacat于Java,常用的有Nginx

Web服务器中,Nginx是一款面向性能设计的HTTP服务器,相较于Apache、lighttpd具有占有内存少,稳定性高等优势。

部署工具:

  1. Virtualenv,用户创建独立的虚拟的Python运行环境,可以解决版本,依赖等问题
  2. 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

参考ubuntu安装和使用supervisor

Ubuntu安装Curl的方法

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

参考文档

Ubuntu 安装mysql和简单操作

“error: command 'x86_64-linux-gnu-gcc' failed with exit status 1” in virtualenv

ubuntu下mysql-python模块的安装

how to install the SQLALchemy on the ubuntu?


声明本文内容来源于:Flask应用部署与运维

特地感谢极客学院的shin0922老师,真的受益匪浅,如果涉嫌侵权,请告知我,我将删除文章

最新文章

  1. Android开发自学笔记(Android Studio)—4.1布局组件
  2. RN的像素及布局
  3. mysql innodb锁简析(2)
  4. poj 2411 Mondriaan's Dream(状态压缩dP)
  5. mysql中的count(primary_key)、count(1)、count(*)的区别
  6. MySQL - 日志管理
  7. thinkphp分页时修改last显示标题
  8. http status 400,http 400,400 错误
  9. 在Windows环境下设置terminal下调试adb
  10. Tenka1 Programmer Contest 2019
  11. 第46章 发现端点(Discovery Endpoint) - Identity Server 4 中文文档(v1.0.0)
  12. monkey日志管理
  13. python3+selenium入门15-执行JavaScript
  14. bitset里面一些函数的用法
  15. Jsp俩大内置对象学习
  16. python第二十二天-----在做作业当中............
  17. Linux环境下的Scala环境搭建
  18. Postgresql学习笔记
  19. 前端js上传文件插件
  20. 第N次学习javaIO之后

热门文章

  1. oracle函数笔记(1)
  2. 如何用纯 CSS 创作一种侧立图书的特效
  3. Rust所有权语义模型
  4. tcpcopy简单用法
  5. 3D地形中的道路模拟
  6. LINUX常用文件说明
  7. Oracle数据库学习之存储过程--提高程序执行的效率
  8. 前端传list,springmvc接收list的方法
  9. Android CircleImageView圆形ImageView
  10. hdu 1528 二分匹配