基于Django3.2.7+Vue2+ElementUI的相对比较自动化生成的后台管理系统。借助SimpleUI开源项目对Django原生的Admin后台管理页面进行了二次开发和优化改进而生成的比较现代化的后台管理系统。
本项目总共有六大模块组成.其分别是:
大模块 | 子模块 | 微模块 | 功能 | 是否已实现 |
设备管理 | 通用设备管理 | ········ | ········ | ✅ |
网络设备管理 | 服务器管理 | ········ | ✅ | |
路由器管理 | ········ | ✅ | ||
网络管理 | 转换器管理 | ········ | ☑️ | |
网段管理 | ········ | ········ | ✅️ | |
IP地址管理 | ········ | ········ | ✅️ | |
穿透管理 | ········ | ········ | ☑️ | |
服务管理 | SSH服务 | ········ | ········ | ✅ |
数据库管理 | ········ | ········ | ✅ | |
宝塔管理 | ········ | ········ | ✅ | |
ES管理 | ········ | ········ | ✅ | |
通用服务管理 | ········ | ········ | ✅ |
大模块 | 子模块 | 功能 | 子功能 | 是否已实现 |
银行卡管理 | ········ | ········ | ········ | ✅ |
信用卡管理 | ········ | ········ | ········ | ✅ |
债务管理 | ········ | ········ | ········ | ✅ |
流水管理 | ········ | ········ | ········ | ✅ |
大模块 | 子模块 | 功能 | 子功能 | 是否已实现 |
基本自然人信息 | ········ | ········ | ········ | ✅ |
媒体账号信息 | 微博 | 采集 | 自动采集 | ✅️ |
定时采集 | ✅️ | |||
指定范围采集 | ✅️ | |||
统计&分析 | 数据可视化 | ✅️ | ||
抖音 | ········ | ········ | ✅️ |
- 通用账号管理
- 平台管理
- 媒体存储媒体
- 基于人脸识别的资源分类
graph LR
Client
MinIO
PostgreSQL
ElasticSearch
subgraph python
subgraph Django
STATICFILES_STORAGE
DEFAULT_FILE_STORAGE
subgraph django.db.backends
postgresql_psycopg2
end
end
subgraph minio_storage.storage
MinioMediaStorage
MinioStaticStorage
end
ElasticSearchPyClient
end
STATICFILES_STORAGE --> MinioStaticStorage
DEFAULT_FILE_STORAGE --> MinioMediaStorage
MinioMediaStorage --> MinIO
MinioStaticStorage--> MinIO
postgresql_psycopg2 --> PostgreSQL
MinIO -->|static files| Client
MinIO -->|media files| Client
Django -->|API| Client
Django -->|HTML| Client
Django -->ElasticSearchPyClient
ElasticSearchPyClient --> ElasticSearch
sequenceDiagram
Client ->> Django: HTTP请求
Django ->> PostgreSQL: 请求数据
PostgreSQL ->> Django: 响应数据
Django ->> ElasticSearch: 请求数据
ElasticSearch ->> Django: 响应数据
Django ->> Client: 返回纯HTML✅ / 拒绝❌
Client ->> MinIO: 请求静态资源
MinIO ->> Client: 响应静态资源
为了实现icloud相关视频处理功能需要用到FFmpeg作为核心。
- 实现可离线的端存储和数据同步功能, 实现端到端数据同步功能, 借鉴并参考git的代码合并和冲突解决机制.
- 修复本地媒体资源管理的预览页面
- 修复本iCloud媒体资源的预览页面
- 实现成本管理功能
- 解决媒体资源模块-文件上传接口中的重复上传同样名文件时出现的版本控制&版本歧义问题.
- 优化服务用户的列表页面中的展示效果
- 实现在服务修改页面中管理当前服务对应的用户信息
- 按功能和模块拆分项目
- 按服务和终端来拆分项目(逐渐施行前后端分离)
- webssh地址的设定改成全局的启动参数为其他外部框架和服务的调用提供便利.
- 引入语言包,实现国际化
- 把一些公共的数据统一进行管理和更新, 以我们推送, 然后各个用户客户端及时更新的形式, 也就类似于GeoIP的更新, 比如 操作系统镜像, 云托管上信息, 硬件设备型号和牌子, 公网网段, 运营商信息, 手机号归属地查询 .....等等. 开设数据中心, 提供免费服务.以授权的方式提公共数据接口方案, 授权后能够通过我们的接口获取重要的公共数据 (重中之重)
- 实现一个能够自动绘制网络拓扑图的功能
- 客户端和服务端之间进行严格划分, 尤其对Web部分上移除一些铭感操作, 该用客户端在双重加密的环境下进行进行敏感操作, 避免浏览器和一些插件随意读取我们的铭感数据.(重中之重)
- 把那些服务性质的但是单独设计模型重新合并到服务模型中, 然后给出一个特殊操作Dialog, 然后在这个特殊操作的Dialog里通过Vue3渲染或者用后端渲染来实现不同类型服务之间的不同的特殊操作管理页面.
- 端口映射部分要跟lanproxy做配合,通过接口同步的形式做兼容,这样就能避免多次开发同类功能避免重复工作, 也同时能给用户一个模块化加载部分功能的选择. 初次安装时,如果用户打开端口映射管理页面, 给出一个提示+配置页面, 引导用户安装并部署lanproxy的同时, 引导用户如何配置, 并给出配置表单( 两种方案, 地址+账号密码 / 地址+token , 需要对目前的lanprox也进行相应的改动), 要实现可以绑定多个lanproxy, 有时候使用者会有多个环境有多个lanproxy, 后期希望你自己能够解决不同的lanproxy之间进行打通, 实现分布式和统一管理.
- 渐进式推进前后端分离化, 提高人机交互体验感和操作便利性, 渐进式删减后端部分的视图功能(后端渲染), 改成接口服务.
- 服务端实现容器化, 提供 docker 和 k8s 等快速安装和部署方式.
-
人脸识别
参考项目:
先在项目目录下新建一个secret.py文件
_DEBUG = False
DB_BACKEND = 'django.db.backends.postgresql_psycopg2'
# DB_BACKEND = 'django.db.backends.mysql'
DB_HOST = "127.0.0.1"
DB_PORT = 5555
DB_DATABASE = "allkeeper"
DB_USERNAME = "usernage"
DB_PASSWORD = "password"
# 因为是强制HTTPS, 所以最好是使用域名
MINIO_STORAGE_ENDPOINT = '127.0.0.1:9000'
MINIO_STORAGE_ACCESS_KEY = 'MINIO_STORAGE_ACCESS_KEY'
MINIO_STORAGE_SECRET_KEY = 'MINIO_STORAGE_SECRET_KEY'
SECRET_KEY = ''
ADMIN_PATH = ''
SMTP_EMAIL = ""
SMTP_PASSWORD = ""
CSRF_TRUSTED_ORIGINS = ['http://keeper.sdm.net', 'http://kept.sdm.net', "https://www.nyhc.top"]
ES_USERNAME = ""
ES_PASSWORD = ""
ES_URI = "https://127.0.0.1:9002"
ES_CA = "/usr/etc/http_ca.ctr"
ADMIN_USERNAME = ""
ADMIN_PASSWORD = ""
JWT_SIGNATURE = SECRET_KEY
JWT_ISSUER = ""
再执行以下命令来产生数据库文件
python manage.py makemigrations
python manage.py migrate
再执行以下命令来运行项目即可
# 直接console运行
python manange.py runserver 7000
# 后台运行
nohup python manange.py runserver 7000 > app.log 2>&1 & echo $! > app.pid
nginx 下载地址 http://nginx.org/en/download.html
编译参数:--with-http_image_filter_module
http{
...
server{
...
location /icloud-shortcut {
video_thumb;
image_filter resize 100 200;
image_filter_jpeg_quality 80;
alias /external/SADAM/icloud/photos;
autoindex on;
}
location /icloud {
alias /external/SADAM/icloud/photos;
autoindex on;
}
...
}
...
}
先创建allkeeper.service文件并复制allkeeper.service.sample的内容
cp allkeeper.service.sample allkeeper.service
再修改内容, 再移到系统服务单位存储目录
vi allkeeper.service
mv allkeeper.service /usr/lib/systemd/system/
加载新加入的服务单位
systemctl daemon-reload
启动服务
systemctl start allkeeper.service
开启开机自启动
systemctl enable allkeeper.service
Windows脚本(backup_mysql.bat):
@echo off
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b)
For /f "tokens=1-2 delims=/:" %%a in ("%TIME%") do (set mytime=%%a%%b)
set mydatetime=%mydate%_%mytime%
set BackupFile=backup_directory\backup_%mydatetime%.sql
"mysql_install_directory\bin\mysqldump.exe" -u USERNAME -pPASSWORD DATABASE_NAME > %BackupFile%
Linux脚本(backup_mysql.sh):
#!/bin/sh
script_path="$(dirname "$(readlink -f "$0")")"
echo "当前脚本所在路径:$script_path"
backup_dir=${script_path}/backup_sql
mkdir -p $backup_dir
mysqldump -u all_keeper -p 1_nDb9tk0pwa all_keeper > ${backup_dir}/all-keeper_`date +%Y%m%d%H%M%S`.sql
将backup_directory替换为您想存储备份文件的目录
将mysql_install_directory替换为MySQL安装目录
使用真实的数据库用户名代替USERNAME
使用真实的数据库密码代替PASSWORD
使用要备份的数据库名称代替DATABASE_NAME
chmod +x backup_mysql.sh
a) Windows定时任务:
打开任务计划程序 单击"创建基本任务",然后设置触发器(例如:每天、每周等),并选择刚创建的备份脚本作为要执行的操作。
b) Linux的cron任务:
在终端中键入crontab -e以编辑cron配置 添加以下内容(根据实际情况修改):
0 2 * * * /path/to/backup_mysql.sh
这将在每天凌晨2点执行备份任务。请将/path/to替换为脚本的实际路径。
现在Windows上执行一下命令
python3 manage.py collectstatic
然后执行一下命令
scp -rC /Users/shadikesadamu/Projects/django-admin/public [email protected]:/root/AllKeeper/
异常:django.core.exceptions.ImproperlyConfigured: SQLite 3.9.0 or later is required (found 3.7.17).
解决方案:
- 首先检查确认现有版本:
sqlite3 --version
wget https://www.sqlite.org/2022/sqlite-autoconf-3400000.tar.gz
tar -xvzf sqlite-autoconf-3400000.tar.gz
cd sqlite-autoconf-3400000.tar.gz
./configure
make && make install
echo export LD_LIBRARY_PATH="/usr/local/lib">> ~/.bashrc
异常:django.db.utils.NotSupportedError: deterministic=True requires SQLite 3.8.3 or higher
升级了 sqlite 版本(因 django 怕改动太大就没有尝试卸载django重新安装的方法)。 如下,明明版本已经更新成最新了环境变量也加了,软链接指向也是最新了,可运行还是提醒版本过低。
可能是不支持新的版本,最终决定更换sqlite3 为pysqlite3 和 pysqlite3-binary
解决方案:
- 安装pysqlite3和pysqlite3-binary
pip install pysqlite3
pip install pysqlite3-binary
- 打开文件/usr/local/python3/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py,找到 from sqlite3 import dbapi2 as Database 注释它,添加代码
#from sqlite3 import dbapi2 as Database #注释它
from pysqlite3 import dbapi2 as Database #新加这段代码
- 如果二次开发或者部署过程中有什么问题,可以随时联系我们。
- QQ邮箱:[email protected]