最低配置:2核4G云服务器/本地虚拟机,操作系统选择CentOS7.9或Ubuntu22.04,依赖组件版本统一为:MySQL8.0、JDK11、Redis6.2、ElasticSearch7.17.0、MinIO最新稳定版。
执行以下命令前请切换至root权限:
``` 安装JDK11 yum install -y java-11-openjdk-devel 安装MySQL8.0 yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm yum install -y mysql-community-server systemctl start mysqld && systemctl enable mysqld 安装Redis6.2 yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm yum --enablerepo=remi install -y redis systemctl start redis && systemctl enable redis ```ElasticSearch7.17.0中文分词器直接下载对应版本:https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.0/elasticsearch-analysis-ik-7.17.0.zip,解压后放入ES plugins目录重启ES即可。
存储层分为三类,分别存储结构化数据、档案文件、全文检索索引:
启动后访问http://服务器IP:9090即可进入管理后台,默认账号admin,密码Archive@2024。
采用SpringBoot2.7.14作为基础框架,核心pom.xml依赖如下:
```xml
完整application.yml配置可直接复制:
```yaml spring: datasource: url: jdbc:mysql://127.0.0.1:3306/archive_system?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8 username: root password: 你的MySQL密码 redis: host: 127.0.0.1 port: 6379 minio: endpoint: http://127.0.0.1:9000 accessKey: admin secretKey: Archive@2024 bucket: archive elasticsearch: host: 127.0.0.1 port: 9200 ```必须新增全局拦截器,所有请求校验用户权限,对应涉密等级的档案仅允许有权限的用户访问,禁止越权。核心接口可直接基于Mybatis-Plus生成CRUD,上传接口需先校验文件哈希避免重复存储,检索接口直接调用ES全文检索接口。
采用Vue3+ElementPlus搭建前端,核心页面为档案列表、上传、检索、权限管理,执行以下命令打包:
``` npm install npm run build ```将dist目录上传至服务器/usr/share/nginx/html目录,新增Nginx配置如下:
``` server { listen 80; server_name 你的域名/服务器IP; root /usr/share/nginx/html/dist; index index.html; location /api/ { proxy_pass http://127.0.0.1:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ```重启Nginx后即可通过IP/域名访问系统。
所有涉密档案文件上传时必须采用AES-256加密存储,加密密钥单独存放在配置中心,禁止硬编码在代码中。新增操作日志切面,所有档案的增删改查操作必须记录操作人、IP、时间、操作内容,保存周期不少于3年。涉密档案访问需新增二次鉴权,比如短信验证码、UKey校验,避免账号泄露导致数据泄露。
自动备份脚本可直接使用以下shell脚本,配置crontab每日凌晨2点执行:
```shell !/bin/bash mysqldump -u root -p你的MySQL密码 archive_system > /backup/archive_$(date +%Y%m%d).sql 同步备份至MinIO mc cp /backup/archive_$(date +%Y%m%d).sql minio/backup/ ```