修复在新服务器上第一次执行脚本时pm2无法成功启动的问题
This commit is contained in:
parent
21fe45cbce
commit
24d9b000cd
@ -309,6 +309,24 @@ install_nodejs() {
|
||||
install_pm2() {
|
||||
log_info "开始安装PM2..."
|
||||
|
||||
# 确保NVM环境变量被正确配置到用户配置文件中
|
||||
log_info "配置NVM环境变量..."
|
||||
|
||||
# 检查 ~/.bashrc 中是否已有NVM配置
|
||||
if ! su - jingrow -c "grep -q 'NVM_DIR' ~/.bashrc 2>/dev/null"; then
|
||||
log_info "在 ~/.bashrc 中添加NVM配置..."
|
||||
su - jingrow -c "echo 'export NVM_DIR=\"\$HOME/.nvm\"' >> ~/.bashrc"
|
||||
su - jingrow -c "echo '[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"' >> ~/.bashrc"
|
||||
su - jingrow -c "echo '[ -s \"\$NVM_DIR/bash_completion\" ] && \. \"\$NVM_DIR/bash_completion\"' >> ~/.bashrc"
|
||||
fi
|
||||
|
||||
# 检查 ~/.profile 中是否已有NVM配置(用于非交互式shell)
|
||||
if ! su - jingrow -c "grep -q 'NVM_DIR' ~/.profile 2>/dev/null"; then
|
||||
log_info "在 ~/.profile 中添加NVM配置..."
|
||||
su - jingrow -c "echo 'export NVM_DIR=\"\$HOME/.nvm\"' >> ~/.profile"
|
||||
su - jingrow -c "echo '[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"' >> ~/.profile"
|
||||
fi
|
||||
|
||||
# 检查PM2是否已安装
|
||||
PM2_VERSION=$(su - jingrow -c 'export NVM_DIR="$HOME/.nvm" && [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && pm2 -v 2>/dev/null || echo "not_installed"')
|
||||
|
||||
@ -321,6 +339,10 @@ install_pm2() {
|
||||
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||
npm install -g pm2
|
||||
"
|
||||
if [ $? -ne 0 ]; then
|
||||
log_error "PM2安装失败"
|
||||
return 1
|
||||
fi
|
||||
log_success "PM2安装完成"
|
||||
fi
|
||||
|
||||
@ -734,8 +756,12 @@ start_project_with_pm2() {
|
||||
return 1
|
||||
fi
|
||||
|
||||
# 确保NVM环境变量被正确加载
|
||||
log_info "加载NVM环境变量..."
|
||||
|
||||
# 检查项目是否已经在PM2中运行
|
||||
PM2_STATUS=$(su - jingrow -c "
|
||||
source ~/.bashrc 2>/dev/null || true
|
||||
export NVM_DIR=\"\$HOME/.nvm\"
|
||||
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||
pm2 list | grep -w '$SITE_NAME' | wc -l
|
||||
@ -745,6 +771,7 @@ start_project_with_pm2() {
|
||||
if [ "$FORCE_UPDATE" = true ]; then
|
||||
log_warning "项目已在PM2中运行,重新启动..."
|
||||
su - jingrow -c "
|
||||
source ~/.bashrc 2>/dev/null || true
|
||||
export NVM_DIR=\"\$HOME/.nvm\"
|
||||
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||
cd /home/jingrow/jsite/$SITE_NAME
|
||||
@ -755,6 +782,7 @@ start_project_with_pm2() {
|
||||
log_error "PM2启动失败,请检查项目配置和依赖"
|
||||
log_info "检查PM2日志:"
|
||||
su - jingrow -c "
|
||||
source ~/.bashrc 2>/dev/null || true
|
||||
export NVM_DIR=\"\$HOME/.nvm\"
|
||||
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||
pm2 logs $SITE_NAME --lines 10
|
||||
@ -765,6 +793,7 @@ start_project_with_pm2() {
|
||||
log_warning "项目已在PM2中运行,跳过启动"
|
||||
# 即使跳过启动,也要检查现有进程是否正常运行
|
||||
PM2_RUNNING=$(su - jingrow -c "
|
||||
source ~/.bashrc 2>/dev/null || true
|
||||
export NVM_DIR=\"\$HOME/.nvm\"
|
||||
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||
pm2 list | grep -w '$SITE_NAME' | grep -c 'online' || echo '0'
|
||||
@ -779,6 +808,7 @@ start_project_with_pm2() {
|
||||
else
|
||||
log_info "启动新项目..."
|
||||
su - jingrow -c "
|
||||
source ~/.bashrc 2>/dev/null || true
|
||||
export NVM_DIR=\"\$HOME/.nvm\"
|
||||
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||
cd /home/jingrow/jsite/$SITE_NAME
|
||||
@ -788,6 +818,7 @@ start_project_with_pm2() {
|
||||
log_error "PM2启动失败,请检查项目配置和依赖"
|
||||
log_info "检查PM2日志:"
|
||||
su - jingrow -c "
|
||||
source ~/.bashrc 2>/dev/null || true
|
||||
export NVM_DIR=\"\$HOME/.nvm\"
|
||||
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||
pm2 logs $SITE_NAME --lines 10
|
||||
@ -807,6 +838,7 @@ start_project_with_pm2() {
|
||||
wait_time=$((wait_time + 2))
|
||||
|
||||
pm2_running=$(su - jingrow -c "
|
||||
source ~/.bashrc 2>/dev/null || true
|
||||
export NVM_DIR=\"\$HOME/.nvm\"
|
||||
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||
pm2 list | grep -w '$SITE_NAME' | grep -c 'online' || echo '0'
|
||||
@ -822,12 +854,14 @@ start_project_with_pm2() {
|
||||
log_error "PM2启动失败,项目未正常运行(等待${wait_time}秒后仍未能启动)"
|
||||
log_info "检查PM2状态:"
|
||||
su - jingrow -c "
|
||||
source ~/.bashrc 2>/dev/null || true
|
||||
export NVM_DIR=\"\$HOME/.nvm\"
|
||||
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||
pm2 list
|
||||
"
|
||||
log_info "检查PM2日志:"
|
||||
su - jingrow -c "
|
||||
source ~/.bashrc 2>/dev/null || true
|
||||
export NVM_DIR=\"\$HOME/.nvm\"
|
||||
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||
pm2 logs $SITE_NAME --lines 20
|
||||
@ -860,12 +894,14 @@ start_project_with_pm2() {
|
||||
log_error "项目启动失败:端口 $project_port 未被监听"
|
||||
log_info "检查PM2状态:"
|
||||
su - jingrow -c "
|
||||
source ~/.bashrc 2>/dev/null || true
|
||||
export NVM_DIR=\"\$HOME/.nvm\"
|
||||
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||
pm2 list
|
||||
"
|
||||
log_info "检查PM2日志:"
|
||||
su - jingrow -c "
|
||||
source ~/.bashrc 2>/dev/null || true
|
||||
export NVM_DIR=\"\$HOME/.nvm\"
|
||||
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||
pm2 logs $SITE_NAME --lines 20
|
||||
@ -877,6 +913,7 @@ start_project_with_pm2() {
|
||||
|
||||
# 保存PM2配置
|
||||
su - jingrow -c "
|
||||
source ~/.bashrc 2>/dev/null || true
|
||||
export NVM_DIR=\"\$HOME/.nvm\"
|
||||
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||
pm2 save
|
||||
@ -885,6 +922,7 @@ start_project_with_pm2() {
|
||||
# 显示PM2状态
|
||||
log_info "PM2项目状态:"
|
||||
su - jingrow -c "
|
||||
source ~/.bashrc 2>/dev/null || true
|
||||
export NVM_DIR=\"\$HOME/.nvm\"
|
||||
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||
pm2 list
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user