网站首页/ 信息中心/ 档案百科/

本溪数字档案馆系统:从零搭建到数据上线的全栈实操指南

发布时间:2026年08月22日 05:30:18 浏览量:0

系统架构与核心技术选型

本溪数字档案馆系统采用B/S架构,前端使用Vue 3 + TypeScript,后端使用Spring Boot 2.7,数据库使用PostgreSQL 14,文件存储采用MinIO。这套技术栈成熟稳定,社区支持完善,能完全满足数字档案的长期保存需求。

环境准备与依赖安装

首先确保你的开发环境满足以下要求:JDK 11或更高版本、Node.js 16.20.0、PostgreSQL 14、MinIO Server 2023。

后端项目初始化命令:

``` mvn archetype:generate -DgroupId=com.benxi.archives -DartifactId=digital-archive -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false ```

前端项目初始化命令:

``` npm create vue@latest benxi-archive-frontend -- --typescript --router --pinia ```

数据库设计与初始化

创建数据库和用户:

``` CREATE DATABASE benxi_archive; CREATE USER archive_admin WITH PASSWORD 'YourSecurePassword123!'; GRANT ALL PRIVILEGES ON DATABASE benxi_archive TO archive_admin; ```

核心表结构SQL文件(archive_schema.sql):

``` CREATE TABLE archive_category ( id SERIAL PRIMARY KEY, category_code VARCHAR(50) UNIQUE NOT NULL, category_name VARCHAR(100) NOT NULL, parent_id INTEGER REFERENCES archive_category(id), sort_order INTEGER DEFAULT 0, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE digital_archive ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), archive_number VARCHAR(100) UNIQUE NOT NULL, title VARCHAR(500) NOT NULL, category_id INTEGER REFERENCES archive_category(id), keywords TEXT[], security_level INTEGER DEFAULT 0, file_size BIGINT, file_md5 VARCHAR(32), storage_path VARCHAR(500), created_by VARCHAR(50), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ```

后端服务搭建与配置

Spring Boot基础配置

application.yml配置文件:

``` server: port: 8080 servlet: context-path: /api spring: datasource: url: jdbc:postgresql://localhost:5432/benxi_archive username: archive_admin password: YourSecurePassword123! driver-class-name: org.postgresql.Driver hikari: maximum-pool-size: 10 minimum-idle: 5 jpa: hibernate: ddl-auto: validate properties: hibernate: dialect: org.hibernate.dialect.PostgreSQLDialect format_sql: true show-sql: true minio: endpoint: http://localhost:9000 accessKey: minioadmin secretKey: minioadmin bucket: benxi-archives ```

文件上传服务实现

创建MinIO配置类:

``` @Configuration public class MinioConfig { @Value("${minio.endpoint}") private String endpoint; @Value("${minio.accessKey}") private String accessKey; @Value("${minio.secretKey}") private String secretKey; @Bean public MinioClient minioClient() { return MinioClient.builder() .endpoint(endpoint) .credentials(accessKey, secretKey) .build(); } } ```

文件上传控制器:

``` @RestController @RequestMapping("/api/archive") public class ArchiveUploadController { @PostMapping("/upload") public ResponseEntity uploadArchive( @RequestParam("file") MultipartFile file, @RequestParam("archiveNumber") String archiveNumber) { String originalFilename = file.getOriginalFilename(); String fileExtension = originalFilename.substring(originalFilename.lastIndexOf(".")); String objectName = archiveNumber + fileExtension; try { minioClient.putObject( PutObjectArgs.builder() .bucket("benxi-archives") .object(objectName) .stream(file.getInputStream(), file.getSize(), -1) .contentType(file.getContentType()) .build() ); // 计算文件MD5 String md5 = DigestUtils.md5DigestAsHex(file.getInputStream()); return ResponseEntity.ok(new UploadResult(true, objectName, md5)); } catch (Exception e) { return ResponseEntity.status(500).body(new UploadResult(false, null, null)); } } } ```

前端界面开发

档案上传组件实现

创建ArchiveUpload.vue组件:

``` ```

系统部署与配置

Nginx反向代理配置

本溪数字档案馆系统:从零搭建到数据上线的全栈实操指南

创建/etc/nginx/conf.d/benxi-archive.conf:

``` server { listen 80; server_name archive.benxi.gov.cn; 前端静态文件 location / { root /var/www/benxi-archive/dist; index index.html; try_files $uri $uri/ /index.html; } 后端API代理 location /api/ { proxy_pass http://localhost:8080/api/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } 文件访问代理(MinIO) location /files/ { proxy_pass http://localhost:9000/benxi-archives/; proxy_set_header Host $host; } } ```

系统启动脚本

创建启动脚本start_archive.sh:

``` !/bin/bash 启动PostgreSQL sudo systemctl start postgresql-14 启动MinIO cd /opt/minio ./minio server /data/minio --console-address ":9001" & 启动后端服务 cd /opt/benxi-archive/backend nohup java -jar digital-archive-1.0.0.jar > backend.log 2>&1 & 启动Nginx sudo systemctl start nginx echo "本溪数字档案馆系统已启动" echo "前端访问:http://archive.benxi.gov.cn" echo "MinIO控制台:http://localhost:9001" ```

数据迁移与备份策略

档案数据备份脚本

创建backup_archive.sh:

``` !/bin/bash BACKUP_DIR="/backup/archives" DATE=$(date +%Y%m%d_%H%M%S) 备份数据库 pg_dump -U archive_admin benxi_archive > $BACKUP_DIR/db_backup_$DATE.sql 备份MinIO存储桶 mc mirror --overwrite minio/benxi-archives $BACKUP_DIR/files_$DATE/ 压缩备份文件 tar -czf $BACKUP_DIR/archive_backup_$DATE.tar.gz \ $BACKUP_DIR/db_backup_$DATE.sql \ $BACKUP_DIR/files_$DATE/ 清理7天前的备份 find $BACKUP_DIR -name ".tar.gz" -mtime +7 -delete echo "备份完成:$BACKUP_DIR/archive_backup_$DATE.tar.gz" ```

系统监控配置

创建Prometheus监控配置prometheus.yml:

``` scrape_configs: - job_name: 'benxi-archive' static_configs: - targets: ['localhost:8080'] labels: service: 'archive-backend' - job_name: 'postgres' static_configs: - targets: ['localhost:9187'] - job_name: 'minio' static_configs: - targets: ['localhost:9000'] ```

故障排查与维护

常见问题解决

1. 文件上传失败:检查MinIO服务状态,确保存储桶存在且权限正确

2. 数据库连接失败:验证PostgreSQL服务是否运行,检查application.yml中的连接配置

3. 前端无法访问API:检查Nginx配置,确保/api/路径正确代理到后端服务

系统日志查看

后端日志:

``` tail -f /opt/benxi-archive/backend/backend.log ```

Nginx访问日志:

``` tail -f /var/log/nginx/access.log ```

Nginx错误日志:

``` tail -f /var/log/nginx/error.log ```
档案制度建设少走弯路 实战教育手把手带你全流程落地
档案制度建设少走弯路 实战教育手把手带你全流程落地
家人们谁懂啊,我去年帮3个小微企业搭档案制度的时候,踩的坑能绕公司前台的奶茶堆三圈。那时候我还是个抱着《档案管理学》啃的理论党,总觉得不就是归个纸嘛有啥难的,直到把公司攒了5年的合同翻得乱七八糟找不到...
2026年08月22日 05:30:18
档案整理规范服务收费标准,这钱花得明白不肉疼
档案整理规范服务收费标准,这钱花得明白不肉疼
哎,哥们儿姐们儿,今儿咱不聊虚的,就唠唠“档案整理规范服务收费标准”这档子事儿。你别一听“规范”、“标准”就头大,觉得又是啥高深莫测、价格云里雾里的服务。我跟你讲,这玩意儿就跟咱家里大扫除一个理儿,只...
2026年08月22日 05:30:18
水利普查档案数字化全流程指南:合规归档+效率提升实操方案
水利普查档案数字化全流程指南:合规归档+效率提升实操方案
不少水利系统的朋友最近都在问,存量水利普查档案转数字化怎么才能符合归档要求,还能少踩坑?毕竟很多单位攒了十几年的普查档案,既有纸质的河湖勘测表、工程台账,也有老的光盘存储数据,整理起来头都大。这篇我就...
2026年08月22日 05:30:18
微信咨询
电话联系
QQ客服
微信咨询一对一服务
服务热线: 028-8744 4417
QQ客服: 2305721818