一、项目背景

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. 【bzoj2754】【scoi2012】喵星球上的点名

    题解们: 1.首先可以被很多暴力给搞过去:我以前也是这样水过去的 2.ac自动机 2.1 抽离fail树 对点名建自动机,建$fail$树的时候只保留询问节点: 对于一个喵,子串==在自动机里匹配到的 ...

  2. CSS的overflow属性介绍

    overflow 属性规定如何处理如何处理不符合元素框的内容.用法如下:Object.style.overflow=visible|hidden|scroll|auto. 参数介绍: visible: ...

  3. Chapter 6(树)

    1.树的储存方式 //****************双亲表示法************************ #define Max_TREE_SIZE 100 typedef int TElem ...

  4. 300. Longest Increasing Subsequence_算法有误

    300. Longest Increasing Subsequence 300. Longest Increasing Subsequence Given an unsorted array of i ...

  5. 序列内第k小查询(线段树)

    最近请教了一下大佬怎么求序列内第k大查询,自己又捣鼓了一下,虽然还没有懂得区间第k大查询,不过姑且做一个记录先吧 因为每个元素大小可能很大而元素之间不连续,所以我们先离散化处理一下,程序中的ori[ ...

  6. Java Socket Timeout 总结

    原文出处:囚兔 摘要: Java的网络编程Socket常常用于各种网络工具,比如数据库的jdbc客户端,redis客户端jedis,各种RPC工具java客户端,这其中存在一些参数来配置timeout ...

  7. python 几种不同的格式化输出

    1. % %是最常用的格式化输出形式,后面接类型,%s,%d,%c等等 name = input() print('I am %s' % name) 2.format format也是常用格式化输出 ...

  8. 安装MySQL5.7由于 Redistributable导致失败

    今天上午安装MySQL5.7时一直提示 1: Action 10:59:21: INSTALL. 1: 1: MySQL Server 5.7 2: {F08E9C75-A42E-4962-8760- ...

  9. 关于720p和1080p观看距离和效果

    分类: 不同分辩率的信号源,对观看距离的要求是不同的.在标清时代,看电视台的画面,要离得好鬼远,否则就会觉得画面粗糙闪炼唔舒服.720P及1080P的观看距离又应该点样呢?系唔系买个50寸的平板电视要 ...

  10. HTTP协议(2)-------- 网络编程

    1. HTTP请求格式 做过Socket编程的人都知道,当我们设计一个通信协议时,“消息头/消息体”的分割方式是很常用的,消息头告诉对方这个消息是干什么的,消息体告诉对方怎么干.HTTP协议传输的消息 ...