确保pm2成功启动项目后才继续下一步
This commit is contained in:
parent
fa686fe62f
commit
f704f04900
@ -763,6 +763,17 @@ start_project_with_pm2() {
|
||||
fi
|
||||
else
|
||||
log_warning "项目已在PM2中运行,跳过启动"
|
||||
# 即使跳过启动,也要检查现有进程是否正常运行
|
||||
PM2_RUNNING=$(su - jingrow -c "
|
||||
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'
|
||||
")
|
||||
if [ "$PM2_RUNNING" = "0" ]; then
|
||||
log_error "现有PM2进程未正常运行,需要重新启动"
|
||||
return 1
|
||||
fi
|
||||
log_success "现有PM2进程运行正常"
|
||||
return 0
|
||||
fi
|
||||
else
|
||||
@ -785,18 +796,30 @@ start_project_with_pm2() {
|
||||
fi
|
||||
fi
|
||||
|
||||
# 等待一下让PM2启动完成
|
||||
sleep 5
|
||||
# 等待PM2启动完成,最多等待30秒
|
||||
log_info "等待PM2启动完成..."
|
||||
local wait_time=0
|
||||
local max_wait=30
|
||||
local pm2_running="0"
|
||||
|
||||
while [ $wait_time -lt $max_wait ] && [ "$pm2_running" = "0" ]; do
|
||||
sleep 2
|
||||
wait_time=$((wait_time + 2))
|
||||
|
||||
pm2_running=$(su - jingrow -c "
|
||||
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'
|
||||
")
|
||||
|
||||
if [ "$pm2_running" = "0" ]; then
|
||||
log_info "等待PM2启动... (${wait_time}s/${max_wait}s)"
|
||||
fi
|
||||
done
|
||||
|
||||
# 检查PM2进程是否真的启动了
|
||||
PM2_RUNNING=$(su - jingrow -c "
|
||||
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'
|
||||
")
|
||||
|
||||
if [ "$PM2_RUNNING" = "0" ]; then
|
||||
log_error "PM2启动失败,项目未正常运行"
|
||||
if [ "$pm2_running" = "0" ]; then
|
||||
log_error "PM2启动失败,项目未正常运行(等待${wait_time}秒后仍未能启动)"
|
||||
log_info "检查PM2状态:"
|
||||
su - jingrow -c "
|
||||
export NVM_DIR=\"\$HOME/.nvm\"
|
||||
@ -812,6 +835,46 @@ start_project_with_pm2() {
|
||||
return 1
|
||||
fi
|
||||
|
||||
# 额外检查:验证项目是否真的在监听端口
|
||||
local project_port=$(get_or_assign_port "$SITE_NAME")
|
||||
log_info "验证项目是否在端口 $project_port 上正常运行..."
|
||||
|
||||
# 等待一下让应用完全启动
|
||||
sleep 3
|
||||
|
||||
# 检查端口是否被监听
|
||||
local port_check=0
|
||||
local max_port_checks=10
|
||||
local port_check_count=0
|
||||
|
||||
while [ $port_check_count -lt $max_port_checks ] && [ $port_check -eq 0 ]; do
|
||||
port_check=$(netstat -tlnp 2>/dev/null | grep ":$project_port " | wc -l || echo "0")
|
||||
if [ $port_check -eq 0 ]; then
|
||||
sleep 1
|
||||
port_check_count=$((port_check_count + 1))
|
||||
log_info "等待端口 $project_port 启动... (${port_check_count}/${max_port_checks})"
|
||||
fi
|
||||
done
|
||||
|
||||
if [ $port_check -eq 0 ]; then
|
||||
log_error "项目启动失败:端口 $project_port 未被监听"
|
||||
log_info "检查PM2状态:"
|
||||
su - jingrow -c "
|
||||
export NVM_DIR=\"\$HOME/.nvm\"
|
||||
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||
pm2 list
|
||||
"
|
||||
log_info "检查PM2日志:"
|
||||
su - jingrow -c "
|
||||
export NVM_DIR=\"\$HOME/.nvm\"
|
||||
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||
pm2 logs $SITE_NAME --lines 20
|
||||
"
|
||||
return 1
|
||||
fi
|
||||
|
||||
log_success "项目已成功启动并监听端口 $project_port"
|
||||
|
||||
# 保存PM2配置
|
||||
su - jingrow -c "
|
||||
export NVM_DIR=\"\$HOME/.nvm\"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user