1、項目背景css
1. 公司需求要作一個在線統計頁面; 2. 統計在線人數,進行人數數據展現; 3. 相似QQ官網在線人數
2、測試環境html
[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
3、web框架vue
說明:因爲需求的頁面只有單一一個頁面,動態展現的人數數據也能夠經過js動態請求接口獲取,就考慮使用輕量級的web框架或者vue
最終選擇flask,畢竟筆者是後端開發人員,vue以後經過在本地測試練習進行基本知識學習!
上代碼:測試服務器的代碼結構node
[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代碼python
[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服務jquery
說明:百度查看資料有不少方案解決通訊服務結合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
5、啓動uwsgi服務linux
1. 啓動nginx
# 手動啓動 [root@linux-node2 bonline]# uwsgi b_uwsgi.ini # supervisor啓動 繼續往下看
2. 檢查web
[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部署shell
這步驟就省略了有興趣的朋友能夠移步去看我以前寫的nginx代理django項目裏面有些如何安裝nginx以及安裝步驟:使用Nginx代理Django
6、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腳本的麻煩!
# 該文章只是做爲本人的回憶筆記,參考性看我的因素!