零基础搭建企业级档案管理软件:从环境配置到上线部署全流程实操
环境准备与软件安装
操作系统与数据库选择
我们选择CentOS 7.6作为服务器操作系统,MySQL 8.0作为数据库。确保系统已更新:
系统更新命令:
```bash yum update -y ```
安装MySQL 8.0的官方仓库:
```bash wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm rpm -ivh mysql80-community-release-el7-3.noarch.rpm yum install mysql-community-server -y ```
启动MySQL并设置开机自启:
```bash systemctl start mysqld systemctl enable mysqld ```
获取初始密码:
```bash grep 'temporary password' /var/log/mysqld.log ```
使用初始密码登录后立即修改密码,并创建档案管理数据库:
```sql ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword123!'; CREATE DATABASE archive_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ```
Web服务器与PHP环境部署
安装Nginx和PHP 7.4:
```bash yum install epel-release -y yum install nginx -y yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm -y yum install yum-utils -y yum-config-manager --enable remi-php74 yum install php php-fpm php-mysql php-gd php-mbstring php-xml -y ```
启动Nginx和PHP-FPM:
```bash systemctl start nginx systemctl start php-fpm systemctl enable nginx systemctl enable php-fpm ```
档案管理软件核心部署
软件获取与解压
我们使用开源档案管理软件"OpenArchive"作为示例。在Web目录下载并解压:
```bash cd /usr/share/nginx/html wget https://github.com/example/openarchive/releases/download/v2.1.0/openarchive-2.1.0.zip yum install unzip -y unzip openarchive-2.1.0.zip mv openarchive-2.1.0 archive chown -R nginx:nginx archive ```
Nginx站点配置
编辑Nginx配置文件:
```bash vi /etc/nginx/conf.d/archive.conf ```
写入以下完整配置:
```nginx server { listen 80; server_name your-domain.com; root /usr/share/nginx/html/archive; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } } ```
测试配置并重启Nginx:
```bash nginx -t systemctl restart nginx ```
软件安装向导配置
通过浏览器访问服务器IP地址,进入安装界面。在数据库配置步骤填写:
- 数据库主机:localhost
- 数据库名:archive_db
- 用户名:root
- 密码:YourNewPassword123!
- 表前缀:arc_(保持默认)
点击安装后,系统会自动创建46张数据表。安装完成后,立即删除install目录:
```bash rm -rf /usr/share/nginx/html/archive/install ```
核心功能配置实操
档案分类体系建立
登录后台(默认地址:http://your-server-ip/admin),进入"分类管理":
- 点击"添加顶级分类"
- 输入分类名称:人事档案
- 设置分类编码:RS-001
- 保存后继续添加子分类:员工档案、合同档案、考核档案
分类编码规则建议:部门缩写+序号,如"RS-001"表示人事部第一类档案。
档案元数据字段自定义
进入"字段管理",为"员工档案"分类添加自定义字段:
- 字段名称:员工工号
- 字段类型:文本(单行)
- 是否必填:是
- 验证规则:/^[A-Z]{2}\d{6}$/(2位字母+6位数字)
继续添加其他字段:入职日期(日期类型)、部门(下拉选择)、岗位级别(数字类型)。
档案上传与存储配置
修改配置文件设置存储路径:
```bash vi /usr/share/nginx/html/archive/config/storage.php ```
修改以下配置项:
```php 'local' => [ 'driver' => 'local', 'root' => '/data/archive_files', 'permissions' => [ 'file' => [ 'public' => 0644, 'private' => 0600, ], 'dir' => [ 'public' => 0755, 'private' => 0700, ], ], ], ```
创建存储目录并设置权限:
```bash mkdir -p /data/archive_files chown -R nginx:nginx /data/archive_files chmod -R 755 /data/archive_files ```
在后台"系统设置"→"上传设置"中:
- 单文件大小限制:设置为50MB
- 允许的文件类型:pdf,doc,docx,xls,xlsx,jpg,png
- 存储位置:选择"本地存储"
用户权限精细化管理
角色与权限组创建
进入"用户管理"→"角色管理",创建三个基础角色:
- 档案管理员:可管理所有档案,但不能修改系统设置
- 部门主管:只能查看和管理本部门档案
- 普通员工:只能查看个人相关档案
为"档案管理员"角色分配权限时,勾选以下核心权限:
- 档案:添加、编辑、删除、查看
- 借阅:审批、管理
- 统计:查看所有统计报表
部门级权限控制实现
在"部门管理"中创建部门结构后,编辑"部门主管"角色的权限设置:
进入权限编辑页面,找到"档案查看权限",选择"按部门控制"。

在代码层面,系统通过以下SQL实现部门过滤:
```sql SELECT FROM arc_documents WHERE department_id IN ( SELECT department_id FROM user_departments WHERE user_id = :current_user_id ) ```
其中:current_user_id是当前登录用户的ID。
数据备份与安全加固
自动化备份脚本配置
创建备份脚本:
```bash vi /root/archive_backup.sh ```
写入以下内容:
```bash !/bin/bash BACKUP_DIR="/backup/archive" DATE=$(date +%Y%m%d_%H%M%S) MYSQL_USER="root" MYSQL_PASSWORD="YourNewPassword123!" DATABASE="archive_db" 创建备份目录 mkdir -p $BACKUP_DIR/$DATE 备份数据库 mysqldump -u$MYSQL_USER -p$MYSQL_PASSWORD $DATABASE > $BACKUP_DIR/$DATE/database.sql 备份上传文件 cp -r /data/archive_files $BACKUP_DIR/$DATE/ 备份程序文件(排除缓存和日志) tar -czf $BACKUP_DIR/$DATE/code.tar.gz --exclude="storage/logs" --exclude="storage/framework/cache" /usr/share/nginx/html/archive 删除7天前的备份 find $BACKUP_DIR -type d -mtime +7 -exec rm -rf {} \; echo "Backup completed at $(date)" >> /var/log/archive_backup.log ```
设置脚本权限并添加到定时任务:
```bash chmod +x /root/archive_backup.sh crontab -e ```
添加以下行(每天凌晨2点执行备份):
```bash 0 2 /root/archive_backup.sh ```
安全加固措施
修改PHP配置文件提高安全性:
```bash vi /etc/php.ini ```
修改以下关键参数:
```ini expose_php = Off max_execution_time = 30 max_input_time = 60 memory_limit = 128M post_max_size = 52M upload_max_filesize = 50M disable_functions = exec,passthru,shell_exec,system ```
重启PHP-FPM使配置生效:
```bash systemctl restart php-fpm ```
配置Nginx限制访问频率,在archive.conf的server段添加:
```nginx limit_req_zone $binary_remote_addr zone=archive:10m rate=10r/s; location /admin { limit_req zone=archive burst=20 nodelay; auth_basic "Restricted Area"; auth_basic_user_file /etc/nginx/.htpasswd; } ```
创建管理员认证文件:
```bash htpasswd -c /etc/nginx/.htpasswd admin ```
常见问题排查
文件上传失败处理
如果上传文件时出现"413 Request Entity Too Large"错误,需要修改Nginx配置:
```bash vi /etc/nginx/nginx.conf ```
在http段添加:
```nginx client_max_body_size 50m; ```
重启Nginx:
```bash systemctl restart nginx ```
数据库连接错误解决
检查MySQL是否允许远程连接(如果应用和数据库分离部署):
```sql CREATE USER 'archive_user'@'%' IDENTIFIED BY 'StrongPassword123!'; GRANT ALL PRIVILEGES ON archive_db. TO 'archive_user'@'%'; FLUSH PRIVILEGES; ```
修改MySQL配置文件允许远程连接:
```bash vi /etc/my.cnf ```
找到[mysqld]段,确保有以下行:
```ini bind-address = 0.0.0.0 ```
重启MySQL服务:
```bash systemctl restart mysqld ```
性能优化配置
启用OPcache加速PHP:
```bash vi /etc/php.d/10-opcache.ini ```
修改为以下配置:
```ini opcache.enable=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.revalidate_freq=60 opcache.fast_shutdown=1 ```
配置Nginx缓存静态文件,在archive.conf中添加:
```nginx location ~ \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 30d; add_header Cache-Control "public, immutable"; } ```
完成以上所有步骤后,你的企业级档案管理软件已经可以投入生产使用。定期检查备份日志,监控系统资源使用情况,根据实际业务需求调整权限设置和存储策略。