在开始部署合资企业档案管理软件(基于Nextcloud二次开发)之前,必须确保服务器环境满足高并发存储和稳定运行的要求。本指南基于CentOS 7.9系统进行操作,其他Linux发行版命令略有不同。
1. 系统内核优化与依赖更新
首先执行系统更新并安装必要的工具链。直接复制以下命令到终端执行:
```bash yum update -y yum install -y yum-utils device-mapper-persistent-data lvm2 wget vim ```2. Docker与Docker Compose安装
为了简化部署流程,我们采用Docker容器化技术。执行以下脚本一键安装Docker及Compose插件:
```bash curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun systemctl start docker systemctl enable docker 验证安装 docker version ```3. 防火墙与SELinux配置
企业内网环境通常建议关闭SELinux以避免权限冲突,并开放必要端口:
```bash setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config firewall-cmd --permanent --add-port=80/tcp firewall-cmd --permanent --add-port=443/tcp firewall-cmd --reload ```我们将构建一个包含数据库(MariaDB)、缓存(Redis)和应用核心的完整架构。请在服务器根目录下创建项目目录:
```bash mkdir -p /data/jar-archive/{mysql,redis,app,html} cd /data/jar-archive ```1. 编写docker-compose.yml
使用vim编辑器创建编排文件,该文件定义了各服务的网络连接和持久化存储。请确保所有缩进使用空格,禁止使用Tab键:
```bash vim docker-compose.yml ```将以下完整配置粘贴进去,注意修改MYSQL_ROOT_PASSWORD和MYSQL_PASSWORD为强密码:
```yaml version: '3' services: db: image: mariadb:10.6 container_name: jar_db restart: always command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW volumes: - ./mysql:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=YourStrongRootPassword123 - MYSQL_PASSWORD=YourStrongAppPassword456 - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud networks: - jar_net redis: image: redis:alpine container_name: jar_redis restart: always networks: - jar_net app: image: nextcloud:25 container_name: jar_app restart: always ports: - 8080:80 depends_on: - db - redis volumes: - ./app:/var/www/html environment: - MYSQL_HOST=db - REDIS_HOST=redis - OVERWRITEPROTOCOL=https networks: - jar_net networks: jar_net: driver: bridge ```直接暴露8080端口在企业环境中是不安全的。我们需要配置Nginx作为反向代理,并强制开启HTTPS加密传输。
1. 获取SSL证书
假设企业已有域名,这里使用Certbot获取Let's Encrypt免费证书。如果在内网环境,请手动将企业证书放入/data/jar-archive/html/cert/目录:
```bash 安装Nginx和Certbot yum install -y epel-release yum install -y nginx certbot python2-certbot-nginx 启动Nginx systemctl start nginx systemctl enable nginx 获取证书(请替换域名和邮箱) certbot --nginx -d archive.yourcompany.com --email admin@yourcompany.com --agree-tos --non-interactive ```2. 配置Nginx反向代理
编辑Nginx配置文件,配置请求转发与头部优化:
```bash vim /etc/nginx/conf.d/jar_archive.conf ```粘贴以下配置,将archive.yourcompany.com替换为实际域名:
```nginx server { listen 80; server_name archive.yourcompany.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name archive.yourcompany.com; 证书路径(Certbot自动生成) ssl_certificate /etc/letsencrypt/live/archive.yourcompany.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/archive.yourcompany.com/privkey.pem; 安全头部设置 add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always; add_header Referrer-Policy "no-referrer" always; add_header X-Content-Type-Options "nosniff" always; add_header X-Download-Options "noopen" always; add_header X-Frame-Options "SAMEORIGIN" always; add_header X-Permitted-Cross-Domain-Policies "none" always; add_header X-Robots-Tag "none" always; add_header X-XSS-Protection "1; mode=block" always; 文件上传大小限制(针对大档案文件) client_max_body_size 10G; fastcgi_buffers 64 4K; location / { 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; proxy_redirect off; 超时设置 proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600; } } ```
执行命令重载Nginx配置:
```bash nginx -t && systemctl reload nginx ```1. 启动容器并初始化
在项目目录下启动所有服务:
```bash cd /data/jar-archive docker-compose up -d ```等待约30秒,查看容器日志确保启动成功:
```bash docker-compose logs -f app ```当看到"ready to handle connections"时,访问https://archive.yourcompany.com进行Web端初始化。输入管理员账号密码,数据库主机填写db(不是localhost),用户名nextcloud,密码填刚才yml文件中设置的MYSQL_PASSWORD。
2. 配置文件优化(config.php)
为了适应合资企业的高并发访问和严格的审计需求,需手动修改应用配置文件。进入容器修改:
```bash docker exec -it jar_app bash cd /var/www/html/config vim config.php ```在$CONFIG = array (块内添加或修改以下参数:
修改完成后保存退出,并重启PHP-FPM服务使配置生效:
```bash service php-fpm reload exit ```档案数据的完整性至关重要,必须配置定时备份脚本。
1. 编写备份脚本
```bash vim /usr/local/bin/jar_backup.sh ```粘贴以下内容,该脚本会自动备份数据库和文件,并保留最近7天的备份:
```bash !/bin/bash DATE=$(date +%Y%m%d) BACK_DIR=/data/backup/jar mkdir -p $BACK_DIR 备份数据库 docker exec jar_db mysqldump -u nextcloud -pYourStrongAppPassword456 nextcloud > $BACK_DIR/db_$DATE.sql 备份应用文件(排除数据目录以节省空间,只备份配置和插件) tar -czf $BACK_DIR/app_config_$DATE.tar.gz /data/jar-archive/app/config /data/jar-archive/app/custom_apps 删除7天前的备份 find $BACK_DIR -name ".sql" -mtime +7 -exec rm -f {} \; find $BACK_DIR -name ".tar.gz" -mtime +7 -exec rm -f {} \; echo "Backup completed on $DATE" ```赋予执行权限:
```bash chmod +x /usr/local/bin/jar_backup.sh ```2. 配置Crontab定时任务
编辑系统定时任务,设置每天凌晨2点执行备份:
```bash crontab -e ```添加以下行:
```text 0 2 /usr/local/bin/jar_backup.sh >> /var/log/jar_backup.log 2>&1 ```在后续维护中,以下命令将频繁使用,请务必收藏:
docker-compose psdocker-compose logs -f appdocker-compose restart appdocker exec -it jar_app bash/usr/local/bin/jar_backup.shdocker exec -it jar_app bash 然后执行 occ upgrade至此,一套符合合资企业安全标准、具备HTTPS加密、自动备份及高性能缓存的档案管理系统已完全部署完毕。管理员可登录后台开启LDAP域账号集成,实现统一身份认证。