革命历史数字档案馆系统从零搭建到落地部署全流程实操指南
前期准备与环境依赖安装
1. 基础环境要求
服务器最低配置:2核4G云服务器,操作系统选择CentOS7.9或Ubuntu22.04,存储盘预留至少100G空间用于存放档案扫描件、音视频资源。所有操作默认使用root权限执行,非root用户所有命令前加sudo即可。
2. 依赖一键安装命令
Ubuntu22.04系统执行以下命令:
``` 更新系统源 apt update && apt upgrade -y 安装JDK11(后端运行依赖) apt install openjdk-11-jdk -y 安装MySQL8.0(存储档案元数据) apt install mysql-server-8.0 -y 安装MinIO(对象存储,存放档案资源文件) wget https://dl.min.io/server/minio/release/linux-amd64/minio chmod +x minio mv minio /usr/local/bin/ 安装Nginx(前端部署、反向代理) apt install nginx -y ```CentOS7.9系统执行以下命令:
``` yum update -y yum install java-11-openjdk-devel mysql-server nginx wget -y wget https://dl.min.io/server/minio/release/linux-amd64/minio chmod +x minio mv minio /usr/local/bin/ ```MySQL初始化配置:
``` 登录MySQL mysql 修改root密码,替换为你自己的强密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'Rev123!@Archives'; 创建业务数据库 CREATE DATABASE revolutionary_archives DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; exit ```系统核心配置与部署
1. 后端代码配置与打包
拉取开源稳定版代码:
``` git clone https://gitee.com/open-revolutionary-archives/revolutionary-archives-system.git cd revolutionary-archives-system/archives-admin ```修改生产环境配置文件application-prod.yml,完整可复制配置如下:
``` spring: datasource: url: jdbc:mysql://127.0.0.1:3306/revolutionary_archives?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root password: Rev123!@Archives 替换为你设置的MySQL密码 servlet: multipart: max-file-size: 10GB max-request-size: 10GB minio: endpoint: http://你的服务器公网IP:9000 accessKey: minioAdmin2024 替换为自定义16位以上强密码 secretKey: Minio@2024Archives 替换为自定义16位以上强密码 bucketName: archives-file server: port: 8080 ```执行打包命令:mvn clean package -DskipTests,打包完成后得到target目录下的archives-admin.jar文件。
2. 前端代码打包
进入前端目录:cd ../archives-ui,先替换接口地址,修改.env.production文件:VUE_APP_BASE_API = 'http://你的服务器公网IP/prod-api',然后执行打包命令:
``` 安装依赖 npm install --registry=https://registry.npmmirror.com 打包 npm run build ```打包完成后得到dist文件夹,上传到服务器的/data/archives目录下,提前创建目录:mkdir -p /data/archives。
3. 服务启动配置

启动MinIO服务:
``` mkdir -p /data/minio/data 后台启动MinIO,控制台端口为9001 nohup minio server /data/minio/data --console-address ":9001" > /data/minio/minio.log 2>&1 & ```访问http://你的公网IP:9001,使用初始账号密码minioadmin/minioadmin登录,创建名为archives-file的存储桶,设置权限为私有,修改accessKey和secretKey为你配置文件中设置的内容。
启动后端服务:nohup java -jar archives-admin.jar --spring.profiles.active=prod > /data/archives/admin.log 2>&1 &
配置Nginx反向代理,修改/etc/nginx/sites-available/default(Ubuntu)或/etc/nginx/conf.d/default.conf(CentOS),完整配置如下:
``` server { listen 80; server_name 你的服务器公网IP; location / { root /data/archives/dist; index index.html index.htm; try_files $uri $uri/ /index.html; } location /prod-api/ { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:8080/; } client_max_body_size 10G; } ```执行nginx -t检查配置无误后,执行nginx -s reload重启Nginx生效。
核心功能实操配置
1. 基础数据初始化
访问http://你的公网IP,使用默认账号admin、密码admin123登录后台,第一步必须修改管理员默认密码,避免数据泄露。然后执行菜单初始化脚本:mysql -uroot -p你设置的MySQL密码 revolutionary_archives < /root/revolutionary-archives-system/doc/archives_menu.sql,刷新页面后即可看到完整的档案管理模块。
2. 档案批量入库操作
进入【档案管理】-【分类管理】,按需创建分类:纸质档案、影像档案、实物档案、口述史档案,每个分类可自定义扩展字段,比如纸质档案可添加“年代”“原存放地点”“损坏等级”字段。批量导入前先下载标准模板,在【档案导入】页面点击“下载模板”,按照模板填写对应字段后上传,支持Excel批量导入元数据、单文件最大10G的音视频/扫描件上传。
3. 公开查询权限配置
如需对外开放档案查询入口,进入【系统管理】-【角色管理】,创建“普通访客”角色,勾选【档案查询】【公开档案浏览】权限,然后进入【系统设置】-【基础设置】,勾选“允许游客访问公开档案”,保存后普通用户无需登录即可访问标记为公开级别的档案内容。
常见问题排查与安全加固
1. 常见问题排查
- 大文件上传失败:检查Nginx的client_max_body_size配置、SpringBoot的multipart配置是否都设置为10G以上,同时检查服务器安全组是否放开9000端口
- 前端无法访问后端:检查服务器安全组是否放开80、8080端口,确认后端服务是否正常运行,执行ps -ef | grep java查看进程是否存在
- MySQL连接失败:执行GRANT ALL ON revolutionary_archives. TO 'root'@'%' IDENTIFIED BY '你的MySQL密码'; 然后执行flush privileges; 开启远程访问权限
2. 安全加固操作
- 配置定时数据库备份,执行crontab -e添加定时任务:0 2 mysqldump -uroot -p你的MySQL密码 revolutionary_archives > /data/backup/archives_$(date +\%Y\%m\%d).sql,每天凌晨2点自动备份
- MinIO存储桶关闭公开读写权限,所有资源访问走后端签名接口,避免未授权访问
- 后台登录开启二次验证,进入【系统设置】-【安全设置】,开启邮箱或短信二次验证,避免账号被盗
全部配置完成后,可先导入1-2条测试档案验证上传、查询、下载全流程,无问题后再正式导入所有革命历史档案数据。