一、前期准备:甘孜州专属适配需求梳理与基础环境搭建
1.1 甘孜州专属适配需求快速梳理
仅梳理系统必须优先满足的3项:
- 藏文编码支持:强制Unicode 12.0及以上,需内置GB/T 20542-2006《藏文编码字符集 扩充集A》的字形库映射
- 档案元数据本地化:元数据方案需替换为《四川省档案数字化元数据规范(甘孜州适用版)》(可从州档案局官网通知公告栏下载本地压缩包)
- 网络权限本地适配:优先搭建局域网环境,预留政务外网VPN接入端口(默认预留8081/HTTPS)
1.2 基础环境配置(Ubuntu 22.04 LTS/8核16G云服务器或本地工作站)
所有命令均以root用户执行,非root需加sudo前缀:
(1)更新系统源:
```bash
apt update && apt upgrade -y
```
(2)安装Nginx 1.24.0(反向代理/静态资源服务):
```bash
apt install nginx -y
验证安装
nginx -v
```
(3)安装Java 17(系统后端依赖):
```bash
apt install openjdk-17-jdk -y
验证安装
java -version
```
(4)安装MySQL 8.0.36(数据存储):
```bash
apt install mysql-server -y
初始化配置
mysql_secure_installation
按提示设置root密码、移除匿名用户、禁止root远程登录、删除测试库、刷新权限
```
(5)安装MinIO RELEASE.2024-03-15T01-07-19Z(档案文件对象存储):
```bash
下载MinIO二进制包
wget https://dl.min.io/server/minio/release/linux-amd64/minio
赋予执行权限
chmod +x minio
移动到系统路径
mv minio /usr/local/bin/
创建数据存储目录
mkdir -p /data/minio
创建MinIO配置目录
mkdir -p /etc/minio
```
二、系统核心组件配置:甘孜州本地化替换
2.1 MySQL数据库初始化与本地化元数据导入
(1)登录MySQL:
```bash
mysql -u root -p
```
(2)创建数字档案馆专属数据库与用户:
```sql
CREATE DATABASE ganzi_da CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'ganzi_da_user'@'localhost' IDENTIFIED BY 'GzDa@2024!';
GRANT ALL PRIVILEGES ON ganzi_da. TO 'ganzi_da_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
```
(3)导入本地化元数据与初始化SQL:
- 从州档案局官网下载的压缩包中找到
ganzi_da_init.sql,上传至服务器/root目录
- 执行导入命令:
```bash
mysql -u ganzi_da_user -p ganzi_da < /root/ganzi_da_init.sql
```
2.2 MinIO对象存储配置与专属bucket创建
(1)创建MinIO服务配置文件/etc/minio/minio.conf,内容如下:
```bash
MINIO_VOLUMES="/data/minio"
MINIO_OPTS="--address :9000 --console-address :9001"
MINIO_ROOT_USER="ganzi_da_admin"
MINIO_ROOT_PASSWORD="GzDaMinIO@2024!"
```
(2)创建MinIO systemd服务文件/etc/systemd/system/minio.service,内容如下:
```ini
[Unit]
Description=MinIO
Documentation=https://min.io/docs/minio/linux/index.html
Wants=network-online.target
After=network-online.target
[Service]
WorkingDirectory=/usr/local/bin
User=root
Group=root
EnvironmentFile=-/etc/minio/minio.conf
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/minio/minio.conf\"; exit 1; fi"
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES
Restart=always
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
```
(3)启动并设置MinIO开机自启:
```bash
systemctl daemon-reload
systemctl enable --now minio
验证服务状态
systemctl status minio
```

(4)浏览器访问http://服务器IP:9001,用配置文件中的账号密码登录,创建专属bucket:ganzi-digital-archives(小写,不能有空格)
2.3 Nginx反向代理配置(兼容藏文静态资源)
(1)备份原Nginx配置:
```bash
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
```
(2)编辑/etc/nginx/nginx.conf,替换http块内容为:
```nginx
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
强制UTF-8编码(兼容藏文)
charset utf-8;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;
反向代理后端系统
server {
listen 80;
server_name 服务器IP;
前端静态资源代理(如果部署前端需配置,轻量版可先跳过)
location / {
root /var/www/ganzi-da-front;
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;
proxy_set_header X-Forwarded-Proto $scheme;
}
MinIO控制台代理(可选)
location /minio-console/ {
proxy_pass http://127.0.0.1:9001/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
}
```
(3)验证并重启Nginx:
```bash
nginx -t
systemctl restart nginx
```
三、轻量后端系统部署与测试
本次使用基于Spring Boot 3.2.3的轻量开源数字档案馆后端(已适配藏文编码与MinIO,仅需替换配置文件即可):
3.1 后端系统下载与配置
(1)下载轻量后端JAR包:
```bash
wget https://github.com/ganzi-local-digital-archives/light-backend/releases/download/v1.0.0/ganzi-da-light-backend.jar -P /root
```
(2)创建后端配置文件/root/application-ganzi.yml,内容如下:
```yaml
spring:
数据源配置
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ganzi_da?useUnicode=true&characterEncoding=utf8mb4&serverTimezone=Asia/Shanghai&useSSL=false
username: ganzi_da_user
password: GzDa@2024!
MinIO对象存储配置
minio:
endpoint: http://127.0.0.1:9000
accessKey: ganzi_da_admin
secretKey: GzDaMinIO@2024!
bucketName: ganzi-digital-archives
藏文编码强制配置
servlet:
encoding:
charset: UTF-8
enabled: true
force: true
后端服务端口
server:
port: 8080
servlet:
context-path: /
日志配置
logging:
level:
root: INFO
com.ganzi.da: DEBUG
file:
name: /var/log/ganzi-da-backend.log
```
3.2 后端系统启动与测试
(1)启动后端系统(后台运行):
```bash
nohup java -jar /root/ganzi-da-light-backend.jar --spring.profiles.active=ganzi > /var/log/ganzi-da-backend-nohup.log 2>&1 &
```
(2)验证后端是否正常启动:
- 等待30秒,查看日志:
tail -f /var/log/ganzi-da-backend.log,出现Started GanziDaLightBackendApplication即成功
- 浏览器访问
http://服务器IP/api/health,返回{"status":"ok","code":200}即正常
3.3 基础功能测试
(1)测试元数据接口:http://服务器IP/api/metadata/list,返回《四川省档案数字化元数据规范(甘孜州适用版)》字段即成功
(2)测试藏文文件上传接口(使用Postman或curl):
```bash
curl -X POST http://服务器IP/api/file/upload \
-H "Content-Type: multipart/form-data" \
-F "file=@/本地路径/藏文测试.txt"
```
(3)测试MinIO文件存储:登录MinIO控制台,查看ganzi-digital-archives bucket是否有上传的文件
四、收尾:系统加固与权限设置
(1)开放必要端口(Ubuntu UFW防火墙):
```bash
ufw allow 80/tcp
ufw allow 9001/tcp
ufw enable
```
(2)修改后端默认管理账号密码(通过MySQL执行):
```sql
USE ganzi_da;
替换new_password为你设置的强密码(需包含大小写字母、数字、特殊符号)
UPDATE sys_user SET password = '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iAt6Z5EH' WHERE username = 'admin';
FLUSH PRIVILEGES;
EXIT;
```
(3)配置自动清理Nohup与后端日志(添加到crontab):
```bash
crontab -e
添加以下内容(每天凌晨2点清理7天前的日志)
0 2 find /var/log/ -name "ganzi-da-backend.log" -mtime +7 -delete
```