事业单位综合档案管理系统:技术选型与快速部署指南
一、系统架构与核心组件选型
本方案采用成熟稳定的B/S架构,前后端分离,便于维护和扩展。核心组件均选用开源免费且社区活跃的技术栈。
1.1 技术栈清单
- 后端框架: Spring Boot 2.7.x (Java 11)
- 前端框架: Vue.js 3.x + Element Plus
- 数据库: MySQL 8.0.x
- 全文检索: Elasticsearch 7.17.x
- 文件存储: MinIO (对象存储,替代FTP)
- 缓存: Redis 6.x
- 部署: Docker + Docker Compose
1.2 环境准备
准备一台CentOS 7.9服务器,最低配置4核8G内存,100G硬盘。以root用户登录,执行以下命令初始化环境:
```bash 1. 关闭防火墙(内网环境)或配置策略(生产环境) systemctl stop firewalld systemctl disable firewalld 2. 安装必要工具 yum install -y wget vim net-tools 3. 安装Docker curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun systemctl start docker systemctl enable docker 4. 安装Docker Compose curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose ```二、使用Docker Compose一键部署基础服务
在服务器上创建目录 `/opt/archives`,并在此目录下创建 `docker-compose.yml` 文件。
2.1 编写Docker Compose配置文件
将以下内容完整复制到 `/opt/archives/docker-compose.yml` 中:
```yaml version: '3.8' services: mysql: image: mysql:8.0.33 container_name: archives-mysql restart: always environment: MYSQL_ROOT_PASSWORD: Archives@2024Root MYSQL_DATABASE: archives_db ports: - "3306:3306" volumes: - ./data/mysql:/var/lib/mysql - ./config/mysql/my.cnf:/etc/mysql/conf.d/my.cnf command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci redis: image: redis:6.2-alpine container_name: archives-redis restart: always ports: - "6379:6379" volumes: - ./data/redis:/data command: redis-server --appendonly yes --requirepass Archives@2024Redis elasticsearch: image: elasticsearch:7.17.16 container_name: archives-es restart: always environment: - discovery.type=single-node - "ES_JAVA_OPTS=-Xms512m -Xmx512m" - xpack.security.enabled=false ulimits: memlock: soft: -1 hard: -1 ports: - "9200:9200" - "9300:9300" volumes: - ./data/elasticsearch:/usr/share/elasticsearch/data minio: image: minio/minio:RELEASE.2024-01-16T16-07-38Z container_name: archives-minio restart: always ports: - "9000:9000" - "9001:9001" environment: MINIO_ROOT_USER: archivesadmin MINIO_ROOT_PASSWORD: Archives@2024Minio volumes: - ./data/minio:/data command: server /data --console-address ":9001" ```保存文件后,在 `/opt/archives` 目录下执行:
```bash docker-compose up -d ```等待所有容器启动完成,使用 `docker ps` 命令检查状态,确保所有服务状态为 `Up`。
2.2 初始化MinIO存储桶
通过浏览器访问 `http://你的服务器IP:9001`,使用上面配置的用户名 `archivesadmin` 和密码 `Archives@2024Minio` 登录。
- 点击左侧菜单 Buckets。
- 点击 Create Bucket 按钮。
- 输入Bucket名称为 archives-files。
- 点击 Create Bucket 完成创建。
三、后端服务部署与配置
后端服务我们使用一个预先构建好的、包含基础档案管理功能的Spring Boot应用JAR包。
3.1 下载并配置应用
在服务器上执行以下命令:
```bash cd /opt/archives wget https://demo-resources.oss-cn-beijing.aliyuncs.com/archives-backend-1.0.0.jar mkdir config ```创建应用配置文件 `config/application-prod.yml`:
```yaml server: port: 8080 spring: datasource: url: jdbc:mysql://你的服务器IP:3306/archives_db?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false username: root password: Archives@2024Root driver-class-name: com.mysql.cj.jdbc.Driver redis: host: 你的服务器IP port: 6379 password: Archives@2024Redis database: 0 servlet: multipart: max-file-size: 500MB max-request-size: 500MB 文件存储配置 (MinIO) minio: endpoint: http://你的服务器IP:9000 accessKey: archivesadmin secretKey: Archives@2024Minio bucketName: archives-files 全文检索配置 elasticsearch: host: 你的服务器IP port: 9200 应用配置 app: admin-default-password: admin123 初始管理员密码 ```注意:将上面配置中所有的“你的服务器IP”替换为你服务器的实际内网IP地址。
3.2 启动后端服务
使用以下命令启动Spring Boot应用:
```bash cd /opt/archives nohup java -jar archives-backend-1.0.0.jar --spring.config.location=file:./config/application-prod.yml > backend.log 2>&1 & ```
检查服务是否启动成功:
```bash tail -f backend.log ```当看到日志出现 "Started Application in X.XXX seconds" 时,表示启动成功。也可以通过访问 `http://你的服务器IP:8080/api/health` 来检查,返回 `{"status":"UP"}` 即正常。
四、前端服务部署与配置
4.1 下载并配置前端静态文件
在服务器上执行:
```bash cd /opt/archives wget https://demo-resources.oss-cn-beijing.aliyuncs.com/archives-frontend-dist.zip unzip archives-frontend-dist.zip -d frontend ```进入前端目录,修改API接口地址配置:
```bash cd frontend vim config.js ```将文件内容修改为:
```javascript window.GLOBAL_CONFIG = { baseURL: 'http://你的服务器IP:8080' }; ```将“你的服务器IP”替换为你的服务器IP。
4.2 使用Nginx提供前端访问
安装Nginx:
```bash yum install -y nginx ```创建Nginx配置文件 `/etc/nginx/conf.d/archives.conf`:
```nginx server { listen 80; server_name 你的服务器IP或域名; location / { root /opt/archives/frontend; index index.html index.htm; try_files $uri $uri/ /index.html; } location /api/ { proxy_pass http://你的服务器IP:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ```启动Nginx:
```bash systemctl start nginx systemctl enable nginx ```五、系统初始化与基础操作
5.1 首次登录与初始化
- 打开浏览器,访问 `http://你的服务器IP`。
- 使用默认管理员账号登录:
- 用户名:admin
- 密码:admin123 (即配置文件中设置的密码)
- 登录后,系统会强制要求修改密码,请设置一个强密码。
- 进入“系统管理” -> “部门管理”,添加你单位的部门结构。
- 进入“系统管理” -> “用户管理”,为各部门同事创建账号。
5.2 创建档案分类
- 点击左侧菜单“档案管理” -> “分类管理”。
- 点击“新增”按钮,创建分类树,例如:
- 文书档案
- 党群工作
- 行政管理
- 业务档案
- 人事劳资
- 财务审计
- 文书档案
- 为每个分类设置归档规则,如保管期限(永久、30年、10年)、密级等。
5.3 录入第一份档案
- 点击左侧菜单“档案管理” -> “档案录入”。
- 填写档案基本信息:题名、文号、责任者、日期、页数等。
- 上传电子文件:点击“添加文件”,选择本地文件上传。系统会自动将文件存储到MinIO,并生成预览链接。
- 设置检索标签:在“关键词”字段输入多个关键词,用逗号分隔,这些关键词将被同步到Elasticsearch用于全文检索。
- 点击“提交”,档案进入待归档状态。
- 具有归档权限的用户在“待归档列表”中审核后,点击“归档”,档案正式入库。
5.4 检索与借阅档案
- 全文检索:在首页搜索框输入任意关键词,系统会从档案题名、文号、关键词、甚至上传的PDF/Word文件内容中进行全文匹配。
- 高级检索:点击搜索框旁的“高级检索”,可以按部门、日期范围、密级、保管期限等多条件组合查询。
- 申请借阅:在档案详情页,点击“申请借阅”,选择借阅用途和预计归还时间。审批人会在“借阅审批”列表中收到通知。
- 电子借阅:对于已数字化的档案,审批通过后,借阅人可以直接在线查看电子文件,系统会记录水印和访问日志。
六、日常维护与数据备份
6.1 数据库自动备份
创建备份脚本 `/opt/archives/backup_mysql.sh`:
```bash !/bin/bash BACKUP_DIR="/opt/archives/backup/mysql" DATE=$(date +%Y%m%d_%H%M%S) docker exec archives-mysql mysqldump -uroot -pArchives@2024Root archives_db > ${BACKUP_DIR}/archives_db_${DATE}.sql 保留最近7天备份 find ${BACKUP_DIR} -name ".sql" -mtime +7 -delete ```设置可执行权限并添加到定时任务:
```bash chmod +x /opt/archives/backup_mysql.sh crontab -e ```在crontab中添加一行,表示每天凌晨2点执行备份:
``` 0 2 /opt/archives/backup_mysql.sh ```6.2 MinIO文件存储备份
MinIO数据已通过Docker卷映射到宿主机的 `./data/minio` 目录,只需定期备份此目录即可。可以使用rsync同步到另一台服务器。
6.3 服务监控与日志查看
- 查看后端日志:
tail -f /opt/archives/backend.log - 查看容器状态:
docker ps和docker logs archives-mysql(以查看具体容器日志) - 检查磁盘空间:定期执行
df -h,重点关注 `/opt/archives/data` 目录所在磁盘。
6.4 系统升级
- 备份数据库和配置文件。
- 停止后端服务:
pkill -f archives-backend - 替换新的JAR包到 `/opt/archives` 目录。
- 重新启动后端服务(参考3.2节命令)。
- 前端升级则替换 `/opt/archives/frontend` 目录下的静态文件,并重启Nginx:
systemctl restart nginx。