185 lines
3.9 KiB
Markdown
185 lines
3.9 KiB
Markdown
|
|
# 常见问题手册
|
|||
|
|
|
|||
|
|
## 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}`
|
|||
|
|
|
|||
|
|
**修复方法**:
|
|||
|
|
```python
|
|||
|
|
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端口
|
|||
|
|
|
|||
|
|
**解决方案**:
|
|||
|
|
1. 配置SSL证书(使用通配符证书)
|
|||
|
|
2. Nginx配置添加443监听:
|
|||
|
|
```nginx
|
|||
|
|
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中端口写死
|
|||
|
|
|
|||
|
|
**解决方案**:
|
|||
|
|
1. 检查端口占用: `ss -tlnp | grep :端口号`
|
|||
|
|
2. 修改package.json: `"start": "next start -p 新端口"`
|
|||
|
|
3. 更新数据库中的端口配置
|
|||
|
|
|
|||
|
|
### 问题6: Vue项目 Invalid Host header
|
|||
|
|
|
|||
|
|
**原因**: Nginx代理时Host头不匹配
|
|||
|
|
|
|||
|
|
**解决方案**: 修改`vue.config.js`:
|
|||
|
|
```javascript
|
|||
|
|
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. 诊断命令速查
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 检查端口占用
|
|||
|
|
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
|
|||
|
|
```
|