python之Django自动化资产扫描的实现

1. Django项目搭建

- django项目创建cmdb

- 子应用的创建scanhost

>python manage.py startapp scanhost

- 设置本地化(语言,时区, 安装的应用)

setting
# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-hans'

# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'
# USE_TZ = True
USE_TZ = False

INSTALLED_APPS = [
 'scanhost',
]

- 应用数据库并创建超级用户

>python manage.py makemigrations # 生成数据库迁移脚本(每次修改了数据库必备操作)
>python manage.py migrate # 将迁移脚本写入数据库并创建数据库表
>python manage.py createsuperuser

- 浏览器访问测试

>python manage.py runserver 9999

- 项目代码的管理(requirements.txt, .gitignore文件和README.md文件)

安装插件 .ignore,并生成python上传git项目需要忽略内容的文件 .gitignore
>pip freeze > requirements.txt 生成 requirements.txt
创建README.md ## 导入此项目需要的包(最后完成时导入)

- git的管理

>git init #初始化git仓库管理
>git add * # 将本地增删改查的文件全部添加到暂存区
>git commit -m "django project init" # # 添加到本地仓库
>git remote add origin https://gitee.com/***/*** ##上传到gitee仓库 关联仓库
>git push --set-upstream origin master
>git push --set-upstream origin master -f #首次上传

2. 配置开发及生产环境

2.1 base.py

在 cmdb 下创建包 settings(作为配置文件存放地),将原始基本配置文件settings.py 移动到此包下,并重命名为 base.py

2.2 创建开发环境配置

创建开发环境配置:cmdb/settings/dev.py

from .base import *
DATABASES = {
 'default': {
  'ENGINE': 'django.db.backends.sqlite3',
  'NAME': BASE_DIR / 'db.sqlite3',
 }
}

2.3 创建生产环境配置

创建生产环境配置:cmdb/settings/prod.py

from .base import *
DATABASES = {
 'default': {
  'ENGINE': 'django.db.backends.postgresql',
  'NAME': 'mydatabase',
  'USER': 'mydatabaseuser',
  'PASSWORD': 'mypassword',
  'HOST': '127.0.0.1',
  'PORT': '5432',
 }
}

DEBUG = False # 开发环境一定要关闭调试模式
ALLOWED_HOSTS = ['*'] # 允许所有主机访问

2.4 修改/init.py

修改 cmdb/settings/init.py,配置为开发环境(如果项目将来需要上线, 修改启动项目访问的配置文件为生产环境的配置文件即可,)

import os

env = os.environ.get('PROJECT_ENV', 'dev') ##dev开发环境,prod生产环境
if env == 'dev':
 from .dev import *
elif env == 'prod':
 from .prod import *
else:
 from .dev import *

2.5 迁移数据库

>python manage.py migrate
>python manage.py createsuperuser
>python manage.py runserver 9999
>git add *
>git commit -m "add dev and prod settings"
>git push

3. pycharm远程部署

4. 远程代码调试

4.1 远程服务器安装虚拟环境

[root@localhost yum.repos.d]# ssh root@192.168.139.130 ##虚拟机ip
[root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@localhost yum.repos.d]# vim CentOS-Base.repo
:%s/$releasever/7/g
[root@localhost yum.repos.d]# yum install -y python3

[root@localhost ~]# pip3 install virtualenv -i https://pypi.douban.com/simple ##安装虚拟环境
[root@localhost cmdb]# which python3
/usr/bin/python3
[root@localhost ~]# virtualenv -p /usr/bin/python3 venv ## 激活虚拟环境
[root@localhost ~]# source venv/bin/activate
(venv) [root@localhost cmdb]# pip install -r requirements.txt -i https://pypi.douban.com/simple ##安装所需的包

4.2 配置pycharm的解释器为远程服务器解释器



5. 配置项目数据库为mysql

5.1 安装mysql

(venv) [root@localhost cmdb]# yum install mariadb-server -y
(venv) [root@localhost cmdb]# systemctl start mariadb
(venv) [root@localhost cmdb]# systemctl enable mariadb
(venv) [root@localhost cmdb]# mysql
(venv) [root@localhost cmdb]# mysql_secure_installation ## 初始化
(venv) [root@server1 ~]# mysql -uroot -pwestos
MariaDB [(none)]> create database cmdb default charset='utf8'; ## 创建数据库cmdb;(设置编码格式为'utf8')
MariaDB [(none)]> create user cmdb@'%' identified by "cmdb"; ## .创建远程访问数据库用户并授权
MariaDB [(none)]> grant all on cmdb.* to cmdb@'%';
(venv) [root@server1 ~]# mysql -ucmdb -pcmdb -h192.168.139.130 ##测试远程访问数据库

(venv) [root@server1 ~]# yum install -y mariadb-devel
(venv) [root@server1 ~]# yum install -y gcc
(venv) [root@server1 ~]# yum install -y python3-devel
(venv) [root@server1 ~]# pip3 install -y mysqlclient -i https://pypi.douban.com/simple

5.2 关闭远程服务器防火墙和selinux

(venv) [root@server1 ~]# systemctl stop firewalld.service
(venv) [root@server1 ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
(venv) [root@server1 ~]# setenforce 0
(venv) [root@server1 ~]# pip3 install -y mysqlclient -i https://pypi.douban.com/simple

5.3 生产环境配置

修改生产环境配置文件:cmdb/settings/prod.py

from .base import *

DATABASES = {
 'default': {
  'ENGINE': 'django.db.backends.mysql',
  'NAME': 'cmdb',
  'USER': 'cmdb',
  'PASSWORD': 'cmdb',
  'HOST': '192.168.139.130',
  'PORT': '3306',
 }
}
DEBUG = True # debug调试在生产环境一定要关闭
# ALLOWED_HOSTS = ['192.168.0.0/16'] # 允许访问服务器的客户端网段信息
ALLOWED_HOSTS = ['*'] # 允许访问服务器的客户端网段信息

5.3 迁移数据库

(venv) [root@server1 cmdb]# python manage.py makemigrations
No changes detected
(venv) [root@server1 cmdb]# python manage.py migrate
(venv) [root@server1 cmdb]# python manage.py createsuperuser

5.4 运行远程服务器项目

到此这篇关于python之Django自动化资产扫描的实现的文章就介绍到这了,更多相关Django自动化资产扫描内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 基于CentOS搭建Python Django环境过程解析

    安装 setuptools 工具 任务时间:1min ~ 5min 安装 yum install python-setuptools -y 因为之后我们需要安装 Django ,而 Django 需要用这个工具,所以我们需要先安装 setuptools 工具. 下载与安装 Django 任务时间:5min ~ 20min 下载 Django [Django 是什么?] wget https://www.djangoproject.com/m/releases/1.11/Django-1.11.3

  • Python使用Django实现博客系统完整版

    今天花了一些时间搭了一个博客系统,虽然并没有相关于界面的美化,但是发布是没问题的. 开发环境 操作系统:windows 7 64位 Django: 1.96 Python:2.7.11 IDE: PyCharm 2016.1 功能篇 既然是博客系统,发布的自然是博客了.让我们想想,一篇博客有什么属性.所以我们要有能添加博客,删除博客,修改博客,以及给博客发评论,贴标签,划分类等功能. 关系分析 属性 博客:标题,内容. 标签:标签名 分类:分类的名称 评论:评论人,评论人email,评论内容 关

  • 在django项目中,如何单独运行某个python文件

    有时候,我们可能想在django中写一些代码来测试某些功能,我们希望在django项目中单独运行某个python文件来做这项测试工作. 但是如果直接执行命令python xxx.py来运行django项目中的python文件会报错 在运行该文件之前应该先加载django的配置 import sys import os import django # 这两行很重要,用来寻找项目根目录,os.path.dirname要写多少个根据要运行的python文件到根目录的层数决定 BASE_DIR = os

  • python利用xpath爬取网上数据并存储到django模型中

    帮朋友制作一个网站,需要一些产品数据信息,因为是代理其他公司产品,直接爬取代理公司产品数据 1.设计数据库 from django.db import models from uuslug import slugify import uuid import os def products_directory_path(instance, filename): ext = filename.split('.')[-1] filename = '{}.{}'.format(uuid.uuid4().

  • 利用Python Django实现简单博客系统

    第一节 - 基础 1. 简单的导览图,学会不迷路 对 Django 的评价:借用李清照的<鹧鸪天 桂花>来表达, 暗淡轻黄体性柔.情疏迹远只香留.何须浅碧深红色,自是花中第一流. 梅定妒,菊应羞.画阑开处冠中秋.骚人可煞无情思,何事当年不见收. Django makes it easier to build better Web apps more quickly and with less code. 容易上手,开发速度快 囊括了网站开发中的用户管理,内容管理,网站地图,RSS等常用的插件

  • Python采用Django开发自己的博客系统

    好久之前就想做一下自己的博客系统了,但是在网上查了查好像是需要会一些Node.js的相关知识,而且还要安装辣么多的库什么的,就不想碰了.但是我遇到了Django这么一款神器,没想到我的博客系统就这么建立起来了.虽然是最基础的类型.但是也算是成功了,这篇博客比较适合对Django有了一定了解的童鞋,如果是新手的话,建议先看一下django的基础知识点再来做实验,这样效率更高! 好了,话不多说,开始吧. 搭建框架  •创建项目及应用 搭建框架的意思,就是安装Django以及做好相关的配置.因为我是在

  • Python Django搭建文件下载服务器的实现

    环境 win10 Python:3.6.7 Django:2.2.7 运行效果 1.创建 Django 项目 # 创建Download项目 django-admin startproject Download # 创建down_app app python manage.py startapp down_app 2.修改配置文件:settings.py Download/Download/settings.py 1.添加注册APP:down_app 2.设置模板文件路径:templates 3.

  • python基于爬虫+django,打造个性化API接口

    简述 今天也是同事在做微信小程序的开发,需要音乐接口的测试,可是用网易云的开放接口比较麻烦,也不能进行测试,这里也是和我说了一下,所以就用爬虫写了个简单网易云歌曲URL的爬虫,把数据存入mysql数据库,再利用django封装装了一个简单的API接口,给同事测试使用. 原理 创建django项目,做好基础的配置,在views里写两个方法,一个是从mysql数据库中查数据然后封装成API,一个是爬虫方法,数据扒下来以后,通过django的ORM把数据插入到mysql数据库中. 这里的路由也是对应两

  • Python web框架(django,flask)实现mysql数据库读写分离的示例

    读写分离,顾名思义,我们可以把读和写两个操作分开,减轻数据的访问压力,解决高并发的问题. 那么我们今天就Python两大框架来做这个读写分离的操作. 1.Django框架实现读写分离 Django做读写分离非常的简单,直接在settings.py中把从机加入到数据库的配置文件中就可以了. DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'HOST': '127.0.0.1', # 主服务器的运行ip 'PORT':

  • Python3+PyCharm+Django+Django REST framework配置与简单开发教程

    一.说明 自己一是想跟上潮流二是习惯于直接干三是没有人可以请教,由于这三点经常搞得要死要活.之前只简单看过没写过Diango,没看过Django REST framework,今天一步到位直接上又撞上了南墙.在此记一下以备忘,也希望对后来者能有所帮助.本文相当于Django REST framework官方文档的重新实现. 1.1 Django是什么 Django是当下流行的一个python语言的web框架,类似于java的struts2,(如果struts2太旧不懂那也可以理解为spring

  • Python Django 后台管理之后台模型属性详解

    十八.Django 后台模型属性篇 继续在之前的项目中进行代码的编码,首先要回忆一下通过 createsuperuser 命令创建的管理员账号,如果忘记了,需要重新创建一个. 本篇博客涉及的代码都在 admin.py 文件中,如果你首次打开本篇文章,请翻看本文结尾出的目录大纲,可以再次学习. 为了便于学习,提前在 models.py 中新增一个类,代码如下: from django.db import models class MyCenter(models.Model): pass 18.1

  • 用 Django 开发一个 Python Web API的方法步骤

    Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC)风格的 Web 应用程序框架.它是Python API开发中最受欢迎的名称之一,自2005年成立以来,其知名度迅速提升. Django由Django软件基金会(Django Software Foundation)维护,并获得了社区的大力支持,在全球拥有11,600多个成员.在Stack Overflow上,Django大约有191,000个带标签的问题.Spotify,YouTube和Instagram等网站都依

  • Python django框架 web端视频加密的实例详解

    视频加密流程图: 后端获取保利威的视频播放授权token,提供接口api给前端 参考文档:http://dev.polyv.net/2019/videoproduct/v-api/v-api-play/create-playsafe-token/ 在utils下创建polyv.py,编写token生成工具函数,path:utils/polyv.py utils 是多个模块的公共函数库的文件夹里面存放自己开发的组件 from django.conf import settings import t

随机推荐