From c6248b67c0699786477be6c166daaa94d6e77714 Mon Sep 17 00:00:00 2001 From: jingrow Date: Fri, 8 Aug 2025 02:51:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dpm2=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install_jsite.sh | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/install_jsite.sh b/install_jsite.sh index 3672b0b..28a8e4a 100755 --- a/install_jsite.sh +++ b/install_jsite.sh @@ -602,8 +602,16 @@ create_pm2_config() { fi fi - # 创建ecosystem.config.js文件 - cat > "/home/jingrow/jsite/$SITE_NAME/ecosystem.config.js" << EOF + # 检查项目是否使用ES模块 + local is_es_module=false + if [ -f "/home/jingrow/jsite/$SITE_NAME/package.json" ]; then + if grep -q '"type": "module"' "/home/jingrow/jsite/$SITE_NAME/package.json"; then + is_es_module=true + fi + fi + + # 使用.cjs扩展名来避免ES模块问题 + cat > "/home/jingrow/jsite/$SITE_NAME/ecosystem.config.cjs" << EOF module.exports = { apps: [{ name: '$SITE_NAME', @@ -632,10 +640,10 @@ module.exports = { EOF # 设置文件权限 - chown -R jingrow:jingrow "/home/jingrow/jsite/$SITE_NAME/ecosystem.config.js" + chown -R jingrow:jingrow "/home/jingrow/jsite/$SITE_NAME/ecosystem.config.cjs" chown -R jingrow:jingrow "/home/jingrow/jsite/$SITE_NAME/logs" - log_success "PM2配置文件创建完成 (端口: $project_port, 启动脚本: $start_script)" + log_success "PM2配置文件创建完成 (端口: $project_port, 启动脚本: $start_script, 模块类型: $([ "$is_es_module" = true ] && echo "ES模块" || echo "CommonJS"))" } # 4.6. 用PM2启动项目 @@ -656,9 +664,9 @@ start_project_with_pm2() { return 1 fi - # 检查ecosystem.config.js是否存在 - if [ ! -f "/home/jingrow/jsite/$SITE_NAME/ecosystem.config.js" ]; then - log_error "ecosystem.config.js文件不存在,请检查PM2配置是否正确创建" + # 检查ecosystem.config.cjs是否存在 + if [ ! -f "/home/jingrow/jsite/$SITE_NAME/ecosystem.config.cjs" ]; then + log_error "ecosystem.config.cjs文件不存在,请检查PM2配置是否正确创建" return 1 fi @@ -666,10 +674,10 @@ start_project_with_pm2() { PM2_STATUS=$(su - jingrow -c " export NVM_DIR=\"\$HOME/.nvm\" [ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\" - pm2 list | grep -c '$SITE_NAME' || echo '0' + pm2 list | grep -w '$SITE_NAME' | wc -l ") - if [ "$PM2_STATUS" != "0" ]; then + if [ "$PM2_STATUS" != "0" ] && [ -n "$PM2_STATUS" ]; then if [ "$FORCE_UPDATE" = true ]; then log_warning "项目已在PM2中运行,重新启动..." su - jingrow -c " @@ -677,7 +685,7 @@ start_project_with_pm2() { [ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\" cd /home/jingrow/jsite/$SITE_NAME pm2 delete $SITE_NAME 2>/dev/null || true - pm2 start ecosystem.config.js + pm2 start ecosystem.config.cjs " if [ $? -ne 0 ]; then log_error "PM2启动失败,请检查项目配置和依赖" @@ -699,7 +707,7 @@ start_project_with_pm2() { export NVM_DIR=\"\$HOME/.nvm\" [ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\" cd /home/jingrow/jsite/$SITE_NAME - pm2 start ecosystem.config.js + pm2 start ecosystem.config.cjs " if [ $? -ne 0 ]; then log_error "PM2启动失败,请检查项目配置和依赖" @@ -720,7 +728,7 @@ start_project_with_pm2() { PM2_RUNNING=$(su - jingrow -c " export NVM_DIR=\"\$HOME/.nvm\" [ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\" - pm2 list | grep -c '$SITE_NAME.*online' || echo '0' + pm2 list | grep -w '$SITE_NAME' | grep -c 'online' || echo '0' ") if [ "$PM2_RUNNING" = "0" ]; then @@ -986,7 +994,7 @@ show_deployment_info() { echo " - Traefik目录: /home/jingrow/traefik-docker" echo " - Traefik管理界面: http://localhost:8080" echo " - Traefik网站配置: /home/jingrow/traefik-docker/conf.d/website/$SITE_NAME.yml" - echo " - PM2配置文件: /home/jingrow/jsite/$SITE_NAME/ecosystem.config.js" + echo " - PM2配置文件: /home/jingrow/jsite/$SITE_NAME/ecosystem.config.cjs" echo " - PM2日志目录: /home/jingrow/jsite/$SITE_NAME/logs" echo "" log_info ".env文件配置:"