游客发表
网站打不开的网站维护时候,用户不会管你用的网站维护是Apache还是Nginx,他们只会骂一句“什么破站”然后关掉。网站维护我见过一个日活两万的网站维护小论坛,就因为没做数据库定时备份,网站维护硬盘坏了一次,网站维护三年的网站维护帖子全没了。站长在群里发了个红包,网站维护说“对不起大家”,网站维护然后群就散了。网站维护维护这事,网站维护平时看不出差别,网站维护出事的网站维护时候就是生死线。
先说备份。网站维护别跟我提什么“云服务商有快照”,网站维护快照恢复要整机回滚,你上周不小心删的那个插件配置也跟着回来了。我自己的做法是:数据库每天凌晨三点用 mysqldump 导出,压缩后传两份——一份到对象存储,一份到另一台不同机房的VPS。网站文件反而不用那么勤,一周一次全量,加上改动的文件实时同步。有个坑得注意:备份脚本要加 set -e,不然某个命令失败了它继续往下跑,你以为备份成功了,其实是个0字节的空文件。
监控比备份更烦人。Zabbix、Prometheus这些不是不好,但小站真用不上。我就在服务器上扔了个crontab,每五分钟curl一次首页,返回码不是200就发邮件到手机。后来发现邮件有时候被丢进垃圾箱,又加了个Telegram bot推送。有次凌晨两点收到告警,爬起来一看是SSL证书过期了,续上只花了三分钟。要是等用户早上来报,那就得手忙脚乱半小时。磁盘空间也得盯,日志文件能把根分区塞满,我吃过这个亏——网站突然写不了session,所有用户都被登出。
更新这件事,我的原则是:能不动就不动。WordPress核心版本、插件、主题,除非有安全补丁,否则别手痒。去年有个客户非要把PHP从7.4升到8.1,结果一个老插件直接白屏。回滚花了二十分钟,期间订单掉了十几单。真要升,先在本地或者测试环境跑一遍。没有测试环境?那就挑凌晨三点,先把数据库和文件备份好,再动手。升级完别急着睡觉,盯着错误日志看半小时,tail -f /var/log/nginx/error.log,有异常马上回滚。
安全方面,说几个具体的。SSH别用密码登录,改成密钥,Port改掉默认的22。我见过扫描器一天试几万次root密码的,虽然没成功,但日志刷得飞快。网站后台登录加个验证码或者二次验证,别嫌麻烦。还有,wp-config.php 的权限设成600,.htaccess 里禁止访问 wp-config.php。有个细节:很多站长忘了关目录索引,别人直接访问 /uploads/ 就能看到你所有文件列表。在Nginx里加一行 autoindex off; 的事。
性能调优别上来就上CDN。先看慢在哪。用 ab 或者 wrk 压一下,如果首页要两秒才返回,多半是数据库查询慢。开慢查询日志,找出那些没走索引的SQL。我处理过一个案例,一个 SELECT * FROM posts WHERE status='publish' 没加索引,文章表才八千行,但每次查询要扫全表。加了个 status 索引,响应时间从1.8秒降到0.2秒。图片多的话,装个 webp 转换插件,体积能小一半。CDN是最后一步,源站没优化好,套上CDN也只是把慢缓存了一遍。
最后说个容易忽略的:日志清理。Nginx的access.log一天能涨几百兆,不清理几个月就把磁盘撑爆。用 logrotate 配置一下,每天轮转,保留七天,压缩旧的。别手动 rm,删了文件但Nginx进程还拿着文件句柄,磁盘空间不会释放。得用 truncate -s 0 或者 logrotate 的 copytruncate 模式。这些都是血泪换来的,你照着做能少踩几个坑。
友情链接