
第一次跃迁从“脚本自动化”到“服务编排”背景刚入职时我每天要手动部署测试环境装Nginx、配PHP、启MySQL、改防火墙……一天重复5次累到怀疑人生。最怕的是半夜被叫起来“环境又起不来了”过去一看要么是防火墙没放通要么是服务启动顺序错了。解决方案我决定用Shell脚本 Crontab 做自动化把“人肉操作”变成“可复现流程”#!/bin/bash # auto_deploy_test_env.sh # 功能一键部署LNMP测试环境 echo 开始部署... yum install -y nginx php php-fpm mysql-server systemctl enable --now nginx php-fpm mysqld # 配置防火墙 firewall-cmd --permanent --add-servicehttp firewall-cmd --permanent --add-servicehttps firewall-cmd --reload # 创建测试页面 echo ?php phpinfo(); ? /usr/share/nginx/html/test.php echo 部署完成访问 http://你的IP/test.php 验证然后加入定时任务顺手把日志清理也自动化crontab -e # 每天凌晨2点自动清理7天前的Nginx日志 0 2 * * * find /var/log/nginx -name *.log -mtime 7 -delete效果单次环境部署从30分钟缩短到5分钟内人为遗漏忘开防火墙、漏启服务基本归零我开始意识到运维的第一生产力不是技术堆砌而是“可重复的确定性”。课程关联这正是课中“Shell脚本进阶”和“LNMP架构”的实践延伸。课本教的是命令我用它去管服务依赖关系——比如PHP-FPM必须先就绪Nginx反向代理才不会报502MySQL要先初始化应用才能连库。这些细节书里不会替你踩但生产环境会。第二次跃迁从“单机部署”到“容器化交付”背景开发同事一句老生常谈“在我电脑上能跑到你服务器就不行”问题出在哪PHP版本不同、依赖缺包、SELinux策略不一致……环境差异是运维的天敌。解决方案我引入Docker Docker Compose把“环境”当成代码来管理。1. 编写 DockerfileNginx PHPFROM nginx:alpine RUN apk add --no-cache php8 php8-fpm COPY nginx.conf /etc/nginx/nginx/conf COPY src/ /usr/share/nginx/html/ EXPOSE 80 CMD [nginx, -g, daemon off;]2. 编写 docker-compose.yml完整LNMP栈version: 3.8 services: web: build: . ports: - 80:80 depends_on: - php networks: - lnmp-net php: image: php:8.1-fpm volumes: - ./src:/var/www/html networks: - lnmp-net db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: rootpass MYSQL_DATABASE: testdb volumes: - db-data:/var/lib/mysql networks: - lnmp-net volumes: db-data: networks: lnmp-net: driver: bridge效果新同事入职不再需要“半天配环境”一条docker-compose up -d全部就绪开发、测试、生产环境完全一致告别“环境玄学”数据卷持久化保证数据库重启不丢数据网络隔离避免服务乱窜。课程关联课中“Docker应用实践”让我理解了镜像、容器、数据卷这些概念但我往前多走了一步用 Docker Compose 做多服务编排。企业里很少只跑一个容器Nginx、PHP、MySQL 是要协同工作的这才叫“企业级用法”而不是课本里单跑一个docker run。第三次跃迁从“手工运维”到“云原生架构”背景公司业务增长服务器从5台变成50台靠SSH登机器、手动改配置已经不可能。我们需要的是资源池化 自动调度而不是“更高级的脚本”。解决方案我主导搭建了基于OpenStack Kubernetes 的私有云平台1. OpenStack 负责 IaaS 层计算、存储、网络Nova 调度虚拟机实例按需分配 CPU / 内存Neutron 做虚拟网络隔离VLAN / VXLAN部门间流量可控Cinder 提供块存储数据库节点可随时扩容磁盘Keystone 统一认证避免各系统账号混乱。2. Kubernetes 负责 PaaS 层容器编排Pod 作为最小部署单元承载 Docker 容器Service 做服务发现与负载均衡前端不再写死后端IPIngress 统一对外暴露 HTTP/HTTPSHPAHorizontal Pod Autoscaler根据 CPU / 请求量自动扩缩容。实战案例电商大促期间的扩容平时订单服务跑 3 个 Pod大促前流量预估翻 3 倍HPA 自动扩容到 10 个 Pod接口 RT 稳定在 200ms 内大促结束后自动缩容回 3 个资源不浪费整个过程无人值守只在监控里看到一条条扩容事件。课程关联课中“私有云”和“容器云”章节更多是讲组件和概念我把它落地成了可运行的架构文字版[用户] → [Ingress Controller] → [Order Service Pod] → [MySQL Cluster] ↑ [Auto Scaling Policy]同时我也关注国产信创系统如 openEuler、麒麟 OS在边缘节点用K3s轻量级 K8s 麒麟OS 部署非核心服务兼顾自主可控与成本。第四次跃迁从“稳定运行”到“数据驱动决策”背景系统稳了老板却问“为什么上个月流量激增哪个服务最耗资源下次大促要加几台机器”光“不出事”已经不够了得回答为什么、是多少、怎么预判。解决方案我引入了Prometheus Grafana ELK StackPrometheus 拉取节点、容器、业务的指标CPU、内存、QPS、延迟Grafana 做可视化仪表盘一眼看清系统健康度ELKElasticsearch Logstash Kibana集中采集日志方便溯源。实战案例某次支付接口响应变慢Grafana 显示数据库连接池持续打满 → 用 Kibana 检索应用日志定位到一条慢查询 SQL → 给对应表加复合索引 → 单次响应从 2s 降到 200ms后续同类型大促未再复现。课程关联课中“云计算管理平台”和“监控体系”更多是铺垫我把它升级成了数据驱动的运维文化——不再是“坏了再修”而是“指标异常先告警、日志先行定位、容量提前评估”。总结网管的三大核心能力模型能力维度关键技术实战价值自动化Shell脚本、Ansible减少重复劳动把人从机械操作中解放出来标准化Docker、Compose、K8s消除环境差异保障开发/测试/生产一致性智能化Prometheus、Grafana、ELK数据驱动决策从“救火”转向“防火”运维不是“机器坏了你会修”而是即使机器会坏也能让业务不受影响。从脚本到云原生这条路上最值钱的不是命令本身而是你对依赖、风险、规模的理解。附推荐学习路径适合初学者Linux 基础 Shell 脚本先把自动化底线打好LNMP 架构 MySQL 基础理解业务怎么跑、数据怎么存Docker Docker Compose解决环境一致性问题Kubernetes 基础 私有云概念面对规模化时的资源与编排思维监控与日志体系Prometheus / ELK让系统会“说话”提前预警。