登录不了服务器?先看这几步
半夜收到报警,网站打不开,赶紧连服务器,结果SSH死活连不上。别急着重启,先检查网络状态。有时候只是VPS商的节点抽风,或者安全组规则被人误改了。用本地命令ping一下IP,不通的话,大概率是网络层的问题。
如果能ping通但SSH连不上,可能是sshd服务挂了,也可能是防火墙拦住了22端口。这时候去控制台看看系统日志,一般云平台都提供VNC登录功能,进去查systemctl status sshd就知道服务有没有在跑。
systemctl status sshd
<?php echo '检查服务状态'; ?>磁盘满了,删日志也没用?
运维最怕收到“磁盘使用率95%”的告警。删完access.log、error.log发现空间还是没释放?问题可能出在文件句柄没关闭。Linux下即使你删了文件,只要还有进程占着句柄,空间就不会真正释放。
这时候得用lsof查一下:
lsof | grep deleted看到哪些进程还握着已删除文件的句柄,重启对应服务就行。比如nginx占着旧日志,执行systemctl reload nginx,空间立马就腾出来了。
MySQL突然连不上,密码没错啊
程序报错“Access denied for user”,但密码确认是对的。这种情况八成是mysql.user表里用户权限被改了,或者是host字段限制太死。比如用户root只允许从localhost登录,但从外网IP连自然失败。
进数据库查一下:
SELECT Host,User FROM mysql.user WHERE User='root';要是Host列只有localhost,那就得加个%允许远程,或者创建新用户授权时明确写上'%'。顺便提一句,别图省事全用root远程访问,安全风险太大。
HTTPS证书到期,网站打不开了
早上一上班,客服电话就炸了:“官网变成红色警告!” 登上去一看,证书过期。Let's Encrypt的证书有效期就90天,自动续期失败的情况不少见。常见原因是.acme.sh脚本权限变了,或者webroot路径被挪动。
手动续一次试试:
/root/.acme.sh/acme.sh --renew -d example.com --force续完记得重启nginx或Apache,不然新证书不生效。建议提前15天设个定时任务自动续,再配个邮件提醒,省得手忙脚乱。
服务器时间不对,日志对不上
排查问题时发现,应用日志和系统日志差了八小时。一看timedatectl,时区没设对,或者NTP同步关了。时间不准不只是日志混乱,有些安全认证机制也会因此失效。
执行下面命令校准:
timedatectl set-ntp true
timedatectl set-timezone Asia/Shanghai确保chrony或ntpd服务在运行,定期同步时间。别小看这一步,线上事故复盘时,时间线对不上能拖死人。