domain-admin配置文件详解:自定义系统行为的所有选项
domain-admin作为一款功能强大的域名SSL证书监测与自动续签平台,其灵活性很大程度上体现在配置系统中。通过修改配置文件,用户可以根据实际需求调整系统行为、适配不同环境。本文将详细解析domain-admin的核心配置文件及其所有可自定义选项,帮助用户充分掌握系统定制能力。
配置文件体系概述
domain-admin采用多层次的配置体系,确保系统在不同环境下的灵活部署与运行。核心配置文件位于domain_admin/config/目录下,主要包含三个关键文件:
- 默认配置:default_config.py - 系统内置的默认配置参数
- 环境变量配置:env_config.py - 从环境变量读取的配置
- 运行时配置:runtime_config.py - 运行时动态调整的配置
这种分层设计允许用户通过环境变量覆盖默认设置,同时支持运行时动态配置,满足从开发、测试到生产环境的不同需求。
默认配置详解
default_config.py是系统最基础的配置文件,定义了domain-admin的核心行为参数。以下是关键配置项的详细说明:
管理员账户设置
# 管理员默认的账号,用户名
DEFAULT_ADMIN_USERNAME = 'admin'
DEFAULT_ADMIN_PASSWORD = '123456'
系统初始化时会创建默认管理员账户,建议首次登录后立即修改密码。相关的密码修改功能实现可参考domain_admin/service/auth_service.py。
安全配置
# header请求头中携带 token 参数名称
TOKEN_KEY = 'X-Token'
# 默认的token有效时长 单位:天
DEFAULT_TOKEN_EXPIRE_DAYS = 7
# secret_key
DEFAULT_SECRET_KEY = secret_util.get_random_secret()
# prometheus_key
DEFAULT_PROMETHEUS_KEY = md5_util.md5(DEFAULT_SECRET_KEY)
这些配置控制着系统的认证机制和数据安全。其中DEFAULT_SECRET_KEY会在系统首次启动时自动生成随机值,确保每个部署实例的安全性。
数据库配置
# 默认数据库链接
DEFAULT_DB_CONNECT_URL = "sqlite:///database/database.db"
domain-admin默认使用SQLite数据库,文件存储路径为database/database.db。如需使用其他数据库(如MySQL、PostgreSQL),可修改此配置项为相应的数据库连接字符串。数据库模型定义在domain_admin/model/目录下。
SSL证书监控配置
# 默认的过期提醒时间 单位:天
DEFAULT_BEFORE_EXPIRE_DAYS = 3
# 默认续期时间 单位:天
DEFAULT_RENEW_DAYS = 30
这两个参数控制SSL证书的监控行为。系统会在证书过期前DEFAULT_BEFORE_EXPIRE_DAYS天开始发送提醒通知,并在到期前DEFAULT_RENEW_DAYS天尝试自动续签。通知功能的实现可参考domain_admin/service/notify_service.py。
网络配置
# 默认的ssh连接端口
DEFAULT_SSH_PORT = 22
# user agent
USER_AGENT = "Mozilla/5.0 (compatible; DomainAdmin/{version}; +{url})".format(
version=VERSION,
url=PROJECT_HOME_URL,
)
DEFAULT_SSH_PORT指定了用于证书部署的SSH默认端口,而USER_AGENT则是系统对外发起HTTP请求时使用的用户代理标识。
环境变量配置
env_config.py允许通过环境变量覆盖默认配置,特别适合容器化部署场景。例如,在Docker环境中,可以通过设置环境变量来自定义配置:
# 设置管理员用户名
export ADMIN_USERNAME=myadmin
# 设置数据库连接
export DB_CONNECT_URL=mysql://user:pass@localhost:3306/domain_admin
这种方式使得配置与代码分离,提高了部署的灵活性和安全性。所有支持的环境变量及其对应关系可在env_config.py中查看。
运行时配置
runtime_config.py提供了动态调整系统行为的能力,部分配置可以通过Web界面修改并即时生效。系统配置管理界面的实现代码位于domain_admin/api/system_api.py。
通过运行时配置,用户可以调整诸如监控频率、通知方式、日志级别等系统参数,而无需重启服务。
配置加载流程
domain-admin的配置加载遵循以下优先级顺序(从高到低):
- 运行时动态配置(存储在数据库中)
- 环境变量配置(env_config.py)
- 默认配置(default_config.py)
系统启动时,配置加载流程的实现代码可参考domain_admin/main.py中的初始化部分。了解这一流程有助于理解配置参数的最终生效机制。
实际应用场景示例
生产环境配置示例
以下是一个典型的生产环境配置方案,通过环境变量设置:
# 基础配置
export ADMIN_USERNAME=admin@example.com
export ADMIN_PASSWORD=SecurePassword123!
export SECRET_KEY=$(python -c "import secrets; print(secrets.token_urlsafe(32))")
# 数据库配置
export DB_CONNECT_URL=postgresql://user:password@db-host:5432/domain_admin
# 日志配置
export LOG_LEVEL=INFO
export LOG_FILE=/var/log/domain-admin/app.log
# 服务器配置
export PORT=8080
export HOST=0.0.0.0
Docker部署配置
使用Docker部署时,可通过docker-compose.yml文件设置环境变量:
version: '3'
services:
domain-admin:
image: domain-admin:latest
environment:
- ADMIN_USERNAME=admin
- ADMIN_PASSWORD=your-secure-password
- DB_CONNECT_URL=mysql://user:pass@mysql:3306/domain_admin
- TZ=Asia/Shanghai
ports:
- "8080:8080"
volumes:
- ./data:/app/database
相关的Docker部署配置可参考项目根目录下的Dockerfile。
常见问题与解决方案
配置修改后不生效
如果修改配置后系统没有按预期行为运行,可按以下步骤排查:
- 确认配置文件的路径是否正确
- 检查配置参数的格式是否符合要求
- 对于环境变量配置,确保变量名称与env_config.py中定义的一致
- 某些配置可能需要重启服务才能生效
忘记管理员密码
如果忘记管理员密码,可通过修改数据库直接重置,或者使用项目提供的密码重置脚本。相关操作可参考官方文档中的doc/source/manual/question.md(常见问题)部分。
总结与最佳实践
domain-admin的配置系统设计兼顾了易用性和灵活性,通过合理配置可以满足不同场景的需求。以下是一些配置最佳实践:
- 生产环境安全:始终修改默认管理员密码,并使用环境变量设置敏感信息
- 数据备份:对于SQLite配置,定期备份
database/database.db文件 - 版本控制:不要将修改后的配置文件提交到版本控制系统,使用环境变量或外部配置文件
- 监控告警:配置适当的SSL证书过期提醒时间,确保及时续签
通过深入理解和合理配置这些参数,您可以充分发挥domain-admin的强大功能,构建稳定可靠的域名和SSL证书管理系统。更多高级配置选项和使用技巧,请参考完整的官方文档doc/source/index.rst。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




