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简介:

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

 

预览:


Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐