人事数字档案馆系统采用分层架构设计,分为数据层、服务层和应用层。数据层使用PostgreSQL 14.7作为主数据库,Redis 6.2作为缓存数据库。服务层基于Spring Boot 2.7.8构建,应用层采用Vue 3.2作为前端框架。
操作系统:Ubuntu 20.04 LTS或CentOS 8
内存:至少8GB RAM
存储:至少100GB可用空间
需要安装的软件包:
执行以下命令安装JDK 11:
``` sudo apt update sudo apt install openjdk-11-jdk -y ```验证安装:
``` java -version ```输出应显示"openjdk version 11.0.xx"。
安装PostgreSQL:
``` sudo apt install postgresql-14 postgresql-contrib-14 -y ```创建数据库和用户:
``` sudo -u postgres psql CREATE DATABASE hr_archive; CREATE USER hr_admin WITH PASSWORD 'YourSecurePassword123!'; GRANT ALL PRIVILEGES ON DATABASE hr_archive TO hr_admin; \q ```修改PostgreSQL认证配置:
``` sudo nano /etc/postgresql/14/main/pg_hba.conf ```找到以下行并修改为:
``` IPv4 local connections: host all all 127.0.0.1/32 md5 IPv6 local connections: host all all ::1/128 md5 ```重启PostgreSQL服务:
``` sudo systemctl restart postgresql ```安装Redis:
``` sudo apt install redis-server -y ```修改Redis配置文件:
``` sudo nano /etc/redis/redis.conf ```找到并修改以下配置项:
``` bind 127.0.0.1 requirepass YourRedisPassword456! maxmemory 2gb maxmemory-policy allkeys-lru ```重启Redis服务:
``` sudo systemctl restart redis-server ```克隆项目代码:
``` git clone https://github.com/hr-archive/backend.git cd backend ```项目结构说明:
编辑application.yml文件:
``` nano src/main/resources/application.yml ```完整配置内容:
``` server: port: 8080 spring: datasource: url: jdbc:postgresql://localhost:5432/hr_archive username: hr_admin password: YourSecurePassword123! driver-class-name: org.postgresql.Driver redis: host: localhost port: 6379 password: YourRedisPassword456! database: 0 jpa: hibernate: ddl-auto: update show-sql: true properties: hibernate: dialect: org.hibernate.dialect.PostgreSQLDialect app: file: storage-path: /var/hr-archive/files max-size: 10485760 10MB security: jwt-secret: YourJWTSecretKey789!@ token-expiration: 86400000 24小时 ```使用Maven编译项目:
``` mvn clean package -DskipTests ```启动后端服务:
``` java -jar target/hr-archive-backend-1.0.0.jar ```验证服务是否启动成功:
``` curl http://localhost:8080/api/health ```应返回{"status":"UP"}。
安装Node.js 16.17.0:
``` curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - sudo apt-get install -y nodejs ```验证安装:
``` node --version npm --version ```克隆前端项目:
``` git clone https://github.com/hr-archive/frontend.git cd frontend ```
安装依赖:
``` npm install ```修改环境配置文件:
``` nano .env.production ```配置内容:
``` VUE_APP_API_BASE_URL=http://your-server-ip:8080/api VUE_APP_TITLE=人事数字档案馆系统 VUE_APP_PAGE_SIZE=20 ```构建生产版本:
``` npm run build ```构建完成后,dist目录包含所有静态文件。
安装Nginx:
``` sudo apt install nginx -y ```创建Nginx配置文件:
``` sudo nano /etc/nginx/sites-available/hr-archive ```配置文件内容:
``` server { listen 80; server_name your-domain.com; 前端静态文件 location / { root /var/www/hr-archive; index index.html; try_files $uri $uri/ /index.html; } 后端API代理 location /api/ { proxy_pass http://localhost:8080/api/; 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 /files/ { alias /var/hr-archive/files/; autoindex off; } } ```启用站点配置:
``` sudo ln -s /etc/nginx/sites-available/hr-archive /etc/nginx/sites-enabled/ sudo rm /etc/nginx/sites-enabled/default ```创建必要的目录并设置权限:
``` sudo mkdir -p /var/www/hr-archive sudo mkdir -p /var/hr-archive/files sudo cp -r frontend/dist/ /var/www/hr-archive/ sudo chown -R www-data:www-data /var/www/hr-archive sudo chown -R www-data:www-data /var/hr-archive/files ```测试配置并重启:
``` sudo nginx -t sudo systemctl restart nginx ```后端服务启动时会自动创建表结构,验证表是否创建成功:
``` sudo -u postgres psql -d hr_archive \dt ```应显示以下核心表:
创建系统管理员账户:
``` INSERT INTO system_users (username, password, email, role, status) VALUES ('admin', '$2a$10$YourBcryptHashHere', 'admin@example.com', 'ADMIN', 'ACTIVE'); ```创建档案分类:
``` INSERT INTO archive_categories (code, name, description) VALUES ('PERSONAL', '个人信息', '员工基本信息档案'), ('CONTRACT', '合同协议', '劳动合同及相关协议'), ('PERFORMANCE', '绩效考核', '绩效评估记录'), ('TRAINING', '培训发展', '培训记录和证书'); ```准备CSV格式的历史数据文件,使用pgAdmin导入工具:
或使用命令行导入:
``` psql -U hr_admin -d hr_archive -c "\copy employee_records FROM '/path/to/employees.csv' DELIMITER ',' CSV HEADER" ```使用ab工具进行并发测试:
``` ab -n 1000 -c 100 http://your-server-ip/api/archives/list ```检查响应时间是否在可接受范围内(平均响应时间应小于200ms)。
设置日志轮转:
``` sudo nano /etc/logrotate.d/hr-archive ```配置内容:
``` /var/log/hr-archive/.log { daily rotate 30 compress delaycompress missingok notifempty create 640 www-data www-data } ```检查PostgreSQL服务状态:
``` sudo systemctl status postgresql ```检查连接配置:
``` psql -U hr_admin -h localhost -d hr_archive ```检查目录权限:
``` ls -la /var/hr-archive/files/ ```确保目录所有者是www-data,权限为755。
检查Nginx代理配置:
``` sudo nginx -T | grep -A 10 "location /api/" ```验证后端服务是否运行:
``` curl http://localhost:8080/api/health ```调整JVM内存参数:
``` java -Xms512m -Xmx2g -jar target/hr-archive-backend-1.0.0.jar ```按照以上步骤操作,即可完成人事数字档案馆系统的完整部署。系统部署完成后,建议定期备份数据库和文件存储,并设置监控告警机制。