python&django開發與生產環境部署總結
Django webapp開發與生產環境部署
概要
Ø 安裝Python虛擬機器;版本2.7.8
Ø 安裝開發包
Ø 建立Django專案
Ø 建立Djangowebapp
Ø 資料庫模型設計
Ø url規則設計
Ø 編寫檢視函式
Ø 前端:
² Bootstarp網格化DOM
² 注入bootstarp樣式
² Jquery處理web事件
Ø 整合gateone
Ø Saltstack webUI管理
Ø Nginx+uwsgi+django生產環境部署
專案原始碼:暫不公開
一、webapp功能介紹
1 |
Execl表格線上預覽編輯 |
2 |
linux伺服器狀態監控,檔案伺服器上傳下載 |
3 |
Saltstack伺服器配置管理webUI |
4 |
webSSH模擬運維堡壘機終端 |
5 |
Cobbler webUI |
6 |
資產管理 |
其它 |
需明確需求、、、、 |
二、建立專案開發環境
1.安裝windows版本python直譯器,版本2.7.8
2.安裝必要第三方庫:
Python的web開發框架: Django (1.6.2)
Mysql的python介面: MySQL-python (1.2.3)
ssh的python介面模組: paramiko (1.14.0)
3.IDE:pycharm3.4.1
二、建立工程與應用
專案目錄結構:
1. 將C:\Python27\Scripts新增到windows的path環境變數,開啟cmd視窗:
a.進入E盤,建立django_web專案:
>E:
>django-admin startproject django_web
b.建立名為gaga的webapp:
>django-admin startapp gaga
c.settings.py設定
d.建立webapp的資料庫模型:
#-*-coding: utf-8 -*-
fromdjango.db import models
#Create your models here.
classUser(models.Model):
username = models.CharField('使用者名稱',max_length= 20)
password = models.CharField('密碼',max_length= 20)
realname = models.CharField('真實姓名',max_length= 255)
sex = models.CharField('性別',max_length= 10)
email = models.EmailField('電子郵箱',blank= True)
def __unicode__(self):
return self.username
classFileserver(models.Model):
disk_useage = models.CharField('磁碟使用率',max_length= 10)
smb_status = models.CharField('Samba狀態',max_length= 50)
raid_status = models.CharField('Raid狀態',max_length= 50)
def __unicode__(self):
return self.disk_useage
def toJSON(self):
fields = []
for field in self._meta.fields:
fields.append(field.name)
d = {}
for attr in fields:
d[attr] = getattr(self, attr)
import json
return json.dumps(d)
classXuqiu(models.Model):
textarea = models.TextField('需求')
who = models.CharField('使用者名稱',max_length=20)
classname_password(models.Model):
IP = models.CharField('IP地址',max_length= 20)
username = models.CharField('賬戶名',max_length= 20)
password =models.CharField('密碼',max_length = 20)
d.執行DDL
進入E:\django_web目錄執行:
manage.pysyncdb
e. 建立URL規則
f.建立檢視函式
三、前端頁面及邏輯
載入jquery.min.js、bootsarp.min.js、bootstarp.min.css前端js與樣式框架程式碼,通過修改dom元素的class值(bootstarp框架定義的class),完成頁面樣式及事件處理機制
前端使用jquery+bootstarp+highchart.js圖表外掛,圖表資料實現ajax非同步呼叫,無需重新整理頁面,定時請求,實時展現伺服器資料指標
Jquery.ajax+hightcharts.js實現實時資料圖表核心js程式碼:
varget_data=function(){
var options;
options={
title: {
text: '檔案伺服器監控資料',
x: -20 //center
},
subtitle: {
text: '泰信科技',
x: -20
},
xAxis: {
categories: ['Jan', 'Feb', 'Mar','Apr', 'May', 'Jun','Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
},
yAxis: {
title: {
text: '百分比(%)',
},min: 0,
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}]
},
tooltip: {
valueSuffix: '%'
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'middle',
borderWidth: 0
},
series: [{
name: '磁碟使用率',
//data: [7.0, 6.9, 9.5, 14.5, 18.2,21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6] 測試資料
}, {
name: '記憶體使用率',
//data: [-0.2, 0.8, 5.7, 11.3,17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5] 測試資料
}, {
name: 'CPU使用率',
//data: [-0.9, 0.6, 3.5, 8.4, 13.5,17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0] 測試資料
}, {
name: '頻寬使用率',
//data: [3.9, 4.2, 5.7, 8.5, 11.9,15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8] 測試資料
}]
};
$.ajax({
url: "json/",
dataType: "json",
type:"post",
success: function(data) {
//init series arays
disk_arr = [];
cpu_arr = [];
mem_arr = [];
//net_arr = [];
for (i in data) {
//build
var t =0;
var r = data[i];
disk_arr.push([Number(r.fields.smb_status)]);
cpu_arr.push([Number(r.fields.disk_useage)]);
mem_arr.push([Number(r.fields.raid_status)]);
//net_arr.push([r.fields.test]);
}
//save series
options.series[0].data =disk_arr;
options.series[1].data =cpu_arr;
options.series[2].data =mem_arr;
//options.series[3].data = net_arr;
var chart =$('#container-test').highcharts(options);
},
cache: false
});
};
四、Django模板系統
需理解jinjia2模板系統語法
五、整合gateone與PIL
GateOne是一款基於HTML5的websocket的開源終端模擬器/SSH客戶端,同時內建強大的外掛功能。它自帶的外掛使其成為一款令人驚豔的SSH客戶端,但是,它可以用於執行任何終端應用。使用者可以將GateOne嵌入其他應用程式從而提供各類終端訪問介面,它也支援各類基於Web的管理介面。
PIL(python imageinglibrary),python影象處理的庫
實現webSSH處理影象
六、實現saltstack webUI
Saltstack是繼 Puppet、Chef 之後新出現的配置管理及遠端執行工具,目前,SaltStack 正得到越來越多的矚目。與 Puppet 相比,SaltStack 沒有那麼笨重,較為輕量;不像 Puppet 有一套自己的 DSL用來寫配置,SaltStack 使用YAML作為配置檔案格式,寫起來既簡單又容易,同時也便於動態生成;此外,SaltStack 在遠端執行命令時的速度非常快,也包含豐富的模組
七、nginx+uwsgi+django分散式部署
部署生產環境前需修改setting.py檔案:
新增STATIC_ROOT #靜態檔案目錄絕對路徑
STATIC_URL=’/static/’ #靜態檔案url
生產環境架構採用nginx+uwsgi+django,nginx與uwsgi的安裝省略
部署方式:
1. uwsgi的ini型別配置檔案:
#coding=utf8
#uwsgi.ini file
[uwsgi]
#Django-related settings
# thebase directory (full path)
chdir = /home/django_web/ #專案目錄
#Django's wsgi file
module = django_web.wsgi:application
#process-related settings
# master
master = true
# maximumnumber of worker processes
processes = 10
# thesocket (use the full path to be safe
#socket = 127.0.0.1:8001
http = 192.168.0.174:88 #uwsgi已http協議提供服務,也可以定義為socket
# ...with appropriate permissions - may be needed
chmod-socket = 666
# clearenvironment on exit
vacuum = true
process = 4
threads = 2
#log
daemonize =/var/log/uwsgi/uwsgi.log
2. 檢查django專案的wsgi.py是否符合wsgi協議介面定義規範
3. nginx配置(待補充)
4. 啟動服務:uwsgi –ini uwsgi.ini
5. 關閉服務:killall -9 uwsgi
預覽: