一、基础运行环境安装与配置
本指南基于CentOS 7.9 64位操作系统,采用Spring Boot 2.7 + Vue 2.6 + MySQL 8.0 + Redis 6.0 + MinIO架构进行搭建。请确保服务器已连接网络,并拥有root权限。
1. 安装JDK 1.8环境
自贡数字档案馆系统后端依赖Java 8环境。执行以下命令进行安装:
```bash
创建安装目录
mkdir -p /usr/local/java
cd /usr/local/java
下载JDK 1.8安装包(如果下载失败,请手动上传jdk-8u371-linux-x64.tar.gz)
wget https://download.oracle.com/otn-pub/java/jdk/8u371-b11/1f16b43686de4fb88a02b7bea4e7430d/jdk-8u371-linux-x64.tar.gz?AuthParam=1684425678_5d8e8b5c5d8e8b5c -O jdk-8u371-linux-x64.tar.gz
解压
tar -zxvf jdk-8u371-linux-x64.tar.gz
配置环境变量
echo 'export JAVA_HOME=/usr/local/java/jdk1.8.0_371' >> /etc/profile
echo 'export JRE_HOME=${JAVA_HOME}/jre' >> /etc/profile
echo 'export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib' >> /etc/profile
echo 'export PATH=${JAVA_HOME}/bin:$PATH' >> /etc/profile
刷新配置
source /etc/profile
验证安装
java -version
```
2. 安装MySQL 8.0数据库
执行以下命令安装MySQL服务:
```bash
下载并安装MySQL Yum Repository
wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
rpm -ivh mysql80-community-release-el7-7.noarch.rpm
安装MySQL Server
yum install mysql-server -y
启动MySQL并设置开机自启
systemctl start mysqld
systemctl enable mysqld
获取临时 root 密码
grep 'temporary password' /var/log/mysqld.log
```
使用获取到的临时密码登录MySQL,并修改密码为Zigong@2024(请根据实际需求修改):
```sql
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Zigong@2024';
-- 创建专用数据库
CREATE DATABASE zigong_archive_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- 创建远程访问用户
CREATE USER 'zigong_admin'@'%' IDENTIFIED BY 'Zigong@2024';
GRANT ALL PRIVILEGES ON zigong_archive_db. TO 'zigong_admin'@'%';
FLUSH PRIVILEGES;
```
3. 安装Redis缓存服务
```bash
安装EPEL源
yum install epel-release -y
安装Redis
yum install redis -y
修改配置文件,设置访问密码和绑定IP
sed -i 's/^bind 127.0.0.1/bind 0.0.0.0/' /etc/redis.conf
sed -i 's/^ requirepass foobared/requirepass "ZigongRedis2024"/' /etc/redis.conf
启动Redis
systemctl start redis
systemctl enable redis
```
4. 安装MinIO对象存储
用于存储档案电子文件(PDF、OFD等):
```bash
下载MinIO Server
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
mv minio /usr/local/bin/
创建数据目录
mkdir -p /data/minio
启动MinIO (AccessKey: minioadmin, SecretKey: minioadmin)
nohup minio server /data/minio --address :9000 --console-address :9001 > /data/minio/minio.log 2>&1 &
```
二、数据库结构设计与初始化
登录MySQL数据库,执行以下SQL脚本建立核心表结构。请在终端执行:mysql -u zigong_admin -pZigong@2024 zigong_archive_db,然后粘贴以下内容:
```sql
-- 档案案卷表
CREATE TABLE `archive_volume` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`volume_code` varchar(50) NOT NULL COMMENT '案卷号',
`title` varchar(255) NOT NULL COMMENT '题名',
`fonds_id` int(11) DEFAULT NULL COMMENT '全宗号',
`retention_period` varchar(20) DEFAULT NULL COMMENT '保管期限',
`security_level` varchar(20) DEFAULT NULL COMMENT '密级',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`creator` varchar(50) DEFAULT NULL COMMENT '创建人',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_volume_code` (`volume_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='档案案卷表';
-- 档案文件表
CREATE TABLE `archive_file` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`volume_id` bigint(20) NOT NULL COMMENT '所属案卷ID',
`file_name` varchar(255) NOT NULL COMMENT '文件名',
`file_type` varchar(10) DEFAULT NULL COMMENT '文件类型(pdf/ofd)',
`file_size` bigint(20) DEFAULT NULL COMMENT '文件大小(字节)',
`file_path` varchar(500) DEFAULT NULL COMMENT 'MinIO存储路径',
`md5_hash` varchar(32) DEFAULT NULL COMMENT '文件MD5值',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '上传时间',
PRIMARY KEY (`id`),
KEY `idx_volume_id` (`volume_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='档案文件表';
-- 插入初始化测试数据
INSERT INTO `archive_volume` (`volume_code`, `title`, `fonds_id`, `retention_period`, `creator`)
VALUES ('2023-A001', '自贡市2023年度城市建设重点项目档案', '001', '永久', 'admin');
```
三、后端核心服务搭建
后端采用Spring Boot + MyBatis Plus架构。创建项目目录结构并初始配置文件。
1. Maven依赖配置 (pom.xml)
创建文件pom.xml,完整内容如下:
```xml
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.7.14
com.zigong.archive
zigong-archive-system
1.0.0
1.8
3.5.3.1
8.5.2
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-validation
com.baomidou
mybatis-plus-boot-starter
${mybatis-plus.version}
mysql
mysql-connector-java
runtime
org.springframework.boot
spring-boot-starter-data-redis
io.minio
minio
${minio.version}
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-maven-plugin
```
2. 应用配置文件
在src/main/resources目录下创建application.yml:
```yaml
server:
port: 8080
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/zigong_archive_db?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
username: zigong_admin
password: Zigong@2024
redis:
host: 127.0.0.1
port: 6379
password: ZigongRedis2024
database: 0
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
logic-delete-field: deleted
logic-delete-value: 1
logic-not-delete-value: 0
MinIO配置
minio:
endpoint: http://127.0.0.1:9000
accessKey: minioadmin
secretKey: minioadmin
bucketName: zigong-archive
```
3. 核心业务代码实现

创建启动类ZigongArchiveApplication.java:
```java
package com.zigong.archive;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.zigong.archive.mapper")
public class ZigongArchiveApplication {
public static void main(String[] args) {
SpringApplication.run(ZigongArchiveApplication.class, args);
}
}
```
创建实体类ArchiveVolume.java:
```java
package com.zigong.archive.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class ArchiveVolume {
@TableId(type = IdType.AUTO)
private Long id;
private String volumeCode;
private String title;
private Integer fondsId;
private String retentionPeriod;
private String securityLevel;
private LocalDateTime createTime;
private String creator;
}
```
创建Mapper接口ArchiveVolumeMapper.java:
```java
package com.zigong.archive.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zigong.archive.entity.ArchiveVolume;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface ArchiveVolumeMapper extends BaseMapper
{
}
```
创建控制器ArchiveController.java,提供档案查询接口:
```java
package com.zigong.archive.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.zigong.archive.entity.ArchiveVolume;
import com.zigong.archive.mapper.ArchiveVolumeMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/api/archive")
public class ArchiveController {
@Autowired
private ArchiveVolumeMapper volumeMapper;
@GetMapping("/list")
public List list(@RequestParam(required = false) String title) {
QueryWrapper wrapper = new QueryWrapper<>();
if (title != null && !title.isEmpty()) {
wrapper.like("title", title);
}
return volumeMapper.selectList(wrapper);
}
}
```
四、前端管理界面开发
前端使用Vue 2.6 + Element UI + Axios进行开发。确保已安装Node.js 14+环境。
1. 项目初始化
```bash
安装Vue CLI
npm install -g @vue/cli
创建项目
vue create zigong-archive-web
选择默认配置 (Default ([Vue 2] babel, eslint))
进入目录并安装依赖
cd zigong-archive-web
npm install element-ui axios
```
2. 配置Axios与路由
在src/main.js中引入Element UI和Axios:
```javascript
import Vue from 'vue'
import App from './App.vue'
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import axios from 'axios';
Vue.use(ElementUI);
Vue.prototype.$http = axios;
// 配置后端API地址
axios.defaults.baseURL = 'http://127.0.0.1:8080';
Vue.config.productionTip = false
new Vue({
render: h => h(App),
}).$mount('app')
```
3. 编写档案列表页面
修改src/App.vue,实现档案查询列表功能:
```html
自贡数字档案馆系统 - 案卷管理
查询
查看
```
五、Nginx部署与系统联调
1. 编译打包后端与前端
在后端项目根目录执行:
```bash
mvn clean package -DskipTests
生成的jar包位于 target/zigong-archive-system-1.0.0.jar
```
在前端项目根目录执行:
```bash
npm run build
生生静态文件位于 dist 目录
```
2. 安装并配置Nginx
```bash
yum install nginx -y
```
编辑Nginx配置文件/etc/nginx/nginx.conf,替换server块内容:
```nginx
server {
listen 80;
server_name localhost;
前端静态资源
location / {
root /root/zigong-archive-web/dist; 请修改为实际的前端dist路径
index index.html;
try_files $uri $uri/ /index.html;
}
后端API代理
location /api/ {
proxy_pass http://127.0.0.1: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;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
```
启动Nginx并