如何在DigitalOcean上生效网站Git更新?pm2重启仍无效
解决DigitalOcean上Git推送后代码不更新的问题
排查与修复步骤
先确认服务器代码是否同步
- 登录DigitalOcean服务器,进入项目根目录,执行
git pull手动拉取代码。如果拉取失败,检查Git远程地址是否正确、本地文件是否有冲突,或者服务器是否有仓库的访问权限;如果拉取成功但仍不生效,说明问题不在代码同步环节。
- 登录DigitalOcean服务器,进入项目根目录,执行
检查pm2进程状态与配置
- 执行
pm2 list查看index.js对应的进程是否处于online状态。 - 用
pm2 show <进程ID/名称>确认进程的启动目录是否为当前项目根目录,避免pm2指向了旧的代码路径。 - 尝试执行
pm2 restart <进程ID/名称> --update-env,强制重启并更新环境变量,部分场景下缓存的环境变量会导致新代码不生效。
- 执行
排查缓存问题
- 若涉及前端静态资源,浏览器可能缓存了旧文件。可以给静态资源文件名添加哈希后缀(如
app.abc123.js),或在服务器配置中添加缓存控制头强制刷新。 - 如果用了Nginx反向代理,执行
nginx -s reload重启服务,清除代理层的缓存。
- 若涉及前端静态资源,浏览器可能缓存了旧文件。可以给静态资源文件名添加哈希后缀(如
确认依赖是否更新
- 新代码若新增了依赖,拉取后需执行
npm install或yarn install更新依赖,再重启pm2进程。 - 可以把依赖更新步骤加入pm2的启动脚本,避免每次手动遗漏。
- 新代码若新增了依赖,拉取后需执行
查看日志定位错误
- 执行
pm2 logs <进程ID/名称>,检查服务器运行日志是否有模块缺失、语法错误等报错,这类问题会导致新代码无法正常启动,服务器可能 fallback 到旧进程。 - 查看Nginx错误日志(通常路径为
/var/log/nginx/error.log),确认是否存在请求转发异常。
- 执行
额外注意点
- 若使用Git webhook自动部署,检查webhook脚本是否能正确执行
git pull和pm2 restart,同时确保脚本拥有足够的执行权限,避免因权限不足导致操作失败。 - 如果pm2路径配置错误,先执行
pm2 delete <进程ID>删除旧进程,再到项目根目录重新执行pm2 start index.js。 - 前端项目需确认构建步骤:React/Vue等项目拉取代码后要执行
npm run build,并确保服务器指向构建后的dist目录,再重启服务。
内容的提问来源于stack exchange,提问作者user15527921
相关产品推荐
相关产品推荐

