档案管理软件机械版:从零部署到生产环境实操指南
一、核心组件安装与环境配置
系统要求:Ubuntu Server 22.04 LTS,4核CPU,8GB内存,100GB SSD存储。
1.1 数据库安装与配置
执行以下命令安装PostgreSQL 15:
``` sudo apt update sudo apt install -y postgresql-15 postgresql-contrib-15 ```创建数据库用户和数据库:
``` sudo -u postgres psql -c "CREATE USER arch_user WITH PASSWORD 'StrongPass123!';" sudo -u postgres psql -c "CREATE DATABASE mechanical_archive OWNER arch_user;" sudo -u postgres psql -d mechanical_archive -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";" ```1.2 应用服务器部署
下载并解压应用包:
``` wget https://archive.software.com/releases/mechanical-v2.3.1.tar.gz tar -xzf mechanical-v2.3.1.tar.gz cd mechanical-v2.3.1 ```创建配置文件:
``` nano config/application.properties ```配置文件内容:
``` 数据库配置 spring.datasource.url=jdbc:postgresql://localhost:5432/mechanical_archive spring.datasource.username=arch_user spring.datasource.password=StrongPass123! spring.datasource.driver-class-name=org.postgresql.Driver 文件存储路径 file.storage.path=/var/mechanical-archive/files file.max-size=104857600 服务器端口 server.port=8080 server.servlet.context-path=/archive ```二、系统初始化与数据建模
2.1 数据库表结构初始化
执行初始化SQL脚本:
``` psql -U arch_user -d mechanical_archive -f sql/init_tables.sql ```关键表结构示例:
``` CREATE TABLE mechanical_documents ( id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), document_number VARCHAR(50) UNIQUE NOT NULL, equipment_code VARCHAR(30) NOT NULL, document_type VARCHAR(20) CHECK (document_type IN ('图纸', '工艺卡', '检验单', '维修记录')), version INTEGER DEFAULT 1, file_path VARCHAR(500) NOT NULL, upload_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, last_modify_time TIMESTAMP, status VARCHAR(15) DEFAULT '有效' ); CREATE INDEX idx_equipment_code ON mechanical_documents(equipment_code); CREATE INDEX idx_document_type ON mechanical_documents(document_type); ```2.2 存储目录权限设置
创建文件存储目录并设置权限:
``` sudo mkdir -p /var/mechanical-archive/files sudo chown -R $USER:$USER /var/mechanical-archive chmod 755 /var/mechanical-archive/files ```三、应用启动与基础配置
3.1 启动应用服务
使用systemd创建服务:
``` sudo nano /etc/systemd/system/mechanical-archive.service ```服务配置文件内容:
``` [Unit] Description=Mechanical Archive Management System After=postgresql.service [Service] User=your_username WorkingDirectory=/home/your_username/mechanical-v2.3.1 ExecStart=/usr/bin/java -jar mechanical-archive.jar Restart=always RestartSec=10 [Install] WantedBy=multi-user.target ```启动并启用服务:
``` sudo systemctl daemon-reload sudo systemctl start mechanical-archive sudo systemctl enable mechanical-archive ```3.2 验证服务状态
检查服务运行状态:
``` sudo systemctl status mechanical-archive ```测试API接口:
``` curl http://localhost:8080/archive/api/health ```预期返回:{"status":"UP","version":"2.3.1"}
四、文件上传与分类配置
4.1 配置文档分类规则
创建分类配置文件:
``` nano config/document_categories.json ```配置文件内容:
``` { "categories": [ { "code": "DWG", "name": "工程图纸", "allowed_extensions": [".dwg", ".dxf", ".pdf"], "max_size_mb": 50, "required_metadata": ["equipment_code", "drawing_number", "revision"] }, { "code": "PROC", "name": "工艺文件", "allowed_extensions": [".doc", ".docx", ".pdf"], "max_size_mb": 20, "required_metadata": ["process_code", "operation_sequence", "tooling_ref"] } ] } ```4.2 实现文件上传接口

创建上传脚本示例:
``` !/bin/bash upload_document.sh API_URL="http://localhost:8080/archive/api/documents" FILE_PATH="$1" EQUIPMENT_CODE="$2" DOC_TYPE="$3" curl -X POST \ -F "file=@$FILE_PATH" \ -F "equipmentCode=$EQUIPMENT_CODE" \ -F "documentType=$DOC_TYPE" \ -F "uploader=system" \ "$API_URL/upload" ```使用示例:
``` ./upload_document.sh "/path/to/drawing.dwg" "MACH-001" "图纸" ```五、版本控制与变更管理
5.1 配置版本控制策略
创建版本管理配置:
``` nano config/version_policy.json ```配置内容:
``` { "auto_versioning": true, "keep_previous_versions": 5, "version_naming": "v{MAJOR}.{MINOR}", "change_log_required": true, "approval_workflow": { "enabled": true, "approvers_required": 2, "auto_archive_old": true } } ```5.2 实现文档版本更新
版本更新API调用示例:
``` curl -X PUT http://localhost:8080/archive/api/documents/{documentId}/version \ -H "Content-Type: application/json" \ -d '{ "change_description": "更新了尺寸公差要求", "new_file": "base64_encoded_file_content", "reviewer": "engineer_zhang" }' ```六、搜索与检索功能配置
6.1 配置全文搜索引擎
安装Elasticsearch并配置索引:
``` 安装Elasticsearch wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list sudo apt update sudo apt install elasticsearch 创建文档索引 curl -X PUT "localhost:9200/mechanical_documents" \ -H 'Content-Type: application/json' \ -d '{ "mappings": { "properties": { "document_number": {"type": "keyword"}, "equipment_code": {"type": "keyword"}, "document_type": {"type": "keyword"}, "content": {"type": "text"}, "upload_time": {"type": "date"} } } }' ```6.2 实现复合搜索接口
搜索API示例:
``` curl -X GET "http://localhost:8080/archive/api/documents/search" \ -H "Content-Type: application/json" \ -d '{ "equipment_code": "MACH-001", "document_type": ["图纸", "工艺卡"], "keywords": "主轴 装配", "date_from": "2024-01-01", "date_to": "2024-12-31", "page": 1, "size": 20 }' ```七、权限管理与审计日志
7.1 配置RBAC权限模型
创建角色权限配置:
``` nano config/roles_permissions.json ```配置内容:
``` { "roles": { "viewer": { "permissions": ["document:read", "search:execute"] }, "editor": { "permissions": ["document:read", "document:upload", "document:update"] }, "approver": { "permissions": ["document:read", "document:approve", "version:manage"] }, "admin": { "permissions": [""] } } } ```7.2 启用审计日志
配置审计日志表:
``` CREATE TABLE audit_logs ( id SERIAL PRIMARY KEY, user_id VARCHAR(50) NOT NULL, action VARCHAR(50) NOT NULL, resource_type VARCHAR(30), resource_id VARCHAR(100), details JSONB, ip_address INET, timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE INDEX idx_audit_user ON audit_logs(user_id); CREATE INDEX idx_audit_timestamp ON audit_logs(timestamp); ```八、备份与恢复策略
8.1 配置自动备份
创建备份脚本:
``` !/bin/bash backup_archive.sh BACKUP_DIR="/backup/mechanical-archive" DATE=$(date +%Y%m%d_%H%M%S) 备份数据库 pg_dump -U arch_user mechanical_archive > $BACKUP_DIR/db_backup_$DATE.sql 备份文件存储 tar -czf $BACKUP_DIR/files_backup_$DATE.tar.gz /var/mechanical-archive/files 备份配置文件 cp -r config $BACKUP_DIR/config_backup_$DATE 保留最近7天的备份 find $BACKUP_DIR -name ".sql" -mtime +7 -delete find $BACKUP_DIR -name ".tar.gz" -mtime +7 -delete ```设置定时任务:
``` crontab -e 添加以下行,每天凌晨2点执行备份 0 2 /path/to/backup_archive.sh ```8.2 恢复流程
数据库恢复命令:
``` psql -U arch_user -d mechanical_archive -f /backup/mechanical-archive/db_backup_20240101_020000.sql ```文件恢复命令:
``` tar -xzf /backup/mechanical-archive/files_backup_20240101_020000.tar.gz -C / ```九、监控与维护
9.1 系统健康检查配置
创建健康检查端点:
``` 在应用中添加健康检查 curl http://localhost:8080/archive/actuator/health ```预期返回包含:
``` { "status": "UP", "components": { "db": {"status": "UP"}, "diskSpace": {"status": "UP", "details": {"total": 100000000000, "free": 50000000000}}, "elasticsearch": {"status": "UP"} } } ```9.2 日志监控配置
配置日志轮转:
``` sudo nano /etc/logrotate.d/mechanical-archive ```配置内容:
``` /var/log/mechanical-archive/.log { daily rotate 30 compress delaycompress missingok notifempty create 644 your_username your_username } ```