问: 我按教程放行了8888端口,防火墙也开了,可面板还是打不开,咋回事?
答: 兄弟,你先别急着敲键盘,最常犯的错是:你在服务器安全组里只放行了“入方向”,但有些云厂商(比如阿里云、腾讯云)默认还拦“出方向”?不对,出方向一般全放,真正的坑是——你放行的IP是不是写成了你的本地IP?如果你用手机流量访问,IP一变就卡死,先把安全组规则改成 0.0.0/0 ,然后去宝塔面板“安全”菜单里,把8888端口也加进“系统防火墙”白名单。云控制台和面板内部是两套防火墙,都得放行。
问: 网站突然打不开,浏览器转圈半分钟直接报“连接超时”,但服务器CPU才10%,咋排查?
答: 先别慌,这是最常见的“假死”状态,你打开宝塔的“监控”图表,看磁盘I/O和网络流入流出,如果磁盘读写满了(比如达到100MB/s),多半是日志文件爆了,或某个进程在疯狂写数据,用SSH执行 iostat -x 1 看看,如果网络流出是几MB/s,可能是被CC攻击了。最直接的一招:重启一下PHP和Nginx(在面板“软件商店”里找到对应服务,点“重启”),如果重启后秒开,那就是进程卡死,如果还不行,把Nginx错误日志(/www/wwwlogs/下的.log文件)末尾20行发出来,我一眼就能看出是配置文件写错还是上游PHP-FPM挂了。
问: FTP连不上,总是报“530 Login incorrect”,密码我肯定没输错!
答: 530错误大概率不是密码错,而是FTP账号的“目录权限”绑死了,你创建FTP账户时,默认根目录是 /www/wwwroot/你的域名,如果这个目录不属于www用户,FTP服务就会拒绝访问,你在面板“FTP”列表里,点“修改”,把“目录”重新选一下,确认路径无误,然后去“文件”管理器里,右键你那个网站根目录,点“权限”,设置为 755 和 www:www。FTP默认被动模式端口范围是 39000-40000, 你云控制台安全组也要放行这个端口段!只放行21端口是绝对连不上的。
宝塔面板运维日记,灰度上线前,那点小破事排查实录
问: 每次改完网站代码,都要手动打包上传,有没有靠谱的自动备份方法?
答: 有,但别用“计划任务”里的“备份数据库”就完事,在宝塔“计划任务”里添加“备份网站”任务,保存份数设为3,这样能保留最近3天的,但更重要是定时把备份传输到远程存储——在“备份”设置里,添加“阿里云OSS”或“腾讯云COS”,然后把计划任务的“备份类型”改成“仅备份到远程”,这样即使服务器被入侵,数据也在云端。灰度发布前,手动点一次“备份”,并把备份文件下载到本地电脑,这是最后的保命符,别省这一步,我见过太多人把数据库覆盖了才来哭。
问: 我改了Nginx配置文件,保存后网站直接502,连面板都打不开了,怎么救?
答: 这是典型的“改坏了”,面板打不开没关系,你用SSH连服务器(用浏览器厂商的VNC也一样),执行:
cd /www/server/panel/plugin/ bt 2
这是宝塔的命令行修复工具,选择“2”是“修复面板数据库”或“重置配置”,但更关键的是Nginx:
nginx -t
它会告诉你第几行哪个括号没闭合,如果提示成功,执行 nginx -s reload,如果连nginx -t都报错,那就把 /www/server/nginx/conf/nginx.conf 文件用备份恢复——宝塔每次修改前会存一份.bak文件,在文件管理器里显示隐藏文件就能看到,以后改配置一定先点“备份”按钮,截图保存原内容。
问: 灰度发布时,我想让一小部分IP访问新版本,其他IP访问旧版,宝塔能实现吗?
答: 可以,但别用“反向代理”乱搞,你只需要两个网站——old.example.com 和 new.example.com,然后在新旧两个网站的Nginx配置里,都加一段if ($remote_addr ~* "8.8.8.8|9.9.9.9") { proxy_pass http://new_backend; }这种写法太麻烦。最傻瓜的方法:用宝塔的“负载均衡”插件,但是那玩意儿要钱。免费方案:在旧网站的“配置文件”里,加入:
if ($remote_addr !~* "你的测试IP") {
return 302 http://new.example.com$request_uri;
}
这样只有你的IP能访问旧版本页面,其他用户全被302跳到新版本。但注意:$request_uri 会保留路径参数,别忘记写,改完先nginx -t,再重载。
问: 我误删了数据库表,能恢复吗?
答: 如果你开了宝塔的“计划任务”备份数据库,直接用“文件”管理器,找到 /www/backup/ 下的.sql.gz文件,解压后用面板“数据库”里的“导入”功能恢复。但如果你没开备份,那就用binlog(二进制日志),先看 bt 2 的“日志位置”,然后执行:
mysqlbinlog --start-datetime="2023-10-01 10:00:00" --stop-datetime="2023-10-01 10:10:00" /www/server/data/mysql-bin.000123 | mysql -u root -p
只恢复你误删那10分钟的数据。灰度测试前,一定先手动备份一次,这是个好习惯。
问: 面板首页显示“CPU负载100%”,但是进程列表里看不到吃资源的进程,咋办?
答: 这是“僵尸进程”或“不可中断IO”(D状态)在作祟,用SSH执行:
top -b -n 1 | grep D
如果看到一堆D状态的进程,说明它们在等磁盘响应——大概率是磁盘坏了或读写配额被限,执行dmesg | tail -20,如果看到I/O error,那得赶紧换数据盘,检查一下swap占用,执行free -m,如果swap为0,说明你内存不够,系统在疯狂换页,表现就是CPU高但程序卡。加个2G的swap文件,宝塔“软件商店”搜“swap”插件,一键开。
最后一个新手必杀技: 遇到任何诡异问题,先执行 bt 2(重启面板),再执行 /etc/init.d/nginx restart,/etc/init.d/mysqld restart,如果还不行,看 /www/server/panel/logs/request.log 末尾50行。宝塔就是你的操作台,但真正的排错在命令行。 别怕黑窗口,多敲几次就熟了。



发表评论