From a0fd4e5bc43321571de3e7b32b6e832dfed638ce Mon Sep 17 00:00:00 2001 From: jingrow Date: Fri, 8 Aug 2025 07:04:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96pm2=E5=AE=89=E8=A3=85?= =?UTF-8?q?=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install_jsite.sh | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/install_jsite.sh b/install_jsite.sh index 4af73a5..be2e646 100755 --- a/install_jsite.sh +++ b/install_jsite.sh @@ -776,7 +776,14 @@ start_project_with_pm2() { pm2 list | grep -w '$SITE_NAME' | wc -l ") - if [ "$PM2_STATUS" != "0" ] && [ -n "$PM2_STATUS" ]; then + # 检查项目是否真的在运行(状态为online) + 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_STATUS" != "0" ] && [ -n "$PM2_STATUS" ] && [ "$PM2_RUNNING" != "0" ]; then if [ "$FORCE_UPDATE" = true ]; then log_warning "项目已在PM2中运行,重新启动..." su - jingrow -c " @@ -798,20 +805,20 @@ 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 + # 如果项目存在但不在运行状态,先删除再重新启动 + if [ "$PM2_STATUS" != "0" ] && [ -n "$PM2_STATUS" ]; then + log_warning "项目存在于PM2中但未正常运行,重新启动..." + su - jingrow -c " + export NVM_DIR=\"\$HOME/.nvm\" + [ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\" + pm2 delete $SITE_NAME 2>/dev/null || true + " + fi + log_info "启动新项目..." su - jingrow -c " export NVM_DIR=\"\$HOME/.nvm\" @@ -1298,12 +1305,6 @@ main() { install_nodejs - if [ "$SKIP_PM2" = false ]; then - install_pm2 - else - log_warning "跳过PM2安装" - fi - if ! clone_jsite_project; then log_error "项目克隆失败,部署终止" exit 1 @@ -1320,7 +1321,10 @@ main() { log_warning "跳过项目依赖安装" fi + # PM2安装和项目启动(在项目准备完成后) if [ "$SKIP_PM2" = false ]; then + log_info "开始PM2安装和项目启动..." + install_pm2 create_pm2_config if ! start_project_with_pm2; then log_error "PM2启动失败,部署终止" @@ -1332,7 +1336,7 @@ main() { exit 1 fi else - log_warning "跳过PM2配置和启动" + log_warning "跳过PM2安装和项目启动" fi if [ "$SKIP_TRAEFIK" = false ]; then