独立开发者,开发完整系统相关信息留痕层面思考

上一篇文章,介绍了一个完整的开发系统,全流程

现在在介绍一下,我们开发好一个系统

应该对什么领域的信息,在什么地方,去进行数据持久化的留痕准备

1.在开发环境相关的找相关资源

去哪里下载资源,怎么配置环境

2.对操作系统Windows以及文件夹

编辑操作系统的环境变量层面

文件夹相关的位置

maven位置

npm装的包的位置

软件安装的位置

源代码相关的位置

2.对相关代码资源留痕

本地文件夹位置

远程git仓库

3.服务器领域

云服务器位置

相关ip,账号密码,在云服务器领域做配置相关

服务器层面的软件

docker-nginx

docker-mysql

docker-redis

相关账号密码,信息存储

相关docker打包存储

上一篇文章讲的是"从 0 到 1 把系统开发出来"。这一篇讲的是:系统开发好之后,如何为环境、代码、服务器、账号、数据做持久化留痕 。

留痕不是写流水账,而是建立一张"资产地图":以后你、同事、运维、甚至半年后的自己,拿到这份留痕,就能恢复环境、重建服务、排查问题、交接系统。

核心原则先记住:

  1. 公开信息进 Git:代码、配置模板、部署脚本、文档。
  2. 敏感信息进密码管理器/Vault:密码、密钥、Token、证书私钥。
  3. 只记录"在哪里",不记录"值":文档里写"生产 MySQL 密码在 Vault 的 secret/prod/mysql/app",不要写密码本身。
  4. 能版本化的都版本化:Dockerfile、docker-compose、Nginx 配置、SQL 初始化脚本。
  5. 能备份的都要能恢复:数据库、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:

    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. 文件夹与路径留痕

建议统一目录,例如:

text 复制代码
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。

常用命令:

bash 复制代码
mvn -v
mvn help:effective-settings
npm config list
npm root -g
npm config get cache
node -v
npm -v

二、代码资源留痕

本地代码目录建议:

text 复制代码
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

项目里建议放这些文档:

text 复制代码
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 必须包含:

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. 服务器上的软件与目录

常见目录:

text 复制代码
/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 提交 Git
  • docker-compose.yml 提交 Git
  • .env.example 提交 Git,.env 不提交
  • Nginx 配置提交 Git
  • MySQL 初始化 SQL 提交 Git
  • Redis 配置提交 Git
  • 镜像仓库地址、命名空间、镜像名、Tag 规则写进文档

镜像 Tag 建议:

text 复制代码
registry.cn-hangzhou.aliyuncs.com/ns/app:2026.10.13
registry.cn-hangzhou.aliyuncs.com/ns/app:git-abc1234

不要只用 latest。

数据卷示例:

yaml 复制代码
services:
  mysql:
    image: mysql:8.0
    volumes:
      - mysql-data:/var/lib/mysql
      - ./mysql/init:/docker-entrypoint-initdb.d
    env_file:
      - .env
    restart: always

  redis:
    image: redis:7
    volumes:
      - redis-data:/data
      - ./redis/redis.conf:/usr/local/etc/redis/redis.conf
    command: redis-server /usr/local/etc/redis/redis.conf
    restart: always

  nginx:
    image: nginx:1.25
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./nginx/certs:/etc/nginx/certs
      - ./nginx/logs:/var/log/nginx
    ports:
      - "80:80"
      - "443:443"
    restart: always

volumes:
  mysql-data:
  redis-data:

Docker 镜像打包存储:

bash 复制代码
docker save app:tag | gzip > app-tag.tar.gz
docker load < 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:

bash 复制代码
mysqldump --single-transaction --routines --triggers -u root -p db > backup.sql
mysql -u root -p db < backup.sql

Redis:

  • 开启 RDB/AOF
  • 备份 dump.rdb、appendonly.aof
  • 恢复时替换数据文件并重启

Docker 卷:

bash 复制代码
docker run --rm -v mysql-data:/data -v ${PWD}:/backup alpine \
  tar czf /backup/mysql-data.tar.gz -C /data .

云服务器:

  • 云盘快照
  • 对象存储异地备份
  • 保留策略:7 天、30 天、365 天
  • 定期做恢复演练

六、最终检查清单

一个系统开发好后,至少留下这些:

  1. docs/environment.md:开发环境、下载源、版本。
  2. docs/windows-env.md:Windows 环境变量、Maven、npm 路径。
  3. docs/servers.md:云服务器、IP、实例 ID、安全组。
  4. docs/credentials-locations.md:密码存放位置,不写值。
  5. docs/deployment.md:部署步骤。
  6. docs/backup-restore.md:备份与恢复。
  7. Git 仓库:代码、Dockerfile、docker-compose、Nginx 配置、SQL 初始化。
  8. .env.example:环境变量模板。
  9. .gitignore:排除敏感文件和构建产物。
  10. 密码管理器/Vault:所有密码、密钥、Token。
  11. Docker 镜像仓库:镜像 Tag 规则、保留策略。
  12. 数据备份:MySQL、Redis、Docker 卷、云盘快照。

一句话总结:

留痕的目标不是"记录所有东西",而是让任何一个有权限的人,拿到 Git 仓库 + 密码管理器 + 云控制台,就能把系统重新跑起来。

相关推荐
智码看视界5 天前
Edge AI 全栈实战 ⑤:云边协同收尾——MQTT 桥接 + 云端看板管 N 台边缘设备
mqtt·flask·iot·全栈开发·云边协同·edgeai
智码看视界14 天前
Edge AI 全栈实战 ④:向量数据库 + RAG 让 IoT 诊断拥有“记忆“
flink·向量数据库·rag·全栈开发·edgeai·iot诊断
正在走向自律17 天前
从只写接口到独立交付前后端,飞算JavaAI能给Java后端工程师多少溢价?
java·springboot·ai编程·全栈开发·java求职·飞算javaai·金九银十
刚子编程1 个月前
Ubuntu 22.04 Docker 从零部署全栈项目实录:Next.js + FastAPI + PostgreSQL 一次跑通
fastapi·nextjs·docker部署·全栈开发·ubuntu22.04
CSharp精选营1 个月前
Ubuntu 22.04 Docker 从零部署全栈项目实录:Next.js + FastAPI + PostgreSQL 一次跑通
fastapi·nextjs·docker部署·全栈开发·ubuntu22.04
2601_962284171 个月前
欧洲转码指南:后端、前端与全栈开发解析
前端开发·devops·后端开发·全栈开发·欧洲转码指南
智码看视界1 个月前
Edge AI 与 IoT 全栈系列:Edge AI 全栈 2:ESP32 + MQTT + Flink 实时 IoT 数据管道
物联网·flink·esp32·全栈开发·iot平台·实时流处理·edgeai
2601_962381581 个月前
从造轮子到架构师:我用 CodeFlicker 全栈开发「TaskFlow」的真实踩坑录
全栈开发·人机协作·从造轮子到架构师·codeflicker·真实踩坑录
2601_962299881 个月前
CodeFlying – 码上飞海外版,全栈AI应用开发平台
全栈开发·codeflying·一键发布·ai应用开发平台·数字化创意