Need help with DjangoWeb?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

kurolz
134 Stars 100 Forks 28 Commits 1 Opened issues

Description

基于Django的运维平台

Services available

!
?

Need anything else?

Contributors list

DjangoWeb

Background based on Django!

本例只是初级模型,是本人练手项目,没有具体的使用价值,仅供代码参考。

欢迎交流:

@ 邮箱:[email protected]

@ 个人博客: http://www.mykurol.com

架构:Python+Django+bootstrap+SaltStack+Zabbix+MySQL

资产管理:采用SaltStack调用收集主机配置信息入库

自动添加主机:输入ip、ssh用户名和密码,自动部署salt-minion,主机自动添加到salt-master

主机批量管理:调用SaltStack实现批量执行命令,结果返回到前端页面,采用Prism高亮展示代码

监控:采用Zabbix api调用收集数据,采用百度开源的ECharts绘图展示

心得:

由于是独立开发,python也是自学,从数据的获取(包括各种api的调用,数据库设计查询),到数据处理,再到前端展示,还有前端设计,遇到过各种问题,经过一段时间学习,成功完成一些功能,打开了思路,后续的思路越来越广,会继续完善这个平台。

@@ 使用Docker-compose部署Django环境:

@@ System - Centos7.0

@@ Django - 1.9.5

@@ Python - 3.6.0

yum -y install docker
systemctl start docker

使用daocloud镜像加速

vim /etc/docker/daemon.json

{ "registry-mirrors": [ "http://5c51d642.m.daocloud.io" ], "insecure-registries": [] }

docker pull mysql   # 下载镜像到本地
docker pull django:1.9.5  # 下载镜像到本地
docker pull python:3.6.0   # 下载镜像到本地
mkdir -p /mysite/{DjangoWeb,db}

Dockerfile包含创建镜像所需要的全部指令。在项目根目录下创建Dockerfile文件,其内容如下: ```Bash vim /mysite/Dockerfile

FROM python:3.6.0 ENV PYTHONUNBUFFERED 1 RUN mkdir /code RUN mkdir /code/db WORKDIR /code ADD ./DjangoWeb/requirements.txt /code/ RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt ADD . /code/ ```

第1行的FROM指令表示新的镜像将基于python:2.7的镜像来构建

第2行的ENV为环境变量(PYTHONUNBUFFERED见这里)

第3行的RUN指令表示在镜像内新建/code目录

第4行指定指定RUN、CMD与ENTRYPOINT命令的工作目录

第5行是将./mysite/requirements.txt文件添加到刚才新建的code目录中

第6行运行pip安装所需的软件

之前的Dockerfile定义了一个应用,而使用compose,可以在一个文件里,定义多容器的应用。该YAML配置语言,用于描述和组装多容器的分布式应用。在项目根目录创建docker-compose.yml文件,其内容如下: ```Bash vim /mysite/docker-compose.yml

db: image: mysql expose: - "3306" volumes: - ./db:/var/lib/mysql environment: - MYSQLDATABASE=mysitedb - MYSQLROOT_PASSWORD=888888

web: build: . command: python ./DjangoWeb/manage.py runserver 0.0.0.0:8000 volumes: - .:/code ports: - "8000:8000" links: - db ``` db标签:

images表示使用mysql镜像

expose表示暴露端口3306,但不发布到宿主机上

volume表示挂载宿主机的路径作为卷,冒号左边为宿主机路径,右边为镜像内路径

environment为环境变量,每个容器都有自己定义的环境变量,具体查看镜像手册中的mysql

web标签:

build指定建立Dockerfile路径

command将覆盖默认的命令

ports指定主机开放的端口

links指向其他容器中的服务

在子目录mysite下requirements.txt文件,该文件内容如下: ```Bash vim /mysite/DjangoWeb/requirements.txt

django==1.9.5 mysqlclient django-admin-bootstrapped django_bootstrap3 pillow salt ```

构建镜像:

Bash
cd /mysite
Bash
docker-compose build
```Bash docker images

REPOSITORY TAG IMAGE ID CREATED SIZE mysite_web latest 43b4615f87c7 6 minutes ago 720.5 MB docker.io/mysql latest b4e78b89bcf3 9 days ago 412.3 MB docker.io/python 3.6.0 a1782fa44ef7 7 months ago 687.1 MB docker.io/django 1.9.5 c5b6e7c5c44c 17 months ago 433.4 MB

Bash
docker-compose run web django-admin.py startproject webserver ./DjangoWeb
```
docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ad0c75e2fd3d mysite_web "django-admin.py star" 5 minutes ago Exited (0) 5 minutes ago mysite_web_run_1 77e91e05178d mysql "docker-entrypoint.sh" 5 minutes ago Up 5 minutes 3306/tcp mysite_db_1

chmod -R 777 DjangoWeb
vim DjangoWeb/webserver/settings.py

DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mysitedb', 'USER': 'root', 'PASSWORD': '888888', 'HOST': 'db', 'PORT': 3306, } }

添加net端口映射

Bash
[[email protected]_34_67_centos DjangoWeb]# docker inspect 1bf8642343e3 | grep IPAddress
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.3",
                    "IPAddress": "172.17.0.3",
Bash
[[email protected]_34_67_centos DjangoWeb]# iptables -t nat -A  DOCKER -p tcp --dport 80 -j DNAT --to-destination 172.17.0.3:8000     

现在可以将项目移入新建的项目中

然后进入将MySQL文件夹里的OBServer数据库移入mysql容器里,文件可能有损或版本问题,可自己生成数据表: 新建一个observer库,使用

Bash
(1)python manage.py makemigrations 
(2)python manage.py migrate
然后创建超级用户
Bash
python manage.py createsuperuser 

进入mysite目录,启动容器:

Bash
docker-compose up
@@ 有些python模块没有写在yml里安装,需要进入容器自行安装,报错缺少就装什么。

@ 无报错可 Crtl+C 退出应用,转入后台运行

后台运行:

Bash
docker-compose up -d
退出应用:
Bash
docker-compose stop
@@ 注意down会删除容器。

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.