一、项目背景

1. 公司需求要做一个在线统计页面;
2. 统计在线人数,进行人数数据展示;
3. 类似QQ官网在线人数

二、测试环境

[root@linux-node2 ~]# cat /etc/*release
CentOS release 6.7 (Final)
CentOS release 6.7 (Final)
CentOS release 6.7 (Final)
[root@linux-node2 ~]# python --version
Python 2.7.12
[root@linux-node2 ~]# pip --version
pip 10.0.1 from /usr/local/lib/python2.7/site-packages/pip (python 2.7)
[root@linux-node2 ~]#
# 需要安装  flask
pip install flask

三、web框架

说明:由于需求的页面只有单一一个页面,动态展示的人数数据也可以通过js动态请求接口获取,就考虑使用轻量级的web框架或者vue
最终选择flask,毕竟笔者是后端开发人员,vue之后通过在本地测试练习进行基本知识学习!

上代码:测试服务器的代码结构

[root@linux-node2 bonline]# pwd
/data/web/bonline
[root@linux-node2 bonline]# ll
total 24
-rw-r--r-- 1 root root 293 Aug 13 13:49 bonline.py
-rw-r--r-- 1 root root 231 Aug 13 20:04 b_uwsgi.ini
drwxr-xr-x 6 root root 4096 Aug 13 13:42 static
drwxr-xr-x 2 root root 4096 Aug 13 13:49 templates
-rw-r--r-- 1 root root 117 Aug 13 19:51 wsgi.py
-rw-r--r-- 1 root root 278 Aug 13 19:53 wsgi.pyc
[root@linux-node2 bonline]# tree
.
|-- bonline.py
|-- b_uwsgi.ini
|-- static
| |-- css
| | `-- index.css
| |-- images
| | `-- b.png
| |-- img
| | |-- 1-login-icon.png
| | |-- 4-pd.png
| | |-- advert01.png
| | |-- advert02.png
| | |-- advert03.png
| | `-- get_flash_player.gif
| `-- js
| |-- bj-report-tryjs.min.js
| |-- jquery-1.9.1.min.js
| `-- swfobject.js
|-- templates
| `-- b.html
|-- wsgi.py
`-- wsgi.pyc 6 directories, 16 files
[root@linux-node2 bonline]#

bonline.py代码

[root@linux-node2 bonline]# cat bonline.py
from flask import Flask,request,render_template app = Flask(__name__) @app.route('/',methods=['GET',])
def hello_world():
if request.method == "GET":
return render_template('b.html') if __name__ == '__main__':
app.run(host='192.168.10.12',port=80,debug=True)

四,uwsgi服务

说明:百度查看资料有很多方案解决通信服务结合flask的案例,独角兽也可以
由于习惯使用了uwsgi的配置文件方式就使用uwsgi和flask通信后续也可以结合supervisor进行统一管理
1. 安装uwsgi  # pip version  2.7
pip install uwsgi
2. 配置文件 #cat b_uwsgi.ini
[uwsgi]
socket=127.0.0.1:9001
chdir=/data/web/bonline
wsgi-file=bonline.py
vacuum=True
master=True
workers=4
enable-threads=True
threads=10
pidfile=/var/run/uwsgi9001.pid
daemonize=/var/log/uwsgi9001.log # 开启守护进程在后台运行
memory-report=True

五、启动uwsgi服务

1. 启动

# 手动启动
[root@linux-node2 bonline]# uwsgi b_uwsgi.ini
# supervisor启动
继续往下看

2. 检查

[root@linux-node2 bonline]# netstat -lnpt |grep 9001
tcp 0 0 127.0.0.1:9001 0.0.0.0:* LISTEN 11334/uwsgi
[root@linux-node2 bonline]#
#由于uwsgi配置文件启动的时候是使用socket模式启动的,所有就就不写程序进行测试访问了,需要不是nginx代理

3. nginx部署

这步骤就省略了有兴趣的朋友可以移步去看我之前写的nginx代理django项目里面有些如何安装nginx以及安装步骤:使用Nginx代理Django

六、supervisor管理uwsgi

1. 安装

这里也省略了之前有写过supervisor管理uwsgi的博客:supervisor管理uwsgi

2. 修改配置文件

[root@linux-node2 bonline]# cat b_uwsgi.ini
[uwsgi]
socket=127.0.0.1:9001
chdir=/data/web/bonline
wsgi-file=bonline.py
vacuum=True
master=True
workers=4
enable-threads=True
threads=10
pidfile=/var/run/uwsgi9001.pid
#daemonize=/var/log/uwsgi9001.log # 这里关闭守护进程(必须操作)
memory-report=True
[root@linux-node2 bonline]#

3. 配置子配置文件

# 路径
[include]
files = /etc/supervisor/conf.d/*.ini
[root@linux-node02 ~]# cd /etc/supervisor/conf.d/
[root@linux-node02 conf.d]# ll
total 8
-rw-r--r-- 1 root root 1474 Jul 25 20:09 website.ini
[root@linux-node01 conf.d]# cat website.ini
[program:bonline]
command =/usr/local/bin/uwsgi /data/web/bonline/b_uwsgi.ini ; 启动命令,可以看出与手动在命令行启动的命令是一样的
autostart = true ; 在 supervisord 启动的时候也自动启动
stopsignal=QUIT
user=root ; 启动的用户
startsecs = 5 ; 启动 5 秒后没有异常退出,就当作已经正常启动了
startretries = 3 ; 启动失败自动重试次数,默认是 3
autorestart = true ; 程序异常退出后自动重启
redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile_maxbytes = 20MB ; stdout 日志文件大小,默认 50MB
stdout_logfile = /data/log/bonline_stdout.log
stderr_logfile = /data/log/bonline_err.log

4. 启动supervisord服务

/etc/init.d/supervisord start

5. 检查

[root@linux-node02 bonline ]# supervisorctl status
bonline RUNNING pid 31595, uptime 14:35:07

# 已经正常运行了,走到这里就表示supervisor就可以管理uwsgi服务不用在手动杀死进程启动uwsgi操作也避免了写shell脚本的麻烦!

# 该文章只是作为本人的回忆笔记,参考性看个人因素!

centos 6.x 部署uwsgi+flask项目的更多相关文章

  1. 使用Nginx+Uwsgi部署Python Flask项目

    第一次用Flask做Web(也是第一次用Python做Web),在部署的时候遇到了不少问题,现在将过程就下来,供在这方面也有疑惑的人参考.(PS:使用Apache+mod_wsgi部署模式的可以参考另 ...

  2. 【Centos】【Python】【Flask】阿里云上部署一个 flask 项目

    1. 安装 python3 和 pip3 参考:http://www.cnblogs.com/mqxs/p/8692870.html 2.安装 lnmpa 集成开发环境 参考:http://www.c ...

  3. [傻瓜式一步到位] 阿里云服务器Centos上部署一个Flask项目

    网络上关于flask部署Centos的教程有挺多,不过也很杂乱. 在我第一次将flask上传到centos服务器中遇到了不少问题,也费了挺大的劲. 在参考了一些教程,并综合了几个教程之后才将flask ...

  4. CentOS 傻瓜式部署uWSGI + nginx + flask

    交代背景 这篇帖子是为了提供我自己的July Novel站点的小说数据支撑.解决分布式部署爬虫程序的繁琐过程,由于本人对shell编程并不熟悉,故而先逐步记录操作步骤,通过以下操作达到节省时间的方式. ...

  5. CentOS下 Django部署 uWSGI+Django(一)

    由于新冠疫情的缘故,公司要求员工停薪休假,赋闲在家的时候还是决定做点正事,学学习. 本人Linux入门水平,Python入门水平,所以在网上找的那些python部署的帖子,看的是云里雾里的,也没有达到 ...

  6. linux部署的flask项目配置static

    环境: Python2.7 flask nginx linux的系统是Ubantu Python:我的是linux已经有的. flask:pip install flask nginx:sudo ap ...

  7. CentOS下 Django部署 nginx+uWSGI+Django(二)

    该篇内容承接CentOS下 Django部署 uWSGI+Django(一),细节流程可参考此篇内容. 1. 当前系统 CentOS Linux release 7.6.1810 Python 2.7 ...

  8. 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 ...

  9. CentOS 下部署Nginx+Gunicorn+Supervisor部署Flask项目

    原本之前有一部分东西是在Windows Server,但是由于Gunicorn不支持Windows部署起来颇为麻烦.最近转战CentOS,折腾一段时间,终于简单部署成功.CentOS新手,作为一个总结 ...

随机推荐

  1. javascript实现div的显示和隐藏

    http://www.cnblogs.com/oec2003/archive/2007/05/05/736492.html <html> <head> <meta htt ...

  2. web项目中的执行流程参数传递详解

    还是从这个图开始讲解: struts2中有一个存放数据的中心:值栈.(值栈里面有map和对象栈) 首先:值栈的作用范围是一个请求:request作用域(一个请求是代表的一个过程,即页面点击到数据返回到 ...

  3. ICMP类型和代号对照表

    ICMP类型 TYPE CODE Description Query Error 0 0 Echo Reply——回显应答(Ping应答) x   3 0 Network Unreachable——网 ...

  4. 【Asp.net入门16】第一个ASP.NET 应用程序-总结

    本章创建了一个新的ASP.NET项目,并用它创建了一个简单的数据输入应用程序,向你初步介绍 了ASP.NET平台.本章省略了许多重要的功能,只为向你说明ASP.NET应用程序所执行的核心操作—— 使用 ...

  5. Java基础之疑难知识点

    问题列表: 1. Java中子类中可以有与父类相同的属性名吗? 2. Java中子类继承了父类的私有属性及方法吗? 3. Java中抽象类到底能不能被实例化? 1. Java中子类中可以有与父类相同的 ...

  6. 科学计算三维可视化---Traits介绍

    简介 Traits是开源扩展库,Traits本身与科学计算可视化没有直接关联,但他其实TVTK,Mayavi,TraitsUI基础 安装: pip3 install traits--cp36-cp36 ...

  7. C#: Delegate and Event

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  8. python 远程执行命令、发布文件

    最近有个需求,想获取部分服务器上运行了那些应用服务,一台台去看,太费劲了,参考牛人写了此脚本,后期再加上一个前端页面做一些简单的运维维护的工作,凑合着先用着,待完善, 注:此脚本依懒于安装fabric ...

  9. Elasticsearch技术解析与实战(五)Document解析

    1.手动指定document id 一般来说,是从某些其他的系统中,导入一些数据到es时,会采取这种方式,就是使用系统中已有数据的唯一标识,作为es中document的id. PUT /index/t ...

  10. 微服务深入浅出(6)-- 熔断器Hystrix

    概念 在分布式系统中,一种不可避免的情况就是某些服务会出现故障,导致依赖他们的其他服务出现远程调度的线程问题(雪崩效应).而Hystrix提供的熔断器,通过隔离服务的访问点,能阻止这种分布式系统中出现 ...