Django实现CMDB搭建

背景:每个公司都有CMDB用来管理公司的服务器,今天这个是参考开源的项目实现的,想看源码可以参考:
https://www.iloxp.com/archive/2390/
话不多说开始搞起来

一、准备一台机器
4C*8G 配置,生产的看自己的情况

首先需要三样组件需要安装

Nginx: 是一款轻量级的Web服务器、反向代理服务器
MySQL: 关系型数据库
Python3:Python 是一种跨平台的计算机程序设计语言
uWSGI:uWSGI 是一个快速的,自我驱动的,对开发者和系统管理员友好的应用容器服务器

首先先脚本安装mysql和nginx,自己可以去百度安装,没啥技术
Django实现CMDB搭建
创建一个库准备存放数据
Django实现CMDB搭建
然后在yum 安装个nginx:yum install nginx -y

完成之后安装python3

yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel

https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz python 包

Django实现CMDB搭建

Django实现CMDB搭建

到此python3安装完成

二、开始安装django项目
2、获取 django-idcops 源代码
创建一个/data 目录

cd /data
git clone https://gitee.com/wenvki/django-idcops.git
cd django-idcops
PROJ_DIR=/data/django-idcops
Django实现CMDB搭建

3、给项目目录分配权限

cd $PROJ_DIR
chown nginx.nginx . -R /data/django-idcops
这里我统一用nginx这个用户,安装nginx的时候可以新建这个用户,centos yum install nginx 默认会创建这个用户
Django实现CMDB搭建

4、创建并激活 py3 虚拟环境
cd $PROJ_DIR
python3 -m venv env

source env/bin/activate # 激活python3 虚拟环境

Django实现CMDB搭建

5、安装 requirements.txt 中的依赖
cd $PROJ_DIR
python -m pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple # -i 参数表示采用阿里云pypi镜像站的pypi包源
python -m pip install -r requirements-prod.txt -i https://mirrors.aliyun.com/pypi/simple # Linux下安装uwsgi,Windows下请各位自行从搜索引擎解决(不建议生产环境部署到Windows系统)

![](https://s4.51cto.com/images/blog/202009/15/9a4cf392d3b7155453e7a657cb5f396e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

到此uwsgi也安装完成了

6、修改配置文件

cd $PROJ_DIR
vim /data/django-idcops/idcops_proj/settings.py 
![](https://s4.51cto.com/images/blog/202009/15/ff462de2891703d871e0c399adc05741.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![](https://s4.51cto.com/images/blog/202009/15/a4c9f6b39afa56e2e3c44bf30680827e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

修改完成验证一下
7、测试数据库连接
cd $PROJ_DIR
source /data/django-idcops/env/bin/activate
python manage.py dbshell
Django实现CMDB搭建

以上说明没有问题

8、迁移数据库
cd $PROJ_DIR
source /data/django-idcops/env/bin/activate
python manage.py migrate
Django实现CMDB搭建

这里是吧django需要的表结构都写到数据库当中
9、迁移静态文件和新建 media 目录
cd $PROJ_DIR
source /data/django-idcops/env/bin/activate
python manage.py collectstatic --noinput # --noinput 表示无须回车确认
mkdir /data/django-idcops/media
chown nginx.nginx -R /data/django-idcops/media # 需要分配权限,否则用户无法上传图片或文件

10、创建超级用户
cd $PROJ_DIR
source /data/django-idcops/env/bin/activate
python manage.py createsuperuser
Django实现CMDB搭建

11、配置uwsgi 并启动uwsgi
cd $PROJ_DIR
source /data/django-idcops/env/bin/activate
cd config
cp uwsgi.ini.example uwsgi.ini
Django实现CMDB搭建
这里我用root启动所以uid是root

$ #启动uwsgi
$ whereis uwsgi # 找到当前项目安装的uwsgi在哪里
$ /data/django-idcops/env/bin/uwsgi --ini /data/django-idcops/config/uwsgi.ini
Django实现CMDB搭建
已经启动了
Django实现CMDB搭建

12、配置nginx虚拟主机
Django实现CMDB搭建

在nginx配置添加
上面不用动,就把server的删掉替换就行
Django实现CMDB搭建
检查一下

Django实现CMDB搭建

13、nginx ssl配置(可选配置) 用不用都行

idcops_ssl.conf

listen 443 ssl http2;

#HTTP_TO_HTTPS_START
if ($server_port !~ 443){
    rewrite ^(/.*)$ https://$host$1 permanent;
}

if ( $host != ‘django-idcops.iloxp.com‘ ) {
    rewrite ^(.*)$ https://www.iloxp.com$1 permanent;
}
#HTTP_TO_HTTPS_END

ssl_certificate /etc/nginx/cert/idcops.iloxp.com/idcops.iloxp.com_chain.crt; # managed by Certbot
ssl_certificate_key /etc/nginx/cert/idcops.iloxp.com/idcops.iloxp.com_key.key; # managed by Certbot
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ‘ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5‘;
resolver 8.8.8.8 8.8.4.4 valid=300s;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;

#一键申请SSL证书验证目录相关设置
location ~ \.well-known{
    allow all;
}

接下来启动一下
Django实现CMDB搭建
访问一下

Django实现CMDB搭建

登录一下
Django实现CMDB搭建
Django实现CMDB搭建

三、开始导入数据

先创建客户
Django实现CMDB搭建

创建机房
Django实现CMDB搭建

创建机柜
Django实现CMDB搭建

然后机会和这个租用的客户公司绑定一下
Django实现CMDB搭建
Django实现CMDB搭建
Django实现CMDB搭建

完成后可以在机柜上架服务器了
Django实现CMDB搭建
Django实现CMDB搭建
Django实现CMDB搭建

这里可以看到上架了一台机器

其他的也是一样这样配置就行。

Django实现CMDB搭建

上一篇:Docker案例(redis/mariadb)


下一篇:MySQL索引知识总结