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

        

 

二、创建工程与应用

项目目录结构:

 

python项目生产计划自动排产_异步

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处理图像

 

python项目生产计划自动排产_python_02

六、实现saltstack webUI

Saltstack简介:

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

 

预览:

python项目生产计划自动排产_python项目生产计划自动排产_03