运维基础入门
运维的核心目标是让系统稳定、安全、可观测、可恢复地运行。它不仅是“会操作服务器”,还包括部署、监控、备份、故障处理、容量规划、安全加固和自动化。
一、运维负责什么
常见工作:
- 服务器初始化;
- 应用部署和发布;
- 域名、证书、反向代理配置;
- 数据库和中间件维护;
- 日志收集和分析;
- 监控告警;
- 备份恢复;
- 故障排查;
- 安全加固;
- 自动化脚本和 CI/CD。
二、基础能力地图
| 能力 | 说明 |
|---|---|
| Linux | 文件、进程、权限、网络、服务管理 |
| 网络 | DNS、HTTP、TCP/IP、防火墙 |
| Web 服务 | Nginx、Caddy、负载均衡 |
| 数据库 | MySQL、Redis、备份恢复 |
| 容器 | Docker、Docker Compose、镜像 |
| 监控 | 指标、日志、链路、告警 |
| 自动化 | Shell、Ansible、CI/CD |
| 安全 | SSH、权限、证书、漏洞修复 |
三、Linux 基础
常用目录:
| 目录 | 作用 |
|---|---|
/etc | 配置文件 |
/var/log | 日志 |
/usr | 用户程序 |
/opt | 第三方软件 |
/home | 用户目录 |
/tmp | 临时文件 |
常用命令:
pwd
ls -lah
cd /path
cat file
tail -f app.log
ps aux
top
df -h
free -h
systemctl status nginx
四、部署基础
一次普通应用部署通常包括:
部署时要关注:
- 配置和代码分离;
- 端口是否冲突;
- 进程是否守护;
- 日志是否可查;
- 重启是否自动恢复;
- 回滚方案是否准备好。
五、进程和服务管理
Linux 服务通常由 systemd 管理。
常用命令:
systemctl status nginx
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
systemctl enable nginx
journalctl -u nginx -f
排查服务时看:
- 服务是否启动;
- 端口是否监听;
- 配置文件是否正确;
- 日志是否报错;
- 依赖服务是否正常。
六、日志
日志是排查问题的第一现场。
常见日志:
- 应用日志;
- Nginx 访问日志;
- Nginx 错误日志;
- 系统日志;
- 数据库日志;
- 容器日志。
常用命令:
tail -f app.log
grep "ERROR" app.log
journalctl -xe
docker logs -f container_name
日志要记录:
- 时间;
- 请求 ID;
- 用户或来源;
- 错误信息;
- 关键参数;
- 调用耗时。
七、监控和告警
监控要覆盖四类信息:
| 类型 | 示例 |
|---|---|
| 基础资源 | CPU、内存、磁盘、网络 |
| 服务状态 | 进程、端口、健康检查 |
| 应用指标 | QPS、错误率、响应时间 |
| 业务指标 | 订单数、支付成功率、注册数 |
常见告警:
- CPU 持续过高;
- 内存不足;
- 磁盘空间不足;
- 服务不可用;
- 错误率升高;
- 响应时间变慢;
- 证书即将过期。
告警要可行动,不能只制造噪音。
八、备份和恢复
备份不是目的,能恢复才是目的。
备份策略:
- 数据库定时备份;
- 配置文件备份;
- 文件上传目录备份;
- 异地备份;
- 定期恢复演练。
检查点:
- 备份是否成功;
- 备份是否可用;
- 恢复需要多久;
- 恢复会丢多少数据;
- 谁负责执行恢复。
九、安全基础
基础安全措施:
- 禁用弱密码;
- 使用 SSH Key;
- 关闭不需要的端口;
- 最小权限原则;
- 定期更新系统补丁;
- 配置防火墙;
- HTTPS 证书自动续期;
- 敏感配置不要写进代码;
- 重要操作保留审计日志。
十、故障排查流程
建议按顺序排查:
常见问题和方向:
| 问题 | 可能原因 |
|---|---|
| 网站打不开 | DNS、端口、防火墙、Nginx、应用进程 |
| 接口 502 | 上游服务挂了、端口错、超时 |
| 接口 504 | 应用慢、数据库慢、网关超时 |
| 磁盘满 | 日志过大、备份堆积、临时文件 |
| CPU 高 | 死循环、高并发、慢查询、压缩任务 |
| 内存高 | 泄漏、缓存过大、并发过高 |
十一、学习路线
建议顺序:
- Linux 基础命令。
- 网络基础和常见端口。
- Nginx 或 Caddy。
- Shell 脚本。
- Docker 和 Docker Compose。
- MySQL、Redis 基础维护。
- 日志和监控。
- CI/CD 自动化部署。
- 安全加固。
- Kubernetes 和云原生。
十二、入门项目
搭建一个个人博客运维环境:
这个项目能覆盖运维最常见的基础能力。
总结
运维的核心不是“手工操作很多命令”,而是建立稳定流程:
入门时先把 Linux、网络、部署、日志、监控和备份打牢,再逐步学习自动化和云原生。