Files
workdizhi/TROUBLESHOOTING.md

185 lines
3.6 KiB
Markdown
Raw Normal View History

# 故障排查指南
## 连接超时问题排查
如果访问 `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正常启动