centos 6.x 部署uwsgi+flask項目

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腳本的麻煩!

# 該文章只是做爲本人的回憶筆記,參考性看我的因素!

相關文章
相關標籤/搜索