游客发表
网站打不开,网站维护十有八九是教程服务器出了岔子。上周帮朋友排查一个企业站,网站维护首页白屏,教程后台也进不去。网站维护SSH连上去一看,教程磁盘满了——/var/log里躺着一个3.2G的网站维护nginx日志文件。删掉,教程重启服务,网站维护站点秒活。教程这种事儿太常见了,网站维护维护网站不是教程什么高深技术,关键是网站维护把几个核心环节盯住。
很多人把备份当成“有空再做”的事。我见过一个做外贸的网站维护站长,数据库跑了两年没备份,结果服务商机房断电,硬盘直接挂了。数据全丢,客户订单信息一条不剩。后来他花了八千块找数据恢复公司,只捞回来一部分碎片。
备份要分两层:文件层和数据库层。文件用rsync增量同步到另一台机器,数据库用mysqldump每天凌晨跑一次定时任务。别把备份放在同一台服务器上,那等于没备。我自己的习惯是本地留一份、对象存储放一份、每周再下载一份到移动硬盘。麻烦是麻烦,但真出事的时候能救命。
Nginx的access.log和error.log是排查问题的第一手资料。有人从来不清理,有人从来不查看。两个极端都不可取。
我一般每周扫一眼error.log,看有没有频繁出现的报错。比如“upstream timed out”反复出现,说明后端PHP进程不够用或者数据库响应慢。access.log里如果某个IP在短时间内请求了几千次,基本就是被爬虫或者CC攻击了。这时候上fail2ban封掉就行,不用慌。
日志轮转必须配。logrotate设成每天切割、保留14天,不然就像我朋友那样,磁盘被日志撑爆。
WordPress推新版本,插件提示升级,你是不是顺手就点了?别。生产环境的更新要在测试环境先跑一遍。我吃过亏:一个电商站,WooCommerce插件升级后跟主题冲突,产品页全部500错误。那天正好是黑五,损失了大概两万多销售额。
现在我的做法是:本地Docker搭一套跟线上一样的环境,插件更新先在这里跑24小时。没问题了,再挑凌晨低峰期操作。操作前手动打一个快照,出问题十分钟内回滚。
等用户打电话告诉你网站挂了,已经晚了。UptimeRobot免费版就够用,五分钟检测一次HTTP状态码。再装个Netdata或者Prometheus,盯着CPU、内存、磁盘IO。阈值设好,超了发邮件或者钉钉通知。
有一次凌晨三点收到告警,内存使用率飙到95%。爬起来一看,是一个PHP脚本死循环了。kill掉进程,加了crontab限制执行时间,回去接着睡。要是没监控,第二天早上才发现,网站已经宕了六个小时。
SSH别用密码登录,换成密钥。22端口改成别的,能挡掉九成扫描。防火墙只开80、443和你的自定义SSH端口。数据库千万别监听0.0.0.0,本地访问就够了。
网站程序保持更新,但别追最新版。等小版本稳定了再升。后台登录加个二次验证,密码用1Password或者Bitwarden生成。这些事花不了半小时,但能省掉后面无数麻烦。
维护网站跟养车差不多。日常检查油水胎压,该换机油就换,别等发动机亮了灯才往修理厂跑。定期做,形成习惯,大部分故障都能提前掐灭。
友情链接