巴音郭楞档案软件本地化部署与数据迁移实操指南
一、基础环境准备与依赖安装
在部署巴音郭楞档案软件之前,必须确保服务器环境满足软件运行的最低要求。本指南基于CentOS 7.9 64位操作系统编写,其他Linux发行版命令可能略有差异。
1.1 系统内核参数与防火墙配置
首先调整系统最大文件打开数和TCP连接参数,防止高并发访问下出现“Too many open files”错误。
编辑系统限制配置文件:
```bash vi /etc/security/limits.conf ```在文件末尾添加以下内容:
```text soft nofile 65535 hard nofile 65535 soft nproc 65535 hard nproc 65535 ```配置防火墙开放8080(应用端口)和3306(数据库端口):
```bash firewall-cmd --zone=public --add-port=8080/tcp --permanent firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload ```注意:如果是生产环境,建议仅开放80或443端口,数据库端口禁止对公网开放。
1.2 JDK 1.8 环境安装
该软件基于Java开发,必须安装JDK 1.8版本。执行以下命令直接安装OpenJDK:
```bash yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel ```安装完成后,验证Java版本:
```bash java -version ```配置JAVA_HOME环境变量。编辑 /etc/profile 文件:
```bash echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk" >> /etc/profile echo "export PATH=\$JAVA_HOME/bin:\$PATH" >> /etc/profile source /etc/profile ```1.3 MySQL 5.7 数据库部署
下载并安装MySQL 5.7的Yum源仓库:
```bash wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm rpm -ivh mysql57-community-release-el7-11.noarch.rpm yum install -y mysql-server ```启动MySQL服务并设置开机自启:
```bash systemctl start mysqld systemctl enable mysqld ```获取MySQL临时root密码:
```bash grep 'temporary password' /var/log/mysqld.log ```登录MySQL并修改密码(将'YourNewPassword123!'替换为强密码):
```bash mysql -uroot -p ```在MySQL命令行中执行:
```sql ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword123!'; CREATE DATABASE bayin_archives_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; exit; ```二、数据库初始化与字符集配置
巴音郭楞档案软件对数据库字符集要求极高,必须使用 utf8mb4 以支持蒙古文、中文及特殊符号的存储。
2.1 导入初始表结构
假设软件安装包中包含 bayin_archives.sql 文件。使用以下命令导入数据:
```bash mysql -uroot -pYourNewPassword123! bayin_archives_db < /opt/software/bayin_archives.sql ```验证表是否导入成功:
```bash mysql -uroot -pYourNewPassword123! -e "USE bayin_archives_db; SHOW TABLES;" ```2.2 创建专用数据库用户

为了安全起见,不要使用root账号运行应用。创建专用用户 bayin_user:
```bash mysql -uroot -pYourNewPassword123! ``` ```sql GRANT ALL PRIVILEGES ON bayin_archives_db. TO 'bayin_user'@'%' IDENTIFIED BY 'BayinPass@2024'; FLUSH PRIVILEGES; exit; ```三、应用服务配置与调优
将软件安装包解压至 /opt 目录。
3.1 修改配置文件
进入配置目录,编辑 application-prod.yml:
```bash cd /opt/bayin-archive/conf vi application-prod.yml ```以下是完整的配置内容,请根据实际情况修改数据库密码和服务器IP:
```yaml server: port: 8080 servlet: context-path: /bayin-archive spring: datasource: url: jdbc:mysql://127.0.0.1:3306/bayin_archives_db?useUnicode=true&characterEncoding=utf8mb4&useSSL=false&serverTimezone=Asia/Shanghai username: bayin_user password: BayinPass@2024 driver-class-name: com.mysql.cj.jdbc.Driver hikari: minimum-idle: 5 maximum-pool-size: 20 mybatis: mapper-locations: classpath:mapper/.xml configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl file: upload-path: /data/bayin-archive/upload ```关键操作:确保 file.upload-path 指定的目录具有写权限,否则会导致附件上传失败。
```bash mkdir -p /data/bayin-archive/upload chown -R root:root /data/bayin-archive chmod -R 755 /data/bayin-archive ```3.2 Systemd 服务托管
创建系统服务文件,实现开机自启和守护进程管理:
```bash vi /etc/systemd/system/bayin-archive.service ```写入以下内容:
```ini [Unit] Description=Bayin Archive Application Service After=syslog.target network.target mysql.service [Service] Type=simple User=root WorkingDirectory=/opt/bayin-archive ExecStart=/usr/bin/java -jar -Xms2g -Xmx2g /opt/bayin-archive/bin/bayin-archive.jar --spring.profiles.active=prod ExecStop=/bin/kill -15 $MAINPID Restart=always RestartSec=10 [Install] WantedBy=multi-user.target ```重新加载Systemd并启动服务:
```bash systemctl daemon-reload systemctl start bayin-archive systemctl status bayin-archive ``>四、Nginx 反向代理与 HTTPS 配置
使用Nginx作为反向代理,处理静态资源请求并配置SSL证书保障数据传输安全。
4.1 安装 Nginx
```bash yum install -y nginx systemctl start nginx systemctl enable nginx ```4.2 配置虚拟主机
编辑Nginx配置文件:
```bash vi /etc/nginx/conf.d/bayin-archive.conf ```写入以下配置(假设SSL证书已放置在 /etc/nginx/ssl 目录下):
```nginx upstream bayin_backend { server 127.0.0.1:8080 weight=1 max_fails=3 fail_timeout=30s; } server { listen 80; server_name archive.bayin.gov.cn; rewrite ^(.)$ https://$host$1 permanent; } server { listen 443 ssl; server_name archive.bayin.gov.cn; ssl_certificate /etc/nginx/ssl/server.pem; ssl_certificate_key /etc/nginx/ssl/server.key; ssl_session_timeout 5m; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; client_max_body_size 500M; location /bayin-archive { proxy_pass http://bayin_backend; 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; } location /static { alias /data/bayin-archive/upload; expires 30d; add_header Cache-Control "public, immutable"; } } ```检查Nginx配置语法并重载:
```bash nginx -t systemctl reload nginx ```五、历史数据迁移与校验
这是上线前最关键的一步,涉及从旧系统将数据迁移至新环境。
5.1 旧数据导出
如果旧系统也是MySQL,使用 mysqldump 进行逻辑备份。务必指定字符集:
```bash mysqldump -uroot -pOldPass --default-character-set=utf8mb4 --single-transaction --routines --triggers old_archive_db > old_data_backup_2024.sql ``>5.2 数据清洗与导入
在导入新库之前,检查SQL文件中的建表语句,确保ENGINE为InnoDB且字符集为utf8mb4。
```bash sed -i 's/latin1/utf8mb4/g' old_data_backup_2024.sql sed -i 's/ENGINE=MyISAM/ENGINE=InnoDB/g' old_data_backup_2024.sql ```执行导入:
```bash mysql -uroot -pYourNewPassword123! bayin_archives_db < old_data_backup_2024.sql ``>5.3 数据完整性校验
导入完成后,执行以下SQL语句核对关键业务表的记录数,确保数据无丢失:
```sql -- 核对档案主表 SELECT 'archive_main' AS table_name, COUNT() AS count FROM archive_main; -- 核对电子文件关联表 SELECT 'archive_files' AS table_name, COUNT() AS count FROM archive_files; -- 检查是否有乱码数据(示例:检查包含问号的记录) SELECT id, title FROM archive_main WHERE title LIKE '%?%'; ```如果上述查询返回结果为空,则说明数据迁移基本成功。清理系统缓存并重启应用服务:
```bash systemctl restart bayin-archive ```