Flask采用Virtualenv+Supervisor+Nginx部署应用
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老师,真的受益匪浅,如果涉嫌侵权,请告知我,我将删除文章
Flask采用Virtualenv+Supervisor+Nginx部署应用的更多相关文章
- CentOS下实现Flask + Virtualenv + uWSGI + Nginx部署
一.项目简介 在本文中,将一步一步搭建一个简单的Flask + Virtualenv + uWSGI + Nginx 架构的Web服务,可以作为新手的学习也可作为记录备忘. 如果你安装好了环境并有一定 ...
- ubuntu下python+tornado+supervisor+nginx部署
由于项目需要,老师让我写一个小web系统,之前都是用java写web,想到自己最近学机器学习要用python,所以用python来写一下,此外,因为想用点新东西,也介于程序比较小,所以考虑用mongo ...
- nginx+uwsgi+flask+supervisor 项目部署
环境 - Linux: Ubuntu 16.04 - uWSGI 2.0.18 - Flask 1.0.2 - supervisor 3.2.0 - nginx/1.8.1 首先区分几个概念 WSGI ...
- Flask + Gunicorn + Nginx 部署
最近很多朋友都在问我关于 Flask 部署的问题,说实在的我很乐意看到和回答这样的问题,至少证明了越来越多人开始用 Flask 了. 之前我曾发表过一篇在 Ubuntu 上用 uwsgi + ngin ...
- nginx+uWSGI+django+virtualenv+supervisor发布web服务器
nginx+uWSGI+django+virtualenv+supervisor发布web服务器 导论 WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器如何与Web应用程序通信,以 ...
- 通过Nginx部署flask项目
用Flask开发之后,很多人,喜欢用nohup python manage.py & 这样的形式,放到后台运行,其实这样只是个发开模式,很简陋,无法支持并发,进程监控等功能.所以采用nginx ...
- Linux - nginx+uWSGI+django+virtualenv+supervisor发布web服务器
目录 Linux - nginx+uWSGI+django+virtualenv+supervisor发布web服务器 crm django项目部署流程 使用supervisro启动uwsgi,退出虚 ...
- 使用Flask+uwsgi+Nginx部署Flask正式环境
环境准备 在开始正式讲解之前,我们将首先进行环境准备. Step1:安装Python,pip以及nginx: sudo apt-get update sudo apt-get install pyth ...
- 使用virtualenv, uwsgi, nginx来布署flask
本文讲述了怎样使用virtualenv, uwsgi, nginx来布署flask的步骤. 升级软件包 运行下面命令,保证你的机器安装了最新的软件包. sudo apt-get update sudo ...
随机推荐
- 深入理解Spring IoC容器和动态代理机制
Deployment期间验证 实现一: <bean id="theTargetBean" class="..."/> <bean id=&qu ...
- 20. ROUTINES
20. ROUTINES ROUTINES表提供有关存储例程(存储过程和存储函数)的信息. ROUTINES表不包含内置SQL函数或用户定义函数(UDF). 名为mysql.proc Name的列表示 ...
- redis搭建配置
1 .去官方下载 2.解压tar 3.进入解压目录 编译 4.将编译好的目录移动到制定位置.做软连接 .配置环境便利 5.创建数据保存目录.创建配置文件 [root@radis ~]# vim /da ...
- openmediavault 4.1.3 插件开发
参考网址:https://forum.openmediavault.... 创建应用GUI 创建应用目录:/var/www/openmediavault/js/omv/module/admin/ser ...
- js事件默认行为
事件默认行为: 当一个事件发生的时候浏览器自己默认做的事情 怎么阻止? 当前这个行为是什么事件触发的,然后在这个事件的处理函数中使用 return false; 但是return false 阻止的是 ...
- Java:获取文件内容
文章来源:https://www.cnblogs.com/hello-tl/p/9139353.html import java.io.*; public class FileBasicOperati ...
- 【HIHOCODER 1105】题外话·堆
描述 小Ho有一个糖果盒子,每过一段时间小Ho都会将新买来的糖果放进去,同时他也会不断的从其中挑选出最大的糖果出来吃掉,但是寻找最大的糖果不是一件非常简单的事情,所以小Ho希望能够用计算机来他帮忙计算 ...
- Saving James Bond - Hard Version
07-图5 Saving James Bond - Hard Version(30 分) This time let us consider the situation in the movie &q ...
- LeetCode02-两数相加
''' 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表示 ...
- 45个android实例源码分享
分享45个android实例源码,很好很强大 http://www.apkbus.com/android-20978-1-1.html andriod闹钟源代码 http://www.apkbus.c ...