7cbb7a9ac8
ci/woodpecker/push/woodpecker Pipeline failed
1. jest.setup.js: - 添加 Request/Response/Headers 全局对象 mock - 解决 'Request is not defined' 错误 2. .eslintrc.json: - 将 jest.setup.js 添加到忽略列表 3. shared-mocks.tsx: - 添加 ArrowUp 图标 mock 4. back-to-top.test.tsx: - 重写测试使用 import 语法 - 使用 fireEvent.scroll 触发滚动事件 - 修复组件渲染测试
4.8 KiB
4.8 KiB
方案A执行指南
🚀 快速执行(推荐)
方法1: 自动化脚本(最简单)
# 1. SSH登录服务器
ssh root@139.155.109.62
# 2. 上传脚本(从本地)
# 在本地执行:
scp scripts/fix-service-restart.sh root@139.155.109.62:/tmp/
# 3. 在服务器上执行
ssh root@139.155.109.62
chmod +x /tmp/fix-service-restart.sh
/tmp/fix-service-restart.sh
方法2: 手动执行(如果脚本无法上传)
# SSH登录服务器
ssh root@139.155.109.62
# 1. 查找项目目录
find / -name "docker-compose.prod.yml" 2>/dev/null
# 或
find / -name "docker-compose.yml" 2>/dev/null
# 2. 进入项目目录(假设在/opt/novalon-website)
cd /opt/novalon-website
# 3. 重启Docker容器
docker-compose -f docker-compose.prod.yml restart
# 或
docker-compose restart
# 4. 检查容器状态
docker ps
# 5. 重启Nginx
systemctl restart nginx
# 6. 检查Nginx状态
systemctl status nginx
# 7. 测试应用
curl -I http://localhost:3000
curl -I https://novalon.cn
📋 执行步骤详解
步骤1: 检查当前状态
# 查看Docker容器
docker ps -a
# 查看Nginx状态
systemctl status nginx
# 查看系统资源
top -bn1 | head -20
df -h
free -h
步骤2: 重启Docker容器
# 进入项目目录
cd /path/to/novalon-website
# 停止容器
docker-compose -f docker-compose.prod.yml stop
# 启动容器
docker-compose -f docker-compose.prod.yml up -d
# 等待启动
sleep 10
# 检查状态
docker ps
步骤3: 重启Nginx
# 测试配置
nginx -t
# 重启服务
systemctl restart nginx
# 检查状态
systemctl status nginx
步骤4: 验证服务
# 测试本地应用
curl -I http://localhost:3000
# 检查端口监听
netstat -tlnp | grep -E ":(3000|80|443)"
# 测试外部访问
curl -I https://novalon.cn
✅ 成功标志
执行成功后,您应该看到:
-
Docker容器状态:
CONTAINER ID NAMES STATUS PORTS xxxxx novalon-website Up 10 seconds 0.0.0.0:3000->3000/tcp -
Nginx状态:
Active: active (running) -
本地应用响应:
HTTP/1.1 200 OK -
外部访问响应:
HTTP/2 200
❌ 故障排查
如果Docker容器无法启动
# 查看容器日志
docker logs <container-name>
# 查看详细错误
docker-compose -f docker-compose.prod.yml logs
# 检查配置文件
cat docker-compose.prod.yml
# 尝试重新构建
docker-compose -f docker-compose.prod.yml build --no-cache
docker-compose -f docker-compose.prod.yml up -d
如果Nginx无法启动
# 测试配置
nginx -t
# 查看错误日志
tail -50 /var/log/nginx/error.log
# 查看系统日志
journalctl -u nginx -n 50
# 检查端口占用
netstat -tlnp | grep -E ":(80|443)"
如果应用仍然无响应
# 检查应用日志
docker logs -f <container-name>
# 检查应用进程
docker exec <container-name> ps aux
# 检查应用端口
docker exec <container-name> netstat -tlnp
# 重启应用容器
docker restart <container-name>
🔍 验证清单
执行完成后,请验证以下项目:
- Docker容器运行正常:
docker ps - Nginx服务运行正常:
systemctl status nginx - 本地应用响应正常:
curl -I http://localhost:3000 - 端口监听正常:
netstat -tlnp | grep -E ":(3000|80|443)" - 外部访问正常:
curl -I https://novalon.cn - Git服务器正常:
git ls-remote https://git.f.novalon.cn/novalon/novalon-website.git - CI服务器正常:
curl -I https://ci.f.novalon.cn
📊 监控命令
实时监控服务状态
# 监控Docker容器
watch -n 5 'docker ps'
# 监控Nginx状态
watch -n 5 'systemctl status nginx'
# 监控系统资源
watch -n 5 'free -h && df -h'
查看实时日志
# Docker容器日志
docker logs -f <container-name>
# Nginx错误日志
tail -f /var/log/nginx/error.log
# Nginx访问日志
tail -f /var/log/nginx/access.log
# 系统日志
journalctl -f
🆘 紧急情况
如果方案A无法解决问题,请:
-
保存诊断日志:
/tmp/remote-server-diagnosis.sh --full > /tmp/diagnosis-report.log -
尝试方案B或C:
- 方案B: 清理资源并重启
- 方案C: 完全重建
-
联系支持:
- 提供诊断日志
- 描述已尝试的步骤
- 提供服务器访问信息
📝 执行记录
建议记录以下信息:
执行时间: _______________
执行人: _______________
服务器IP: 139.155.109.62
执行结果: _______________
遇到的问题: _______________
解决方案: _______________
后续跟进: _______________
预计执行时间: 2-5分钟
风险等级: 低(仅重启服务,不修改配置)
回滚方案: 如有问题,可再次重启或使用其他方案