淮安数字档案馆系统全栈部署与配置实操手册
一、基础运行环境准备
在开始部署淮安数字档案馆系统之前,必须确保服务器环境满足以下硬性指标。本指南基于CentOS 7.9操作系统编写,其他Linux发行版命令可能略有差异。
1. 安装JDK 11环境
系统后端基于Spring Boot构建,必须依赖JDK 11。首先卸载系统自带的OpenJDK,然后安装Oracle JDK或OpenJDK 11。
执行以下命令安装OpenJDK 11:
```bash yum install -y java-11-openjdk java-11-openjdk-devel ```安装完成后,配置环境变量。编辑/etc/profile文件,在文件末尾追加以下内容:
```bash export JAVA_HOME=/usr/lib/jvm/java-11-openjdk export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib export PATH=$JAVA_HOME/bin:$PATH ```保存退出后,执行source /etc/profile使配置生效。使用java -version命令验证版本。
2. 安装MySQL 8.0数据库
系统需要MySQL 8.0作为元数据存储。执行以下命令下载并安装MySQL仓库:
```bash yum localinstall -y https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm yum install -y mysql-server ```启动MySQL服务并设置开机自启:
```bash systemctl start mysqld systemctl enable mysqld ```获取临时root密码并修改:
```bash grep 'temporary password' /var/log/mysqld/mysqld.log mysql -uroot -p ```进入MySQL后,执行SQL修改密码(将NewPass123!替换为强密码)并创建数据库:
```sql ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123!'; CREATE DATABASE huaian_archive CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'archive_user'@'%' IDENTIFIED BY 'ArchivePass123!'; GRANT ALL PRIVILEGES ON huaian_archive. TO 'archive_user'@'%'; FLUSH PRIVILEGES; ```3. 安装Redis缓存服务
系统使用Redis处理会话和缓存。安装EPEL源并部署Redis:
```bash yum install -y epel-release yum install -y redis ```修改/etc/redis.conf配置文件,设置访问密码并关闭保护模式:
```bash requirepass RedisPass123! protected-mode no ```启动Redis:
```bash systemctl start redis systemctl enable redis ```二、后端服务部署与配置
假设你已经获取了系统后端的源码包或编译好的Jar包。以下操作在/opt/huaian-archive目录下进行。
1. 目录创建与文件上传
创建项目目录:
```bash mkdir -p /opt/huaian-archive/backend mkdir -p /opt/huaian-archive/upload ```将后端Jar包(假设名为archive-backend-1.0.0.jar)上传至/opt/huaian-archive/backend目录。
2. 配置application.yml
在同级目录下创建application-prod.yml配置文件。这是系统的核心配置,必须严格保证格式正确。以下是完整的配置内容:
```yaml server: port: 8080 servlet: context-path: /api multipart: max-file-size: 500MB max-request-size: 500MB spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/huaian_archive?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false username: archive_user password: ArchivePass123! hikari: minimum-idle: 5 maximum-pool-size: 20 data: redis: host: 127.0.0.1 port: 6379 password: RedisPass123! database: 0 timeout: 3000 servlet: multipart: enabled: true 档案文件存储路径配置 archive: storage: local-path: /opt/huaian-archive/upload OCR识别引擎配置(如本地Tesseract或远程API) ocr: enabled: true engine-type: local tesseract-path: /usr/bin/tesseract logging: level: root: INFO com.huaian.archive: DEBUG file: name: /opt/huaian-archive/backend/logs/archive.log ```注意:请确保archive.storage.local-path目录具有读写权限。
3. 数据库初始化

将项目中的schema.sql和data.sql上传至服务器。执行导入命令:
```bash mysql -uarchive_user -pArchivePass123! huaian_archive < schema.sql mysql -uarchive_user -pArchivePass123! huaian_archive < data.sql ```4. 配置Systemd服务
为了方便管理,我们将Jar包注册为系统服务。创建/usr/lib/systemd/system/archive-backend.service文件:
```ini [Unit] Description=Huaian Digital Archive System Backend After=syslog.target network.target mysql.service redis.service [Service] Type=simple User=root WorkingDirectory=/opt/huaian-archive/backend ExecStart=/usr/bin/java -jar -Dspring.profiles.active=prod /opt/huaian-archive/backend/archive-backend-1.0.0.jar Restart=always RestartSec=10 StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target ```重载Systemd并启动服务:
```bash systemctl daemon-reload systemctl start archive-backend systemctl status archive-backend ```三、前端静态资源部署
前端采用Vue3 + Vite构建。我们需要将打包好的静态文件部署到Nginx服务器。
1. 安装Nginx
```bash yum install -y nginx systemctl start nginx systemctl enable nginx ```2. 上传构建产物
将本地执行npm run build生成的dist目录上传至服务器的/opt/huaian-archive/frontend目录。
3. 配置Nginx反向代理
编辑Nginx配置文件/etc/nginx/conf.d/archive.conf,删除或注释掉default.conf。配置如下:
```nginx server { listen 80; server_name your-domain-or-ip; 替换为实际域名或IP 前端静态资源 location / { root /opt/huaian-archive/frontend; index index.html; try_files $uri $uri/ /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; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 档案上传大文件超时设置 client_max_body_size 500M; proxy_connect_timeout 300s; proxy_send_timeout 300s; proxy_read_timeout 300s; } 文件访问代理(直接读取存储目录,需配置secure_link防盗链,此处略去安全配置以保持实操简洁) location /files { alias /opt/huaian-archive/upload; autoindex on; } } ```检查Nginx配置语法并重启:
```bash nginx -t systemctl restart nginx ```四、OCR识别组件配置
数字档案馆核心功能之一是全文检索。系统依赖Tesseract进行OCR识别。
1. 安装依赖包
```bash yum install -y autoconf automake libtool libjpeg-devel libpng-devel libtiff-devel zlib-devel ```2. 编译安装Leptonica与Tesseract
下载并编译Leptonica 1.78.0:
```bash cd /usr/local/src wget http://www.leptonica.org/source/leptonica-1.78.0.tar.gz tar zxvf leptonica-1.78.0.tar.gz cd leptonica-1.78.0 ./configure --prefix=/usr/local/leptonica make && make install ```下载并编译Tesseract 4.1.1:
```bash cd /usr/local/src wget https://github.com/tesseract-ocr/tesseract/archive/4.1.1.tar.gz tar zxvf 4.1.1.tar.gz cd tesseract-4.1.1 ./autogen.sh ./configure --prefix=/usr/local/tesseract LDFLAGS="-L/usr/local/leptonica/lib" CPPFLAGS="-I/usr/local/leptonica/include" make && make install ```配置动态链接库:
```bash echo "/usr/local/leptonica/lib" >> /etc/ld.so.conf echo "/usr/local/tesseract/lib" >> /etc/ld.so.conf ldconfig ```3. 安装中文语言包
下载中文训练数据并放入tessdata目录:
```bash mkdir -p /usr/local/tesseract/share/tessdata cd /usr/local/tesseract/share/tessdata wget https://github.com/tesseract-ocr/tessdata/raw/master/chi_sim.traineddata ```五、系统验证与故障排查
1. 接口连通性测试
使用curl命令测试后端健康检查接口(假设存在/actuator/health):
```bash curl http://127.0.0.1:8080/api/actuator/health ```返回{"status":"UP"}则表示后端正常。
2. 前端访问测试
浏览器访问http://your-domain-or-ip。检查控制台Network面板,确认静态资源加载为200状态码,API请求无404或500错误。
3. 常见故障处理
问题1:上传文件提示500错误。
检查后端日志/opt/huaian-archive/backend/logs/archive.log。通常是因为/opt/huaian-archive/upload目录权限不足。执行chmod -R 755 /opt/huaian-archive/upload。
问题2:OCR识别返回乱码。
确认chi_sim.traineddata文件是否正确下载在tessdata目录下,并检查后端配置文件中tesseract-path是否指向正确可执行文件。
问题3:Nginx 413 Request Entity Too Large。
检查Nginx配置文件中是否在http块或server块正确设置了client_max_body_size 500M;,修改后需执行nginx -s reload。