上一篇文章,介绍了一个完整的开发系统,全流程
现在在介绍一下,我们开发好一个系统
应该对什么领域的信息,在什么地方,去进行数据持久化的留痕准备
1.在开发环境相关的找相关资源
去哪里下载资源,怎么配置环境
2.对操作系统Windows以及文件夹
编辑操作系统的环境变量层面
文件夹相关的位置
maven位置
npm装的包的位置
软件安装的位置
源代码相关的位置
2.对相关代码资源留痕
本地文件夹位置
远程git仓库
3.服务器领域
云服务器位置
相关ip,账号密码,在云服务器领域做配置相关
服务器层面的软件
docker-nginx
docker-mysql
docker-redis
相关账号密码,信息存储
相关docker打包存储
上一篇文章讲的是“从 0 到 1 把系统开发出来”。这一篇讲的是:系统开发好之后,如何为环境、代码、服务器、账号、数据做持久化留痕。
留痕不是写流水账,而是建立一张“资产地图”:以后你、同事、运维、甚至半年后的自己,拿到这份留痕,就能恢复环境、重建服务、排查问题、交接系统。
核心原则先记住:
- 公开信息进 Git:代码、配置模板、部署脚本、文档。
- 敏感信息进密码管理器/Vault:密码、密钥、Token、证书私钥。
- 只记录“在哪里”,不记录“值”:文档里写“生产 MySQL 密码在 Vault 的 secret/prod/mysql/app”,不要写密码本身。
- 能版本化的都版本化:Dockerfile、docker-compose、Nginx 配置、SQL 初始化脚本。
- 能备份的都要能恢复:数据库、Redis、Docker 卷、镜像、云盘快照。
一、开发环境资源留痕
1. 下载源与版本
建议在项目里建一个docs/environment.md,记录:
| 资源 | 下载来源 | 版本 | 安装位置 | 备注 |
|---|---|---|---|---|
| JDK | Adoptium / Oracle / 华为云镜像 | 17 | D:\Apps\Java\jdk-17 | JAVA_HOME |
| Maven | Apache 官网 / 阿里云镜像 | 3.9.9 | D:\Apps\apache-maven-3.9.9 | MAVEN_HOME |
| Node | Node 官网 / nvm-windows | 20 LTS | D:\Apps\nodejs | NODE_HOME |
| Docker | Docker Desktop / 官网 | 最新稳定版 | C:\Program Files\Docker | 开启 WSL2 |
| MySQL | Docker 镜像 | 8.0 | Docker 容器 | 数据卷 mysql-data |
| Redis | Docker 镜像 | 7.x | Docker 容器 | 数据卷 redis-data |
| Nginx | Docker 镜像 | 1.25 | Docker 容器 | 配置挂载 |
不要只记“我装过”,要记清楚:版本、路径、环境变量、配置文件位置、下载地址。
2. Windows 环境变量留痕
Windows 环境变量位置:
- 图形界面:此电脑 → 属性 → 高级系统设置 → 环境变量
- 用户变量:只对当前用户生效
- 系统变量:对所有用户生效
- 命令行查看:
set、setx、PowerShell:[Environment]::GetEnvironmentVariable("Path","User")[Environment]::GetEnvironmentVariable("Path","Machine")
建议在docs/windows-env.md记录:
| 变量名 | 示例值 | 作用 | 用户/系统 | 是否敏感 |
|---|---|---|---|---|
| JAVA_HOME | D:\Apps\Java\jdk-17 | Java 根目录 | 系统 | 否 |
| MAVEN_HOME | D:\Apps\apache-maven-3.9.9 | Maven 根目录 | 系统 | 否 |
| NODE_HOME | D:\Apps\nodejs | Node 根目录 | 系统 | 否 |
| Path | %JAVA_HOME%\bin;%MAVEN_HOME%\bin;%NODE_HOME% | 命令可用 | 系统 | 否 |
注意:不要把生产密码写进系统环境变量。系统环境变量适合路径、开关、本地开发配置;生产密钥应放 Vault、云 Secrets Manager、Docker secrets 或 K8s Secret。
3. 文件夹与路径留痕
建议统一目录,例如:
D:\Apps\ 软件安装 D:\Apps\Java\ JDK D:\Apps\apache-maven\ Maven D:\Apps\nodejs\ Node D:\workspace\ 源代码 D:\workspace\company\ 公司项目 D:\data\ 本地数据、备份、临时文件Maven 相关:
- Maven 安装位置:
D:\Apps\apache-maven-3.9.9 - 本地仓库:
C:\Users\你的用户名\.m2\repository - 配置文件:
C:\Users\你的用户名\.m2\settings.xml - 项目级:
.mvn/wrapper/maven-wrapper.properties - 留痕:
settings.xml如果含私服密码,只提交脱敏模板;mvnw、mvnw.cmd提交到 Git。
npm 相关:
- Node 安装位置:
D:\Apps\nodejs - npm 全局包:
C:\Users\你的用户名\AppData\Roaming\npm - npm 缓存:
C:\Users\你的用户名\AppData\Local\npm-cache - 用户配置:
C:\Users\你的用户名\.npmrc - 项目配置:项目根目录
.npmrc - 留痕:
package.json、package-lock.json/pnpm-lock.yaml/yarn.lock必须提交;.npmrc如果含 token,不提交,只提交.npmrc.example。
常用命令:
mvn-vmvn help:effective-settingsnpmconfig listnpmroot-gnpmconfig get cachenode-vnpm-v二、代码资源留痕
本地代码目录建议:
D:\workspace\company\project-a D:\workspace\company\project-b D:\workspace\personal\...远程 Git 仓库要记录:
- 仓库地址:
git@gitlab.example.com:group/project.git - 平台:GitLab / GitHub / Gitee / 自建 Git
- 分支策略:main、dev、feature、release
- 保护分支:main 不允许直接 push
- CI/CD:流水线文件
.gitlab-ci.yml、Jenkinsfile、.github/workflows - 大文件:Git LFS
- 子模块:
.gitmodules
项目里建议放这些文档:
README.md 项目说明、启动方式 docs/architecture.md 架构图、模块说明 docs/environment.md 开发环境、版本、下载源 docs/windows-env.md Windows 环境变量 docs/servers.md 服务器清单 docs/credentials-locations.md 密码存放位置,不写值 docs/deployment.md 部署流程 docs/backup-restore.md 备份恢复 docs/runbook.md 故障处理手册.gitignore必须包含:
.env .env.* !.env.example *.pem *.key *.p12 settings.xml .npmrc node_modules/ target/ dist/ logs/ data/三、服务器领域留痕
1. 云服务器基础信息
在docs/servers.md记录:
| 环境 | 云厂商 | 地域 | 实例 ID | 公网 IP | 内网 IP | 系统 | 规格 | 安全组 | 负责人 |
|---|---|---|---|---|---|---|---|---|---|
| 生产 | 阿里云 | 杭州 | i-xxx | 1.2.3.4 | 10.0.0.1 | Ubuntu 22.04 | 2C4G | sg-xxx | 张三 |
| 测试 | 腾讯云 | 上海 | ins-xxx | 5.6.7.8 | 10.0.1.1 | CentOS 7 | 2C2G | sg-yyy | 李四 |
云控制台要留痕:
- 云账号:主账号、RAM 子账号、MFA
- 地域、VPC、交换机、安全组
- 实例 ID、快照策略、云盘、带宽
- 域名、DNS、SSL 证书到期时间
账号密码不要写进 Git。只在文档里写“在 1Password / Vault / 云 Secrets Manager 的哪个条目”。
2. 服务器上的软件与目录
常见目录:
/opt/app/ 应用部署目录 /opt/app/docker-compose.yml /opt/app/.env 敏感,权限 600 /data/mysql/ MySQL 数据 /data/redis/ Redis 数据 /data/nginx/logs/ Nginx 日志 /etc/nginx/conf.d/ Nginx 配置 /backup/ 备份目录服务器软件留痕:
- Docker:
docker -v、docker compose version - Nginx:
docker-nginx,配置、证书、日志、端口 - MySQL:
docker-mysql,版本、端口、数据卷、账号 - Redis:
docker-redis,版本、端口、密码、持久化方式 - 防火墙:开放端口,3306、6379 不要公网暴露
- SSH:优先密钥登录,禁止 root 密码登录
3. Docker 与持久化
Docker 相关留痕重点:
Dockerfile提交 Gitdocker-compose.yml提交 Git.env.example提交 Git,.env不提交- Nginx 配置提交 Git
- MySQL 初始化 SQL 提交 Git
- Redis 配置提交 Git
- 镜像仓库地址、命名空间、镜像名、Tag 规则写进文档
镜像 Tag 建议:
registry.cn-hangzhou.aliyuncs.com/ns/app:2026.10.13 registry.cn-hangzhou.aliyuncs.com/ns/app:git-abc1234不要只用latest。
数据卷示例:
services:mysql:image:mysql:8.0volumes:-mysql-data:/var/lib/mysql-./mysql/init:/docker-entrypoint-initdb.denv_file:-.envrestart:alwaysredis:image:redis:7volumes:-redis-data:/data-./redis/redis.conf:/usr/local/etc/redis/redis.confcommand:redis-server /usr/local/etc/redis/redis.confrestart:alwaysnginx:image:nginx:1.25volumes:-./nginx/conf.d:/etc/nginx/conf.d-./nginx/certs:/etc/nginx/certs-./nginx/logs:/var/log/nginxports:-"80:80"-"443:443"restart:alwaysvolumes:mysql-data:redis-data:Docker 镜像打包存储:
dockersave app:tag|gzip>app-tag.tar.gzdockerload<app-tag.tar.gz生产更推荐推送到私有仓库:Harbor、阿里云 ACR、腾讯云 TCR。
四、账号密码与敏感信息留痕
敏感信息包括:
- 服务器 SSH 密码/密钥
- 云账号 AK/SK
- MySQL root 和应用账号
- Redis 密码
- Nginx SSL 私钥
- Git Token
- CI/CD Secrets
- 第三方 API Key
存放位置建议:
| 类型 | 推荐存放位置 |
|---|---|
| 个人密码 | 1Password / Bitwarden / KeePassXC |
| 团队共享密码 | Vault / 云 Secrets Manager |
| 生产容器密钥 | Docker secrets / K8s Secret |
| CI/CD | GitLab CI Variables / Jenkins Credentials |
| 本地开发 | .env,不提交 Git |
docs/credentials-locations.md只写位置:
| 名称 | 用途 | 存放位置 | 最后轮换 | 负责人 |
|---|---|---|---|---|
| 生产 MySQL | 应用连接 | Vault: secret/prod/mysql/app | 2026-10-01 | 张三 |
| 云账号 | 控制台 | 1Password: 云平台/生产/主账号 | 有 MFA | 李四 |
| SSL 私钥 | HTTPS | Vault: secret/prod/nginx/ssl | 2026-09-01 | 王五 |
绝对不要在 Git、聊天记录、Excel、桌面 txt 里放明文密码。
五、备份与恢复留痕
数据持久化不只是“存着”,还要能恢复。
MySQL:
mysqldump --single-transaction--routines--triggers-uroot-pdb>backup.sql mysql-uroot-pdb<backup.sqlRedis:
- 开启 RDB/AOF
- 备份
dump.rdb、appendonly.aof - 恢复时替换数据文件并重启
Docker 卷:
dockerrun--rm-vmysql-data:/data-v${PWD}:/backup alpine\tarczf /backup/mysql-data.tar.gz-C/data.云服务器:
- 云盘快照
- 对象存储异地备份
- 保留策略:7 天、30 天、365 天
- 定期做恢复演练
六、最终检查清单
一个系统开发好后,至少留下这些:
docs/environment.md:开发环境、下载源、版本。docs/windows-env.md:Windows 环境变量、Maven、npm 路径。docs/servers.md:云服务器、IP、实例 ID、安全组。docs/credentials-locations.md:密码存放位置,不写值。docs/deployment.md:部署步骤。docs/backup-restore.md:备份与恢复。- Git 仓库:代码、Dockerfile、docker-compose、Nginx 配置、SQL 初始化。
.env.example:环境变量模板。.gitignore:排除敏感文件和构建产物。- 密码管理器/Vault:所有密码、密钥、Token。
- Docker 镜像仓库:镜像 Tag 规则、保留策略。
- 数据备份:MySQL、Redis、Docker 卷、云盘快照。
一句话总结:
留痕的目标不是“记录所有东西”,而是让任何一个有权限的人,拿到 Git 仓库 + 密码管理器 + 云控制台,就能把系统重新跑起来。