You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS CodeDeploy部署Node应用报错:GLIBC_2.27缺失及127退出码问题

解决AWS CodeDeploy部署时Node依赖GLIBC_2.27缺失及NVM安装无效问题

问题根源

  1. GLIBC版本不兼容:较新的Node.js版本(如v16+)要求系统GLIBC版本≥2.27,但AWS EC2的部分镜像(如Amazon Linux 2默认GLIBC为2.26)无法满足,导致Node无法启动。
  2. NVM安装命令错误:你使用的nvm install --lt是无效参数,正确的长期支持版参数应为--lts,且未指定具体兼容版本,导致Node版本未切换成功。
  3. 127退出码原因:因Node依赖缺失无法运行,或NVM环境未正确加载导致PATH中找不到Node/pm2可执行文件。

具体解决方案

1. 修复NVM安装脚本,安装兼容GLIBC的Node LTS版本

首先确认系统GLIBC版本:

ldd --version

若输出为GLIBC 2.26(如Amazon Linux 2),选择Node.js v14.x LTS(代号Fermium),该版本最高仅依赖GLIBC 2.17,完全兼容旧系统。

修改前置Node安装脚本:

# 若未安装NVM,先手动安装
mkdir -p "$HOME/.nvm"
git clone https://github.com/nvm-sh/nvm.git "$HOME/.nvm"
cd "$HOME/.nvm"
git checkout v0.39.7  # 选择稳定的NVM版本
cd ~

# 加载NVM环境
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

# 安装Node.js v14 LTS并设置为默认版本
nvm install --lts=fermium
nvm alias default lts/fermium

注意:若CodeDeploy以root用户运行,需将$HOME替换为/root,确保NVM目录路径正确。

2. 确保application_start.sh正确加载NVM环境

修改原脚本的NVM加载部分,添加版本验证,避免环境变量失效:

#!/bin/bash

# 若以root用户部署,调整NVM_DIR路径
export NVM_DIR="/root/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"

# 验证Node版本,确保环境加载成功
node --version
npm --version

# 授予目录权限
sudo chmod -R 777 /directory/backend

# 进入工作目录
cd /directory/backend || exit

# 安装依赖及PM2
npm install
npm install pm2@latest -g

# 重启应用
pm2 stop backend || true  # 添加|| true避免停止不存在的进程导致报错
pm2 start ecosystem.config.js --env prodaws

3. 处理127退出码

若仍出现127错误,手动指定Node/PM2的PATH:

# 替换为实际安装的Node版本路径
export PATH="$PATH:/root/.nvm/versions/node/v14.21.3/bin"

添加到application_start.sh的开头,确保可执行文件能被找到。

验证步骤

  1. 在EC2实例上手动运行application_start.sh,观察是否有报错。
  2. 检查Node依赖兼容性:
ldd $(which node)

确认输出中无GLIBC版本缺失的提示。
3. 查看PM2应用状态:

pm2 list

确认backend应用已正常启动。

内容的提问来源于stack exchange,提问作者Isaak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 08:15:31