服务器运维入门:从开机到排障,新手最容易卡在哪几关
很多人第一次拿到服务器,兴奋劲还没过就卡住了:SSH 连不上、密码输入三次被拒、面板装到一半提示权限不足。好不容易把网站跑起来,过两天发现 CPU 跑满,一查是被扫了弱口令拿去挖矿。运维这件事的入门门槛,从来不在命令有多难,而在没有人告诉你顺序。
下面按一台新机器从零到稳定运行的顺序讲,每一步都给出具体操作和取舍理由。不追求覆盖所有命令,只讲新手最容易踩坑的那几个环节。
第一步不是装面板,是把 SSH 端口和密钥先换掉
新机器到手,第一件事改 SSH 配置。默认 22 端口和 root 密码登录,是自动化扫描脚本最喜欢的目标。我的做法是先把密钥登录配好,确认能连上,再关掉密码登录。
- 生成密钥对:本地执行 ssh-keygen -t ed25519,把公钥追加到服务器的 ~/.ssh/authorized_keys
- 改端口:编辑 /etc/ssh/sshd_config,把 Port 改成 20000 以上的端口,然后 systemctl restart sshd
- 关密码登录:确认密钥能连之后,把 PasswordAuthentication 设为 no
这三步做完,被暴力破解的概率会下降一个数量级。代价是以后换电脑要记得带私钥,丢了就进不去。我的建议是私钥至少留两份备份。
如果你的机器是准备长期跑业务、需要独立硬件资源的,可以直接选 香港自营物理服务器(50M)⑤,E5-2695V4 十八核三十六线程配 32G 内存,做站群或者中型应用都够用。
环境搭建别追新,稳定比版本号重要
新手最常见的错误是追最新版。PHP 8.3 刚出就上,结果某个老插件不兼容,排查半天。生产环境的原则是选上一个稳定大版本,社区文档多、出问题搜得到答案。
以 LNMP 为例,装的时候有几个点要注意:
- Nginx 和 MySQL 不要用系统自带的包,版本旧且不好升级,用官方源或者编译安装
- MySQL 的 innodb_buffer_pool_size 默认值很小,内存 8G 的机器可以设到 4G 左右
- PHP 的 max_execution_time 默认 30 秒,跑数据导入会超时,按业务调
装完别急着上线,先跑一遍 nginx -t 和 mysql_secure_installation。这两步花不了五分钟,但能挡掉后面很多莫名其妙的报错。
出问题先看日志,别急着重启
网站打不开,很多人的第一反应是重启服务。重启能解决一部分问题,但也把现场清掉了,下次同样的故障还会来。我的习惯是先看三个地方:
Nginx 的访问日志和错误日志通常在 /var/log/nginx/ 下,访问日志看请求量突增,错误日志看具体报错。系统层面用 dmesg 看内核有没有 OOM 记录,用 top 看是哪个进程在吃 CPU。数据库慢查询开 slow_query_log,超过 2 秒的语句记下来,多数性能问题都出在这里。
有一次遇到负载突然飙高,重启后十分钟又上来,最后在错误日志里发现是某个接口被刷。这种情况重启治标不治本,得从访问日志里找出特征再封。
基础防护做到位,能挡掉八成麻烦
运维入门阶段不需要搞复杂的 WAF 和入侵检测,把几件基础的事做好,安全性就有明显提升。
系统层面开防火墙,只放行必要的端口。CentOS 系用 firewalld,Debian 系用 ufw,规则写清楚。定期 yum update 或 apt upgrade,内核漏洞补丁别拖。数据库不要监听 0.0.0.0,改绑 127.0.0.1,外部需要访问就通过 SSH 隧道。
如果业务本身容易招攻击,比如游戏或者支付类,普通防护不够用,可以考虑带防御的机器,比如 美国西雅图高防服务器2,E3-1230 配 16G 内存、100M 带宽,月付 99 美元,适合预算有限但需要基础防护的场景。
最后说一句判断:如果你只是跑个人博客或者测试项目,一台入门配置的独立服务器就够,不用一上来就堆高配。真正需要关注的是备份——数据库每天定时导出,配置文件改动前先复制一份。这两件事做到,出故障时至少能快速恢复。运维的入门不是背命令,是养成改动前先备份、出问题先看日志的习惯。