185 lines
3.6 KiB
Markdown
185 lines
3.6 KiB
Markdown
|
|
# 故障排查指南
|
|||
|
|
|
|||
|
|
## 连接超时问题排查
|
|||
|
|
|
|||
|
|
如果访问 `http://101.43.95.130:3006` 时出现连接超时(ERR_CONNECTION_TIMED_OUT),请按以下步骤排查:
|
|||
|
|
|
|||
|
|
### 1. 检查容器是否运行
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 查看容器状态
|
|||
|
|
docker ps -a | grep workdizhi-web
|
|||
|
|
|
|||
|
|
# 或使用docker-compose
|
|||
|
|
docker-compose ps
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**如果容器没有运行:**
|
|||
|
|
```bash
|
|||
|
|
# 启动容器
|
|||
|
|
docker-compose up -d
|
|||
|
|
|
|||
|
|
# 或使用docker命令
|
|||
|
|
docker start workdizhi-web
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 检查容器日志
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 查看容器日志,检查是否有错误
|
|||
|
|
docker-compose logs -f
|
|||
|
|
|
|||
|
|
# 或
|
|||
|
|
docker logs -f workdizhi-web
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 检查端口监听状态
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 检查3006端口是否在监听
|
|||
|
|
netstat -tlnp | grep 3006
|
|||
|
|
# 或
|
|||
|
|
ss -tlnp | grep 3006
|
|||
|
|
# 或
|
|||
|
|
lsof -i :3006
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**如果端口没有监听,检查:**
|
|||
|
|
- 容器是否正常启动
|
|||
|
|
- docker-compose.yml 中的端口映射是否正确
|
|||
|
|
|
|||
|
|
### 4. 检查防火墙配置
|
|||
|
|
|
|||
|
|
#### CentOS/RHEL 7+ (firewalld)
|
|||
|
|
```bash
|
|||
|
|
# 查看防火墙状态
|
|||
|
|
systemctl status firewalld
|
|||
|
|
|
|||
|
|
# 如果防火墙开启,需要开放3006端口
|
|||
|
|
firewall-cmd --permanent --add-port=3006/tcp
|
|||
|
|
firewall-cmd --reload
|
|||
|
|
|
|||
|
|
# 验证端口是否开放
|
|||
|
|
firewall-cmd --list-ports
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### Ubuntu/Debian (ufw)
|
|||
|
|
```bash
|
|||
|
|
# 查看防火墙状态
|
|||
|
|
ufw status
|
|||
|
|
|
|||
|
|
# 开放3006端口
|
|||
|
|
ufw allow 3006/tcp
|
|||
|
|
|
|||
|
|
# 重新加载
|
|||
|
|
ufw reload
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### iptables
|
|||
|
|
```bash
|
|||
|
|
# 开放3006端口
|
|||
|
|
iptables -A INPUT -p tcp --dport 3006 -j ACCEPT
|
|||
|
|
iptables-save
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5. 检查云服务器安全组(重要!)
|
|||
|
|
|
|||
|
|
如果使用的是云服务器(阿里云、腾讯云、AWS等),需要在控制台配置安全组规则:
|
|||
|
|
|
|||
|
|
1. 登录云服务器控制台
|
|||
|
|
2. 找到对应的服务器实例
|
|||
|
|
3. 进入"安全组"配置
|
|||
|
|
4. 添加入站规则:
|
|||
|
|
- 协议:TCP
|
|||
|
|
- 端口:3006
|
|||
|
|
- 源:0.0.0.0/0(允许所有IP访问,或指定特定IP)
|
|||
|
|
- 动作:允许
|
|||
|
|
|
|||
|
|
### 6. 本地测试
|
|||
|
|
|
|||
|
|
在服务器上测试本地访问:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 测试本地3006端口
|
|||
|
|
curl http://localhost:3006
|
|||
|
|
|
|||
|
|
# 或
|
|||
|
|
curl http://127.0.0.1:3006
|
|||
|
|
|
|||
|
|
# 如果本地可以访问,说明容器正常,问题在防火墙或安全组
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 7. 检查Docker服务状态
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 检查Docker服务是否运行
|
|||
|
|
systemctl status docker
|
|||
|
|
|
|||
|
|
# 如果未运行,启动Docker
|
|||
|
|
systemctl start docker
|
|||
|
|
systemctl enable docker
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 8. 重新构建和启动
|
|||
|
|
|
|||
|
|
如果以上都正常,尝试重新构建和启动:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 停止并删除旧容器
|
|||
|
|
docker-compose down
|
|||
|
|
|
|||
|
|
# 重新构建镜像
|
|||
|
|
docker-compose build --no-cache
|
|||
|
|
|
|||
|
|
# 启动服务
|
|||
|
|
docker-compose up -d
|
|||
|
|
|
|||
|
|
# 查看日志
|
|||
|
|
docker-compose logs -f
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 9. 验证部署
|
|||
|
|
|
|||
|
|
部署成功后,应该能看到:
|
|||
|
|
- 容器状态为 `Up`
|
|||
|
|
- 端口映射正确:`0.0.0.0:3006->80/tcp`
|
|||
|
|
- 日志无错误信息
|
|||
|
|
|
|||
|
|
## 快速检查脚本
|
|||
|
|
|
|||
|
|
可以运行以下命令快速检查:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
#!/bin/bash
|
|||
|
|
echo "=== 检查容器状态 ==="
|
|||
|
|
docker ps -a | grep workdizhi-web
|
|||
|
|
|
|||
|
|
echo -e "\n=== 检查端口监听 ==="
|
|||
|
|
netstat -tlnp | grep 3006 || ss -tlnp | grep 3006
|
|||
|
|
|
|||
|
|
echo -e "\n=== 检查防火墙 ==="
|
|||
|
|
if command -v firewall-cmd &> /dev/null; then
|
|||
|
|
firewall-cmd --list-ports | grep 3006
|
|||
|
|
elif command -v ufw &> /dev/null; then
|
|||
|
|
ufw status | grep 3006
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo -e "\n=== 测试本地访问 ==="
|
|||
|
|
curl -I http://localhost:3006 2>&1 | head -1
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 常见问题
|
|||
|
|
|
|||
|
|
### Q: 容器启动后立即退出
|
|||
|
|
**A:** 检查日志:`docker logs workdizhi-web`,可能是镜像构建失败或文件缺失
|
|||
|
|
|
|||
|
|
### Q: 本地可以访问,外网无法访问
|
|||
|
|
**A:** 检查防火墙和安全组配置,确保3006端口已开放
|
|||
|
|
|
|||
|
|
### Q: 端口被占用
|
|||
|
|
**A:** 检查是否有其他服务占用3006端口,或修改docker-compose.yml使用其他端口
|
|||
|
|
|
|||
|
|
### Q: 容器运行但无法访问
|
|||
|
|
**A:** 检查Nginx配置,确保容器内Nginx正常启动
|
|||
|
|
|