大同档案管理系统:从零搭建企业级数字档案库实操指南
一、环境准备与基础架构规划
1.1 硬件与软件要求
最低配置:2核CPU/4GB内存/100GB硬盘。推荐生产环境:4核CPU/8GB内存/500GB硬盘+RAID1磁盘阵列。操作系统选择Ubuntu Server 22.04 LTS。
安装基础依赖包:
``` sudo apt update sudo apt install -y nginx postgresql-14 redis-server python3-pip python3-venv git ```1.2 数据库初始化
创建专用数据库用户和数据库:
``` sudo -u postgres psql CREATE USER datong_admin WITH PASSWORD 'YourStrongPassword123!'; CREATE DATABASE datong_archive OWNER datong_admin; \q ```二、核心系统部署
2.1 应用服务器部署
创建应用目录并设置权限:
``` sudo mkdir -p /opt/datong sudo chown -R $USER:$USER /opt/datong cd /opt/datong ```克隆代码仓库:
``` git clone https://github.com/datong-archive/core-system.git cd core-system ```创建Python虚拟环境并安装依赖:
``` python3 -m venv venv source venv/bin/activate pip install -r requirements/production.txt ```2.2 配置文件设置
复制配置文件模板并编辑:
``` cp config/settings/production.example.py config/settings/production.py nano config/settings/production.py ```在production.py中修改以下关键配置:
``` DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'datong_archive', 'USER': 'datong_admin', 'PASSWORD': 'YourStrongPassword123!', 'HOST': 'localhost', 'PORT': '5432', } } REDIS_URL = 'redis://localhost:6379/0' MEDIA_ROOT = '/opt/datong/media' STATIC_ROOT = '/opt/datong/static' ALLOWED_HOSTS = ['your-domain.com', 'localhost'] ```2.3 数据库迁移与初始化
执行数据库迁移:
``` python manage.py migrate --settings=config.settings.production ```创建超级管理员账户:
``` python manage.py createsuperuser --settings=config.settings.production ```按照提示输入用户名、邮箱和密码。
收集静态文件:
``` python manage.py collectstatic --settings=config.settings.production ```三、服务配置与优化
3.1 Gunicorn配置
创建Gunicorn服务文件:
``` sudo nano /etc/systemd/system/datong.service ```添加以下内容:
``` [Unit] Description=Datong Archive Gunicorn Service After=network.target [Service] User=www-data Group=www-data WorkingDirectory=/opt/datong/core-system Environment="PATH=/opt/datong/core-system/venv/bin" ExecStart=/opt/datong/core-system/venv/bin/gunicorn \ --workers 3 \ --bind unix:/opt/datong/datong.sock \ config.wsgi:application [Install] WantedBy=multi-user.target ```启动并启用服务:
``` sudo systemctl start datong sudo systemctl enable datong ```3.2 Nginx配置
创建Nginx站点配置文件:
``` sudo nano /etc/nginx/sites-available/datong ```添加以下配置:
``` server { listen 80; server_name your-domain.com; location /static/ { alias /opt/datong/static/; } location /media/ { alias /opt/datong/media/; } location / { include proxy_params; proxy_pass http://unix:/opt/datong/datong.sock; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $http_host; proxy_redirect off; } } ```启用站点配置:
``` sudo ln -s /etc/nginx/sites-available/datong /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx ```3.3 Redis缓存配置
编辑Redis配置文件:
``` sudo nano /etc/redis/redis.conf ```找到并修改以下参数:
``` maxmemory 256mb maxmemory-policy allkeys-lru appendonly yes ```重启Redis服务:
``` sudo systemctl restart redis-server ```四、档案管理功能配置
4.1 档案分类体系设置
登录系统后台(your-domain.com/admin),进入"档案分类"管理界面。
创建三级分类结构示例:
- 一级分类:行政档案
- 二级分类:人事档案、财务档案、会议档案
- 三级分类:员工档案、薪资档案、会议纪要
每个分类需要配置:
- 分类编码:如RS-001(人事-001)
- 保管期限:永久/30年/10年
- 密级:公开/内部/秘密
4.2 档案数字化流程配置
配置扫描仪接入:
``` 安装扫描工具 sudo apt install -y sane sane-utils 测试扫描仪 scanimage -L ```在系统设置中配置扫描参数:
- 默认分辨率:300 DPI
- 文件格式:PDF/A
- 色彩模式:彩色/黑白/灰度
- 文件命名规则:{分类代码}_{档案号}_{日期}.pdf
4.3 全文检索配置

安装并配置Elasticsearch:
``` 安装Java sudo apt install -y openjdk-11-jdk 下载Elasticsearch wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.9-amd64.deb sudo dpkg -i elasticsearch-7.17.9-amd64.deb ```编辑Elasticsearch配置:
``` sudo nano /etc/elasticsearch/elasticsearch.yml ```修改以下配置:
``` cluster.name: datong-archive network.host: localhost http.port: 9200 discovery.type: single-node ```启动Elasticsearch:
``` sudo systemctl start elasticsearch sudo systemctl enable elasticsearch ```在Django中配置搜索:
``` 安装django-elasticsearch-dsl pip install django-elasticsearch-dsl 配置settings.py ELASTICSEARCH_DSL = { 'default': { 'hosts': 'localhost:9200' } } ```五、系统监控与维护
5.1 日志配置
配置系统日志轮转:
``` sudo nano /etc/logrotate.d/datong ```添加以下配置:
``` /opt/datong/logs/.log { daily missingok rotate 30 compress delaycompress notifempty create 640 www-data www-data sharedscripts postrotate systemctl reload datong endscript } ```5.2 备份策略
创建自动备份脚本:
``` sudo nano /opt/datong/backup.sh ```脚本内容:
``` !/bin/bash BACKUP_DIR="/opt/datong/backups" DATE=$(date +%Y%m%d_%H%M%S) 备份数据库 pg_dump -U datong_admin datong_archive > $BACKUP_DIR/db_$DATE.sql 备份媒体文件 tar -czf $BACKUP_DIR/media_$DATE.tar.gz /opt/datong/media/ 保留最近7天备份 find $BACKUP_DIR -type f -mtime +7 -delete ```设置定时任务:
``` sudo crontab -e 每天凌晨2点执行备份 0 2 /bin/bash /opt/datong/backup.sh ```5.3 性能监控
安装监控工具:
``` pip install django-debug-toolbar ```在settings.py中配置:
``` INSTALLED_APPS = [ ... 'debug_toolbar', ] MIDDLEWARE = [ 'debug_toolbar.middleware.DebugToolbarMiddleware', ... ] INTERNAL_IPS = ['127.0.0.1'] ```访问系统时,页面右侧会出现调试工具栏,可查看SQL查询、缓存命中率等性能指标。
六、故障排除
6.1 常见问题解决
问题1:数据库连接失败
检查PostgreSQL服务状态:
``` sudo systemctl status postgresql ```检查连接配置:
``` psql -h localhost -U datong_admin -d datong_archive ```问题2:静态文件404错误
检查Nginx配置中的静态文件路径:
``` sudo nginx -t ls -la /opt/datong/static/ ```问题3:上传文件大小限制
修改Nginx配置:
``` client_max_body_size 100M; ```修改Django配置:
``` DATA_UPLOAD_MAX_MEMORY_SIZE = 104857600 FILE_UPLOAD_MAX_MEMORY_SIZE = 104857600 ```6.2 系统更新流程
停止服务:
``` sudo systemctl stop datong ```更新代码:
``` cd /opt/datong/core-system git pull origin main ```更新依赖:
``` source venv/bin/activate pip install -r requirements/production.txt ```执行数据库迁移:
``` python manage.py migrate --settings=config.settings.production python manage.py collectstatic --settings=config.settings.production ```重启服务:
``` sudo systemctl start datong sudo systemctl reload nginx ```