agentic_huge_data_base / wiki
页面 Mayan EDMS · 7.1 配置参考·DeepWiki 中文全文译文

7.1 · 配置参考(Configuration Reference)

企业电子文档治理 · 聚焦本章的模块关系、源码依据与实现要点。

项目Mayan EDMS 章节7.1 状态全文译文 模块存储与持久化、配置治理、文档对象与元数据、测试、发布与运维
源码线索
  • mayan/apps/common/api_views.py
  • mayan/apps/common/apps.py
  • mayan/apps/common/classes.py
  • mayan/apps/common/forms.py
  • mayan/apps/common/links.py
  • mayan/apps/common/literals.py
  • mayan/apps/common/serializers.py
  • mayan/apps/common/settings.py
  • mayan/apps/common/tests/mixins.py
  • mayan/apps/common/tests/test_api.py
模块标签
  • 存储与持久化
  • 配置治理
  • 文档对象与元数据
  • 测试、发布与运维
  • 工作流与编排

章节正文

配置参考

配置参考

相关源文件

本章引用的主要源码文件:

  • mayan/apps/common/api_views.py
  • mayan/apps/common/apps.py
  • mayan/apps/common/classes.py
  • mayan/apps/common/forms.py
  • mayan/apps/common/links.py
  • mayan/apps/common/literals.py
  • mayan/apps/common/serializers.py
  • mayan/apps/common/settings.py
  • mayan/apps/common/tests/mixins.py
  • mayan/apps/common/tests/test_api.py
  • mayan/apps/common/tests/test_links.py
  • mayan/apps/common/urls.py
  • mayan/apps/common/views.py
  • mayan/apps/django_gpg/serializers.py
  • mayan/apps/document_parsing/serializers.py
  • mayan/apps/events/api_views.py
  • mayan/apps/events/tests/test_api.py
  • mayan/apps/metadata/tests/__init__.py
  • mayan/apps/permissions/links.py
  • mayan/apps/smart_settings/apps.py
  • mayan/apps/smart_settings/classes.py
  • mayan/apps/smart_settings/icons.py
  • mayan/apps/smart_settings/links.py
  • mayan/apps/smart_settings/literals.py
  • mayan/apps/smart_settings/management/commands/settings_revert.py
  • mayan/apps/smart_settings/permissions.py
  • mayan/apps/smart_settings/settings.py
  • mayan/apps/smart_settings/tests/literals.py
  • mayan/apps/smart_settings/tests/mixins.py
  • mayan/apps/smart_settings/tests/mocks.py
  • mayan/apps/smart_settings/tests/test_classes.py
  • mayan/apps/smart_settings/tests/test_utils.py
  • mayan/apps/smart_settings/tests/test_views.py
  • mayan/apps/smart_settings/urls.py
  • mayan/apps/smart_settings/utils.py
  • mayan/apps/smart_settings/views.py
  • mayan/apps/task_manager/literals.py
  • mayan/apps/task_manager/locale/bs/LC_MESSAGES/django.po
  • mayan/apps/task_manager/locale/cs/LC_MESSAGES/django.po
  • mayan/apps/task_manager/locale/el/LC_MESSAGES/django.po
  • mayan/apps/task_manager/settings.py
  • mayan/settings/base.py
  • mayan/settings/testing/base.py

本文档提供了 Mayan EDMS 中所有可用配置设置的全面参考。它涵盖了智能设置系统、环境变量、配置文件,以及设置在整个应用生命周期中的解析和管理方式。

有关特定于部署的配置指南,请参见配置管理。有关开发环境设置,请参见开发设置

配置系统概述

Mayan EDMS 使用一个名为"智能设置"的复杂多层配置系统,该系统支持多个配置源,并具有明确的优先级顺序。该系统围绕命名空间构建,用于组织相关设置,并为配置变更提供迁移能力。

Mayan EDMS · 配置系统概述 · 图 1
Mayan EDMS · 配置系统概述 · 图 1

来源:mayan/apps/smart_settings/classes.py:168-417, mayan/apps/smart_settings/utils.py:119-175, mayan/settings/base.py:18-28

配置解析流程

配置系统使用严格的优先级顺序来解析设置值,这确保了环境变量可以覆盖任何其他源,从而提供安全性和部署灵活性。

Mayan EDMS · 配置解析流程 · 图 2
Mayan EDMS · 配置解析流程 · 图 2

来源:mayan/apps/smart_settings/classes.py:403-408, mayan/apps/smart_settings/utils.py:137-175

设置命名空间

设置被组织到逻辑命名空间中,这些命名空间将相关的配置选项分组。每个命名空间可以有自己的版本和迁移类,以处理软件版本之间的配置更新。

命名空间用途版本管理
djangoDjango 核心框架设置基础版本控制
celery任务队列和工作进程配置基础版本控制
common应用级通用设置高级版本控制(含迁移)
documents文档管理设置高级版本控制(含迁移)
ocrOCR 处理设置高级版本控制(含迁移)
storage文件存储后端设置高级版本控制(含迁移)
Mayan EDMS · 设置命名空间 · 图 3
Mayan EDMS · 设置命名空间 · 图 3

来源:mayan/apps/smart_settings/classes.py:49-111, mayan/apps/common/settings.py:15-98

环境变量

所有设置都可以使用前缀为 MAYAN_ 的环境变量进行覆盖。环境变量具有最高优先级,并会被解析为 YAML 值。

关键环境变量
变量用途示例
MAYAN_SECRET_KEYDjango 用于加密签名的密钥your-secret-key-here
MAYAN_DATABASES数据库配置{"default": {"ENGINE": "django.db.backends.postgresql"}}
MAYAN_CELERY_BROKER_URLCelery 的消息代理 URLredis://redis:6379/0
MAYAN_MEDIA_ROOT媒体文件存储路径/app/media
MAYAN_STATIC_ROOT静态文件存储路径/app/static
MAYAN_DEBUG启用 Django 调试模式false
MAYAN_ALLOWED_HOSTS允许的 HTTP 主机["localhost", "example.com"]
环境变量处理流程
Mayan EDMS · 环境变量处理流程 · 图 4
Mayan EDMS · 环境变量处理流程 · 图 4

来源:mayan/apps/smart_settings/classes.py:328-339, mayan/apps/smart_settings/utils.py:161-174, mayan/settings/base.py:30-39

配置文件

主要的配置文件是位于媒体目录下的 config.yml。该文件以 YAML 格式存储所有非默认的设置值,并支持用于迁移的命名空间版本控制。

配置文件结构
SMART_SETTINGS_NAMESPACES:
  common:
    version: "0002"
  django:
    version: "0001"

# 数据库配置
DATABASES:
  default:
    ENGINE: "django.db.backends.postgresql"
    NAME: "mayan"
    USER: "mayan"
    PASSWORD: "password"
    HOST: "db"
    PORT: 5432

# Celery 配置
CELERY_BROKER_URL: "redis://redis:6379/0"
CELERY_RESULT_BACKEND: "redis://redis:6379/1"

# 应用设置
COMMON_PROJECT_TITLE: "My Document Management"
COMMON_DISABLED_APPS:
  - "mayan.apps.announcements"
配置文件管理
操作管理命令用途
保存当前配置设置变更时自动执行将设置持久化到 config.yml
备份配置启动时自动执行创建 config_backup.yml
恢复配置./manage.py settings_revert从备份恢复
查看设置Web 界面或 API浏览当前值

来源:mayan/apps/smart_settings/classes.py:242-285, mayan/apps/smart_settings/literals.py:3-4, mayan/apps/smart_settings/management/commands/settings_revert.py:6-18

引导设置

某些关键设置必须在 Django 应用完全初始化之前可用。这些引导设置使用一个特殊的单例系统,可以在启动过程的早期解析配置。

Mayan EDMS · 引导设置 · 图 5
Mayan EDMS · 引导设置 · 图 5
引导设置类型
设置类用途示例
FilesystemBootstrapSetting相对于 BASE_DIR 的文件系统路径MEDIA_ROOT
MediaBootstrapSetting相对于 MEDIA_ROOT 的路径CONFIGURATION_FILEPATH
BaseSetting具有默认值的标准设置DATABASES, DEBUG

来源:mayan/apps/smart_settings/utils.py:177-250, mayan/settings/base.py:18-28

数据库配置

数据库设置既支持简单的连接参数,也支持完整的 Django 数据库配置字典。该系统提供了单独的数据库连接设置和一个完整的 DATABASES 设置。

单独的数据库设置
设置用途默认值
DATABASE_ENGINEDjango 数据库后端None(使用 SQLite)
DATABASE_NAME数据库名称None
DATABASE_USER数据库用户名None
DATABASE_PASSWORD数据库密码None
DATABASE_HOST数据库主机None
DATABASE_PORT数据库端口None
DATABASE_CONN_MAX_AGE连接最大存活时间(秒)0
数据库解析逻辑
Mayan EDMS · 数据库解析逻辑 · 图 6
Mayan EDMS · 数据库解析逻辑 · 图 6

来源:mayan/settings/base.py:353-372, mayan/apps/smart_settings/utils.py:404-437

Celery 任务管理器设置

Celery 配置控制用于后台处理的分布式任务队列系统。设置组织在 celery 命名空间下。

核心 Celery 设置
设置用途默认值
CELERY_BROKER_URL消息代理 URLmemory://
CELERY_RESULT_BACKEND结果存储后端None
CELERY_BROKER_LOGIN_METHODAMQP 登录方法AMQPLAIN
CELERY_BROKER_USE_SSL为代理连接启用 SSLNone
Django 设置中的 Celery 配置

引导系统还会直接在 Django 中配置额外的 Celery 设置:

# 来自 mayan/settings/base.py:287-300
CELERY_ACCEPT_CONTENT = ('json',)
CELERY_BEAT_SCHEDULE = {}
CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers.DatabaseScheduler'
CELERY_DISABLE_RATE_LIMITS = True
CELERY_ENABLE_UTC = True
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TASK_ALWAYS_EAGER = False
CELERY_TASK_CREATE_MISSING_QUEUES = True
CELERY_TASK_DEFAULT_QUEUE = 'celery'
CELERY_TASK_EAGER_PROPAGATES = True
CELERY_TASK_QUEUES = []
CELERY_TASK_ROUTES = {}
CELERY_TASK_SERIALIZER = 'json'
CELERY_TIMEZONE = 'UTC'

来源:mayan/apps/task_manager/settings.py:10-43, mayan/settings/base.py:287-300

通用应用设置

common 命名空间包含影响 Mayan EDMS 整体行为的应用级设置。

通用设置参考
设置用途默认值示例
COMMON_PROJECT_TITLE在 UI 中显示的应用标题Mayan EDMSMy Document System
COMMON_PROJECT_URL项目主页 URLhttps://www.mayan-edms.comhttps://docs.example.com
COMMON_HOME_VIEW登录后的默认视图common:homedocuments:document_list
COMMON_HOME_VIEW_DASHBOARD_NAME在主页视图上显示的仪表盘useradmin
COMMON_DISABLED_APPS要从安装中排除的应用()["mayan.apps.announcements"]
COMMON_EXTRA_APPS要安装的额外应用()["custom.apps.integration"]
COMMON_EXTRA_APPS_PRE要在核心应用之前安装的额外应用()["custom.apps.middleware"]
COMMON_DISABLE_LOCAL_STORAGE禁用本地文件存储FalseTrue
应用配置流程
Mayan EDMS · 应用配置流程 · 图 7
Mayan EDMS · 应用配置流程 · 图 7

来源:mayan/apps/common/settings.py:15-98, mayan/settings/base.py:325-351

Django 核心设置

django 命名空间包含直接对应于 Django 框架配置选项的设置。

关键 Django 设置
设置用途默认值
ALLOWED_HOSTS允许的 HTTP Host 请求头['127.0.0.1', 'localhost', '[::1]']
DEBUG启用 Django 调试模式False
LANGUAGE_CODE默认语言代码en-us
TIME_ZONE默认时区UTC
DATABASES数据库配置字典{}
EMAIL_BACKEND电子邮件后端类django.core.mail.backends.smtp.EmailBackend
EMAIL_HOSTSMTP 服务器主机名localhost
EMAIL_PORTSMTP 服务器端口25
EMAIL_HOST_USERSMTP 用户名''
EMAIL_HOST_PASSWORDSMTP 密码''
EMAIL_USE_TLS为电子邮件使用 TLSFalse
EMAIL_USE_SSL为电子邮件使用 SSLFalse

来源:mayan/apps/smart_settings/settings.py:26-328

设置类型与校验

智能设置系统支持不同的设置类型,并具备校验能力。

设置校验流程
Mayan EDMS · 设置校验流程 · 图 8
Mayan EDMS · 设置校验流程 · 图 8
校验函数示例
def validate_database_engine(setting, raw_value):
    """校验数据库引擎设置"""
    if raw_value and not raw_value.startswith('django.db.backends.'):
        raise ValidationError('数据库引擎必须是 Django 后端')
    return raw_value

来源:mayan/apps/smart_settings/classes.py:397-401, mayan/apps/smart_settings/tests/mocks.py:31-35

管理命令

智能设置系统提供了用于配置操作的管理命令。

设置管理命令
命令用途用法
settings_revert从备份恢复配置./manage.py settings_revert
Web 界面

设置也可以通过 Web 界面进行管理:

  • 命名空间列表:在 /settings/namespaces/ 查看所有设置命名空间
  • 命名空间详情:在 /settings/namespaces/{namespace}/ 查看命名空间中的设置
  • 设置编辑:在 /settings/namespaces/settings/{setting}/edit/ 编辑单个设置

注意:当 COMMON_DISABLE_LOCAL_STORAGETrue 时,通过 Web 界面的设置编辑功能会被禁用。

来源:mayan/apps/smart_settings/management/commands/settings_revert.py:6-18, mayan/apps/smart_settings/views.py:18-101, mayan/apps/smart_settings/urls.py:7-20

测试配置

Mayan EDMS 包含一个专门的测试配置,该配置会覆盖许多设置,以优化测试执行的性能和隔离性。

测试设置覆盖
设置测试值用途
CELERY_TASK_ALWAYS_EAGERTrue同步执行任务
CELERY_BROKER_URLmemory://使用内存代理
COMMON_HOME_VIEW_DASHBOARD_NAMENone禁用仪表盘
DOCUMENT_PARSING_AUTO_PARSINGFalse禁用自动解析
OCR_AUTO_OCRFalse禁用自动 OCR
SEARCH_BACKENDTestSearchBackend使用测试搜索后端
PASSWORD_HASHERSMD5PasswordHasher使用快速密码哈希

来源:mayan/settings/testing/base.py:1-60