服务器部署自动化网站问题总结

232 阅读2分钟

主要问题及解决方法

1. 端口 3000 被占用

症状webhook-server 进程无法绑定到端口 3000,报错 EADDRINUSE

解决方法

  • 查找并终止占用端口 3000 的进程:

    bash复制

    sudo lsof -i :3000
    sudo kill -9 <PID>
    
  • 删除所有 PM2 进程并重新启动 webhook-server

    bash复制

    pm2 stop all
    pm2 delete all
    cd /var/www/myproject/webhook-server
    pm2 start server.js --name webhook-server
    pm2 save
    sudo pm2 startup systemd -u $(whoami) --hp /home/$(whoami)
    

2. Gitee Webhook 请求超时

症状:Gitee Webhook 请求历史中显示 Read timed out

解决方法

  • 确保服务器可从外部访问,并检查防火墙和云服务提供商的安全组设置。

  • 使用外网 IP 地址测试 Webhook URL。

  • 检查 Nginx 配置,确保正确转发 /deploy 请求:

    nginx复制

    location /deploy {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 60s;
    }
    
  • 增加 deploy.sh 脚本中的日志记录以调试问题。

3. 手动构建报错 sh: vue-cli-service: command not found

症状:手动运行 deploy.sh 时报错 sh: vue-cli-service: command not found

解决方法

  • 修改 deploy.sh 脚本以使用相对路径调用 vue-cli-service

    bash复制

    ./node_modules/.bin/vue-cli-service build
    
  • 确保项目目录中包含所有必要的依赖项,并安装所有依赖项:

    bash复制

    rm -rf node_modules
    rm package-lock.json
    npm install
    

4. 手动构建报错 Error: Cannot find module '@vue/cli-plugin-babel'

症状:手动运行 deploy.sh 时报错 Cannot find module '@vue/cli-plugin-babel'

解决方法

  • 卸载全局安装的 @vue/cli 及相关插件:

    bash复制

    npm uninstall -g @vue/cli @vue/cli-service @vue/cli-plugin-babel
    
  • 重新安装全局 @vue/cli

    bash复制

    npm install -g @vue/cli
    
  • 确保项目依赖项正确安装:

    bash复制

    rm -rf node_modules
    rm package-lock.json
    npm install
    

5. 自动构建报错 Git pull failed

症状:自动构建过程中 git pull 失败。

解决方法

  • 确认 Git 远程 URL 正确,并且服务器有权限拉取代码。

  • 使用 SSH 密钥进行身份验证(推荐):

    • 生成 SSH 密钥并添加到 Gitee:

      bash复制

      ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
      ssh -T git@gitee.com
      git remote set-url origin git@gitee.com:username/repository.git
      
    • 或者使用 HTTPS 凭据:

      • 配置凭据缓存:

        bash复制

        git config --global credential.helper cache
        
      • 使用 Personal Access Token(PAT)进行身份验证:

        bash复制

        git pull https://oauth2:<YOUR_PAT>@gitee.com/username/repository.git master
        

总结

通过以上步骤,您可以解决以下问题:

  • 端口被占用导致 webhook-server 无法启动。
  • Gitee Webhook 请求超时。
  • vue-cli-service 命令找不到。
  • @vue/cli-plugin-babel 模块缺失。
  • git pull 失败导致自动构建失败。