文件命名与路径规范 📂
版本:1.0
适用范围:LinuxDC 体系中所有服务器、脚本、配置文件、目录结构
目的:在“一切皆文件”的 Linux 哲学下,确保命名与路径高度标准化、可预测、可自动化,避免生产事故 🚨
1. 命名核心原则 (The Golden Rules) ✨
-
全小写原则 🔤
目录名、文件名一律使用小写字母(a-z)。
禁止大写字母,避免因 Linux 大小写敏感导致的致命生产事故。 -
语义化分割 ➖
统一使用中划线 -(kebab-case)作为单词分隔符。
严禁使用空格,不建议使用下划线 _(除非 Python 变量或特定系统要求)。 -
见名知意 🧠
禁止test.sh、temp.txt、myscript.sh。
必须使用明确描述性的名称,如db-backup-cron.sh、nginx-access-log-rotate.sh。 -
版本占位备份 📅
修改配置文件前,必须备份为:filename.conf.bak.YYYYMMDD
示例:nginx.conf.bak.20260122
2. 目录结构规范 (Directory Hierarchy) 📁
为了超越常规运维,我们将非系统原生文件统一划分到以下标准路径:
| 路径 | 用途说明 | 推荐权限 | 备注 |
|---|---|---|---|
/opt/app/ |
所有第三方业务应用安装目录 | appuser:appgroup | 推荐软链接到 /srv/app/ |
/opt/scripts/ |
运维自定义脚本(备份、监控、巡检等) | root:root 755 | 所有脚本统一存放,便于审计 |
/opt/data/ |
业务数据持久化目录(建议独立挂载点) | appuser:appgroup | 重要数据目录,建议 RAID + 备份 |
/opt/logs/ |
应用日志统一存放路径 | root:root 755 | 建议软链接 /var/log/app/ 到此 |
/opt/conf/ |
跨应用的全局配置或环境声明文件 | root:root 644 | 存放非系统原生配置文件 |
推荐:所有自定义内容尽量不污染 /etc/,统一放在 /opt/ 下,便于迁移、备份、审计。
3. 运维脚本命名规范 (Scripting Standards) 🛠️
脚本命名格式:[功能所属]-[具体动作]-[对象].sh
- 正例 ✅
sys-init-rhel10.shdb-sync-mysql.shmon-check-disk.sh-
backup-full-system.sh -
禁忌 🚫
1.sh、myscript.sh、backup_all.shtest.sh、temp.sh
4. 配置文件备份规范 (Config Backup) 💾
修改 /etc 下任何配置文件前,严禁直接 vi,必须遵循以下流水线:
-
备份原文件
cp nginx.conf nginx.conf.bak.$(date +%Y%m%d) -
原子化编辑
编辑后文件不带版本号,保持原名。 -
注释标准(文件头部添加修改记录)
# Modified by: LinuxDC-Admin # Date: 2026-01-22 # Purpose: Tuning worker_connections for high concurrency # Before: worker_connections 1024 # After: worker_connections 4096
5. 主机名命名规范 (Hostname Naming) 🖥️
主机名是数据中心资产管理的灵魂。推荐格式:[Env][Region]-[App]-[Index]
环境标识 (Env): - p → Production(生产) - s → Staging(预发布) - t → Test(测试) - d → Dev(开发)
示例:
- psh-nginx-01
- thk-db-pg-02
- dkr-app-api-03
6. 日志文件命名规范 (Logging Standards) 📜
日志文件应具备可滚动性,命名包含日期戳:
- 当前活动日志:
access.log - 已归档日志:
access.log-20260122.gz
推荐:使用 logrotate 自动轮转,并统一存放于 /opt/logs/。
自动化警告
当你在编写 Ansible Playbook 或 Shell 脚本时,硬编码路径是导致失败的首要原因。
请始终在脚本开头定义路径变量:
BASE_DIR="/opt/app/nginx"
CONF_DIR="/opt/conf"
LOG_DIR="/opt/logs/nginx"
所有新文件、目录、脚本必须严格遵守以上规范。
如有疑问,请在项目内部讨论后统一更新本规范文档。