# domain_system_java
**Repository Path**: domain-system-Java/domain_system_java
## Basic Information
- **Project Name**: domain_system_java
- **Description**: 域名系统后端开发 Springboot+Vue
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: https://gitee.com/domain-system-Java/domain_system_java
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 1
- **Created**: 2025-03-08
- **Last Updated**: 2025-09-03
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 域名系统部署文档
本文档为域名系统部署文档,其中涉及Springboot、Vue2、ELementUI、Python、flask、neo4j等技术栈。
## 1. 部署后台系统



### 环境配置
参考博客:https://blog.csdn.net/kou869929526/article/details/125679503
本项目后台主要使用Springboot开发,使用的jdk为jdk17版本,在构建maven之前首先要确保有jdk17环境。

参考上面博客的内容完成:Java、Maven等环境变量的配置
### 安装步骤
- git clone https://gitee.com/domain-system-Java/domain_system_java.git
- 使用maven引入依赖
- 将spba_structure_utf8_20250713.sql文件导入数据库
- 修改application-dev.yml文件中mysql、redis配置项,将用户密码设置为自己的数据库的用户密码
- 从master新建一个分支,然后使用git merge合并`ubuntu_java`或者`dev_nodeMonitor_lyx`分支,获取最新代码
- 获取客户端真实ip地址,需要配置nginx
### 目录结构
```text
├── SpbaApiApplication 项目启动类
|
├── config 配置类
|
├── controller 控制器
|
|── dao 数据访问层
|
├── domain 实体类
│ ├── dto 数据传输对象
│ ├── entity 数据表实体类
│ ├── es Elasticsearch实体类
|
├── exception 异常处理
|
├── interceptor 拦截器
|
├── service 服务接口层
│ ├── impl 服务接口实现层
|
├── utils 工具类
|
├── resources
| ├── mapper SQL对应的XML文件
```
### 编程规范(不是必须)
```text
规范不是为了约束和禁锢大家的创造力,而是为了在团队实际开发过程中,提高项目的开发效率。以下规范,仅供参考。
可以直接把这个规范丢给Trae或者cursor的规则里面,让AI也遵从这个编程规范
1.路由规范
• 推荐使用restful命名, 规范如下:
• GET /admins 获取管理员列表
• GET /admin/{id} 获取管理员详情
• POST /admin 新增管理员
• PUT /admin 编辑管理员
• DELETE /admin/{id} 删除管理员
2.controller层规范
• 不做任何的业务逻辑操作
• 负责协同和委派业务,充当路由的角色,每个方法要保持简洁
• 不做任何的参数、业务校验,参数校验只允许使用@Valid 注解做简单的校验
• 只允许在 method 上添加 RequestMapping 注解,不允许加在 class 上
3.service层规范
• 合理拆分 service 文件,如果业务较大,请拆分为多个 service。
• 谨慎处理 @Transactional 事务注解的使用,不要简单对 service 的方法添加个 @Transactional。应当合并对数据库的操作,尽量减少添加了@Transactional方法内的业务逻辑。
4.dao层规范
• 优先使用 Mybatis-plus 框架
• 所有 Dao 继承自 BaseMapper
• 禁止使用 Mybatis-plus 的 Wrapper 条件构建器
• 禁止直接在 Mybatis xml 中写死常量,应从 dao 中传入到 xml 中
• 建议不要使用星号 * 代替所有字段
5.dao层方法命名规范
• 获取单个对象的方法用 getInfo 做前缀
• 获取分页对象的方法用 getList 做前缀
• 获取所有对象的方法用 getAll 做前缀
• 获取统计值的方法用 getCount 做前缀
• 插入的方法用 save
• 修改的方法用 update
• 删除的方法用 delete
• 建议:dao层方法命名尽量以sql语义命名,避免与业务关联。命名与业务关联,局限了dao方法的使用场景和范围,降低了方法的复用性,造成他人困惑以及重复造轮子。
```
## 2. 部署前端页面
该项目基于Vue,使用vue-cli3脚手架,引用Element UI组件库、Echarts等,作为一套基础的后台系统,适用于绝大部分的后台管理系统开发。
### 安装步骤
- git clone https://gitee.com/domain-system-Java/domain_system_vue.git
- cd 目录名称
- npm install
- npm run serve
- 浏览器访问:[http://localhost:8080](http://localhost:8080/)
注意: npm install需要在运行前开启代理的Tun模式(因为源仓库在国外),如果不能实现该步骤,有以下两个解决方案:
1. 使用国内淘宝镜像,参考博客:https://developer.aliyun.com/article/383274
- 临时使用: npm --registry https://registry.npm.taobao.org install express
- 持久使用: npm config set registry https://registry.npm.taobao.org
- 配置后可通过下面方式来验证是否成功
`npm config get registry`
或
`npm info express`
- 如果淘宝源不能用的话,可以百度一下换其他源
2. 使用我压缩的`node_modules.zip`,将代码中的`node_modules`文件夹删除,解压之后放在对应位置即可。
这样如果遇到一些编译错误,只要重装部分工具即可。代码放在部署的服务器上了,通过mobaxTerm下载到本地即可。
## 3. 部署flask web项目
由于本项目的部分功能需要使用python来进行域名解析图谱的绘制,所以还需要启动一个flask轻量级项目。
该项目涉及到python、flask、vis.js等技术栈。
### 安装步骤
- 在服务器上找到`flask_web_deploy.tar.gz`,位置:/home/yuxiang/flask_web_deploy.tar.gz 下载到本地电脑后解压。

- 安装所需要的工具: pip3 install -r requirement.txt
```text
flask
dnspython
pymysql
flask-sqlalchemy
requests
py2neo
pyvis
```
- 运行app.py : `python3 app.py`
- 点击网页检查是否运行成功:
- 该系统需要的数据库文件也已导出:`flask_dnsinfo_domain_query_2025-07-13_181856.sql`
- 后续还要进行进一步优化,需要做到一天更新一次查询域名的信息,所以以后也会把这个系统放在git上。
## 4. 部署Neo4j图数据库
neo4j是一个强大的图数据库工具,在本系统中,使用springboot调用neo4j获取相关节点的图信息,再通过vis.js绘制节点监测中的节点图谱
linux的部署步骤以及问题已经放在语雀文档了,这里主要说明windows的安装步骤。
windows:https://www.yuque.com/xiangl-jm6y3/etekrw/sk1n5kx80oqhni35?singleDoc# 《Neo4j》 密码:qgut
### 安装步骤
- 在语雀中找到知识图谱-Neo4j文档,有neo4j的安装步骤和操作手册,有问题可以百度更详细的步骤。
- 安装完成后设置用户名和密码,注意修改密码后需要在springboot项目中neo4j的配置信息同步修改。
- 从服务器中找到neo4j.dump,这是我本地的neo4j数据库的数据,下载。
- 参考博客:https://blog.csdn.net/m0_69483514/article/details/131287480,使用dump文件导入neo4j数据库中。
- 测试是否导入成功:
```cyp
MATCH (N) RETURN COUNT(N);
```
## 运行
- 运行后端: `cd /path/to/domain_system_java && mvn spring-boot:run `或者使用编辑器运行:
- 运行前端: `cd /path/to/domain_system_vue && npm run server `
- 运行flask项目: `cd /path/to/flask_web && python3 app.py `
- 运行neo4j: 打开电脑powershell看服务是否启动`neo4j status`,如果没有启动: `neo4j start`