3.9 KiB
3.9 KiB
常见问题手册
1. 宝塔面板问题
问题1: JSON解析错误
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes
原因: 数据库中project_config字段不是有效JSON格式
错误格式: {project_name: xxx, port: 3000}
正确格式: {"project_name": "xxx", "port": 3000}
修复方法:
import sqlite3, json
conn = sqlite3.connect('/www/server/panel/data/db/site.db')
c = conn.cursor()
c.execute("SELECT id, name, project_config FROM sites WHERE project_type='Node'")
for row in c.fetchall():
try:
json.loads(row[2])
except:
# 手动构建正确JSON并更新
pass
2. 网络访问问题
问题2: 外网无法访问(ERR_EMPTY_RESPONSE)
原因: 腾讯云安全组只开放443端口,未开放80端口
解决方案:
- 配置SSL证书(使用通配符证书)
- Nginx配置添加443监听:
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /www/server/panel/vhost/cert/www.quwanzhi.com/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/www.quwanzhi.com/privkey.pem;
问题3: DNS被代理劫持
原因: 本地使用VPN/代理(Clash, V2Ray等)
现象:
- 本地DNS解析到198.18.x.x
- 服务器内部测试正常
- 外部访问失败
解决方案:
- 关闭代理软件
- 或修改hosts文件
- 用手机4G网络测试
3. Node项目问题
问题4: 启动失败(Could not find production build)
原因: 使用npm run start但未执行npm run build
解决方案:
- 方案A: 先
npm run build再npm run start - 方案B: 改用
npm run dev模式
问题5: 端口冲突(EADDRINUSE)
原因: 多个项目配置相同端口,或package.json中端口写死
解决方案:
- 检查端口占用:
ss -tlnp | grep :端口号 - 修改package.json:
"start": "next start -p 新端口" - 更新数据库中的端口配置
问题6: Vue项目 Invalid Host header
原因: Nginx代理时Host头不匹配
解决方案: 修改vue.config.js:
devServer: {
disableHostCheck: true
}
4. 腾讯云特性
问题7: 服务器无法访问自己公网IP
原因: 轻量服务器网络配置限制
现象:
- 服务器无法通过公网IP访问自己
- 外部访问返回Empty reply
解决方案:
- 这是正常现象
- 服务器内部测试用127.0.0.1
- 外部访问问题需其他网络测试
问题8: 端口只监听IPv6
问题: 端口显示tcp6 :::3006而不是tcp 0.0.0.0:3006
说明:
- Node.js监听
::会同时响应IPv4 - 这是正常现象,无需特别处理
5. Nginx问题
问题9: 重复server_name警告
原因: 同一域名在多个配置文件中定义
解决方案:
- 删除或备份重复配置文件
- Node项目使用
node_项目名.conf - 不要同时创建
域名.conf
问题10: HTTPS强制重定向导致无法访问
问题: Nginx配置了return 301 https://但SSL证书未配置
解决方案:
- 删除HTTPS重定向
- 或正确配置SSL证书
- 同时支持HTTP和HTTPS
6. 宝塔与PM2冲突
问题11: 权限错误 EACCES
原因: 同时使用root用户PM2和宝塔PM2(www用户)
现象:
- 权限错误:
EACCES: permission denied - 宝塔面板显示未启动但实际在运行
- 状态不同步
解决方案:
- 停止所有独立PM2:
pm2 kill - 只使用宝塔界面管理
- 所有操作通过宝塔面板
7. 诊断命令速查
# 检查端口占用
ss -tlnp | grep :3006
netstat -tlnp | grep :3006
# 测试HTTP响应
curl -I http://localhost:3006
curl -I -H 'Host: soul.quwanzhi.com' http://127.0.0.1
# 检查Nginx配置
nginx -t
# 重载Nginx
nginx -s reload
# 检查PM2进程
/www/server/nodejs/v22.14.0/bin/pm2 list
# 检查DNS解析
dig soul.quwanzhi.com
dig +short soul.quwanzhi.com @8.8.8.8