======================================
open-cmdb 知乎链接 https://zhuanlan.zhihu.com/p/34191320
1 2 3 4 5 6 7 8 9 10 11 # 这样 启动一个 mysql 数据库 # 设置mysql存储数据的路径,我这里本地是 /work/work/cmdb/mysql docker run --name cmdb-db -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=cmdbcmdb -v /work/work/cmdb/mysql:/var/lib/mysql mysql:5.7.21 mysql -h $DB_HOST -P $DB_PORT -u$DB_USERNAME -p$DB_PASSWORD -e "create database if not exists $DB_NAME default character set utf8;" mysql -h $DB_HOST -P $DB_PORT -u$DB_USERNAME -p$DB_PASSWORD $DB_NAME < /opt/cmdb/tools/database/cmdb.sql docker run --name myadmin -d -e PMA_ARBITRARY=1 -p 8080:80 phpmyadmin/phpmyadmin
1 2 3 4 5 6 # 启动 es 实例 docker run --name cmdb-es -d -p 9200:9200 -p 9300:9300 elasticsearch:7.14.0 docker run --name cmdb-es -d -p 9200:9200 -p 9300:9300 -p 5601:5601 -e "discovery.type=single-node" -e "cluster.name=elasticsearch" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.14.0
1 2 3 4 5 6 7 8 9 docker run -d --name cmdb \ --link cmdb-db --link cmdb-es \ -p 80:80 \ -e ENV=PRO -e SITE_URL={} -e DB_HOST=cmdb-db -e DB_PORT=3306 \ -e DB_USERNAME=root -e DB_PASSWORD=cmdbcmdb -e DB_NAME=cmdb \ -e ELASTICSEARCH_HOSTS=cmdb-es -e EMAIL_HOST={} -e EMAIL_PORT={} \ -e EMAIL_USERNAME={} -e EMAIL_PASSWORD={} mingmingtang/cmdb start docker run -it --rm --link cmdb-db -e DB_HOST=cmdb-db -e ENV=PRO -e DB_PORT=3306 -e DB_USERNAME=root -e DB_PASSWORD=cmdbcmdb -e DB_NAME=cmdb mingmingtang/cmdb init-db
创建 admin 管理员 账号
1 2 3 4 5 6 python manage.py cmdb_create_superuser 此命令来自这个文件 apps/mgmt/management/commands/cmdb_create_superuser.py
Django 对于命令的添加有一套规范,你可以为每个app 指定命令。通俗一点讲,比如在使用manage.py文件执行命令的时候,可以自定制自己的命令,来实现命令的扩充。
1、在app内创建一个management的python目录
2、在management目录里面创建commands的python文件夹
3、在commands文件夹下创建任意py文件,首先对于文件名没什么要求,内部需要定义一个Command类并继承BaseCommand类或其子类。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 from django.core.management.base import BaseCommand from django.db.utils import IntegrityError from mgmt.models import User class Command(BaseCommand): help = '创建超级用户' def handle(self, *args, **options): user = User() user.username = input("用户名:") user.name = input("姓名:") user.set_password(input("密码:")) user.is_staff = True user.is_superuser = True try: user.save() except IntegrityError: print("{} 已存在".format(user.username)) return print("创建成功")