好的,这是一份为你定制的《运维入门实战完全手册》。这份总结不是简单的命令罗列,而是把你这段时间亲手敲过的命令、踩过的坑、以及解决问题的思路串成了一条完整的“运维思维链”。
建议你把它保存下来,作为你的“武林秘籍”。
第一部分:核心命令“字典” (你亲手用过的)
| 命令 | 常用参数/组合 | 你是为了解决什么问题 | 一句话记住它 |
|---|---|---|---|
free -h | -h 人类可读 | 服务器卡死了,想看内存还剩多少。 | 看内存总量和可用量 (available)。 |
ps aux | --sort=-%mem | 怀疑有进程在挖矿或吃内存。 | 找出那个占用内存/CPU最高的“捣蛋鬼”。 |
kill -9 PID | 无 | 进程杀不死,需要强制终止。 | “物理删除”进程(慎用,会丢数据)。 |
systemctl | status, stop, start, enable, disable | 发现 kill -9 没用,进程又复活了。 | 管理服务的终极工具。stop 是暂停,disable 是取消开机自启。 |
chmod | 700 (数字法), u+x (字母法) | 写了个脚本 ./xxx.sh 报错 Permission denied。 | 给文件赋予读(r)、写(w)、执行(x)的权限。 |
chown | -R (递归) | Nginx 报 403,读不到 /var/www/html 的文件。 | 把文件夹的“老板”换成 Nginx 的 www-data 用户。 |
tcpdump | -i any -nn -c 10 -A port 80 | 想看 HTTP 请求和 TCP 三次握手的过程。 | 抓包看“网络里到底在传什么”。 |
ss -tlnp | 无 | 配置完 Nginx,但浏览器打不开。 | 检查某个端口(如 80)到底有没有服务在监听。 |
tail -f | /var/log/nginx/error.log | Nginx 报 502/500,不知道哪里错了。 | 实时看日志,动态追踪错误。 |
ufw | allow 22/tcp, enable | 开启防火墙怕把自己踢出去。 | 先放行 SSH,再开墙,顺序千万别反。 |
第二部分:项目复盘《从零部署第一个网站》
项目目标
在一台全新的 Ubuntu 服务器上,通过 Nginx 部署一个静态 HTML 页面,并能通过公网 IP 访问。
关键过程与踩坑记录
步骤 1:创建网页文件
- 操作:
vim /var/www/html/index.html,写入 HTML 代码。 - ⚠️ 踩坑:直接复制 HTML 时,如果不小心按了
Ctrl+S会卡住。解决办法:按Ctrl+Q解锁,或者用cat > index.html << EOF的方式写入。
步骤 2:解决 403 Forbidden (权限错误)
- 现象:
curl localhost报错 403,或者浏览器访问显示Forbidden。 - 思考:Nginx 进程是
www-data用户跑的,而文件属主是root,Nginx 读不了。 - 🛠️ 解决:
chown -R www-data:www-data /var/www/html/和chmod 644 /var/www/html/index.html。
步骤 3:处理 “No such file or directory” (符号链接)
- 现象:明明
nginx -t显示syntax is ok,但ss -tlnp却看不到 80 端口监听。 - 原因:
/etc/nginx/sites-enabled/目录是空的,默认站点根本没启用。 - 🛠️ 解决:
ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/,然后执行systemctl reload nginx。
步骤 4:验证部署
- 操作:
curl http://localhost,看到<h1>我的网站上线了</h1>。 - 最终:打开浏览器,访问公网 IP (
http://你的IP),成功看到页面。
第三部分:你的“运维思维”进化史 (最重要的)
这次实战让你在认知上发生了巨大的飞跃:
- 看报错不再慌:以前看到
Permission denied就觉得天塌了,现在你知道这是权限问题,立刻会想到去查ls -l和chown。 - 理解了“用户”的概念:不再只有
root一个视角,你明白了www-data是干活的“工人”,root是“老板”,老板不能亲自去搬砖(指 Nginx 不能用 root 运行)。 - 掌握了“因果链”排查法:当
curl连不上时,你没有反复重启机器,而是顺着链路排查:- 应用层:
curl localhost(通不通?) - 传输层:
ss -tlnp | grep 80(端口在听吗?) - 配置层:
nginx -t(配置对吗?) - 逻辑层:
ls sites-enabled(站点启用了吗?)
- 应用层:
- 理解了“最小权限”原则:给
index.html设644(属主读写,其他人只读),而不是777(谁都读写执行),这叫不给黑客留后门。
第四部分:运维老兵的3条“铁律”
- 修改前先备份,操作前先看日志:改配置前
cp xxx.conf xxx.conf.bak。遇到问题第一眼看/var/log/,别先重启。 - 敬畏远程操作:操作防火墙或网络前,一定确保
22端口放行,或者你能通过 VNC 连接。先开墙,后放行。 - 能用
reload,就别restart:改完 Nginx 配置,用systemctl reload nginx平滑加载,而不是restart直接中断服务(除非必要)。
你已经完全具备独立管理一台 Linux 服务器的基本能力了。接下来你可以拿着这份“手册”,去尝试部署一个动态网站(比如 PHP 或 Python),或者深入研究 Shell 脚本自动化。如果在实战中再遇到新的“报错”,你知道该怎么处理——先看日志,再分析,最后解决。