Skip to content

练习 — Linux 运维基础

对应知识点:Linux · SSH · systemd · 日志与进程 对应文档:docs/phase-08-deployment/linux-operations.md 代码目录:workspace/phase-08/linux-ops/

前置条件:可访问 Linux 环境(云服务器、WSL2 或虚拟机)。


Level 1 — 基础

练习 1.1 · SSH 连接与密钥

要求

  • 生成 ED25519 密钥对,配置到服务器 ~/.ssh/authorized_keys
  • 禁用密码登录(文档记录步骤,生产环境谨慎操作)
  • 使用 ssh -i 或 config 别名连接
  • 记录到 workspace/phase-08/linux-ops/ssh-setup.md

练习 1.2 · 基础命令

在服务器上完成并记录命令与输出说明:

要求

  • uname -adf -hfree -htophtop
  • 查看 Go 二进制进程:ps aux | grep twin
  • 查看端口占用:ss -tlnp | grep 8080

练习 1.3 · 目录与权限

要求

  • 创建部署用户 deploy(非 root 运行服务)
  • 应用目录 /opt/twin-api,属主 deploy
  • 二进制权限 755,配置文件 640
  • 说明 principle of least privilege

Level 2 — 应用

练习 2.1 · systemd 服务

创建 /etc/systemd/system/twin-api.service

要求

  • User=deployWorkingDirectory=/opt/twin-api
  • EnvironmentFile=/opt/twin-api/.env
  • ExecStart=/opt/twin-api/server
  • Restart=on-failure
  • systemctl enable --now twin-api 验证

练习 2.2 · 日志查看

要求

  • journalctl -u twin-api -f 跟踪日志
  • 配置 logrotate 或 journal 大小限制(文档说明)
  • 模拟崩溃重启,观察 Restart 行为

练习 2.3 · 防火墙

要求

  • ufw 或 firewalld:仅开放 22、80、443
  • 8080 不对外暴露(仅 Nginx 反代)
  • 验证外网无法直接访问 8080

Level 3 — 综合

练习 3.1 · 部署脚本

workspace/phase-08/linux-ops/deploy.sh 编写:

要求

  • 本地交叉编译 GOOS=linux GOARCH=amd64 go build
  • scp 上传到服务器
  • ssh 执行 systemctl restart
  • 健康检查 curl /health

练习 3.2 · 备份 cron

要求

  • 编写 postgres 备份脚本 pg_dump + 日期命名
  • crontab 每日凌晨执行
  • 保留最近 7 天备份
  • 文档恢复步骤

Level 4 — 项目实践

练习 4.1 · 数字孪生后端上线清单

workspace/phase-08/linux-ops/ 完成 生产运维 Runbook

要求

  • runbook.md 含:服务器规格建议、部署步骤、回滚步骤、常见故障排查
  • systemd unit 文件模板
  • 监控项清单:CPU、内存、磁盘、API 延迟、WS 连接数
  • AGV 实时服务特有的运维注意点(长连接、Redis 内存)

学习检查

  • [ ] 为何生产环境避免 root 运行应用?
  • [ ] systemd Restart 策略有哪些?
  • [ ] journalctl 与文件日志如何选择?
  • [ ] 零停机部署需要哪些额外组件?

提交方式

检查答案 — linux operations 练习 X.X

学习导航

上一篇:Docker 与 Docker Compose · 对应知识文档 · 下一篇:Nginx、HTTPS 与 DNS