Files
workdizhi/TROUBLESHOOTING.md

185 lines
3.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 故障排查指南
## 连接超时问题排查
如果访问 `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正常启动