From fa8feb309dc12bdbd153864eb2549a77b177163d Mon Sep 17 00:00:00 2001 From: richarjiang Date: Wed, 29 Oct 2025 10:15:21 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy.sh | 66 +++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 59 insertions(+), 7 deletions(-) diff --git a/deploy.sh b/deploy.sh index 116c68e..122b734 100755 --- a/deploy.sh +++ b/deploy.sh @@ -141,12 +141,47 @@ deploy_on_server() { if ! command -v yarn &> /dev/null; then echo "正在安装Yarn..." - npm install -g yarn + npm install -g yarn --unsafe-perm=true --allow-root fi + # 安装PM2并确保可用 if ! command -v pm2 &> /dev/null; then echo "正在安装PM2..." - npm install -g pm2 + npm install -g pm2 --unsafe-perm=true --allow-root + + # 重新加载环境变量 + source ~/.bashrc 2>/dev/null || source ~/.zshrc 2>/dev/null || true + + # 创建PM2的符号链接到/usr/local/bin + if [ -f "/usr/local/bin/pm2" ]; then + echo "PM2已存在于/usr/local/bin" + elif [ -f "/usr/bin/pm2" ]; then + echo "PM2已存在于/usr/bin" + else + # 查找PM2安装位置并创建符号链接 + PM2_INSTALL_PATH=\$(find /usr/local/lib/node_modules/pm2/bin/pm2 2>/dev/null) + if [ -n "\$PM2_INSTALL_PATH" ]; then + ln -sf \$PM2_INSTALL_PATH /usr/local/bin/pm2 + echo "已创建PM2符号链接" + else + echo "警告: 无法找到PM2安装路径" + fi + fi + fi + + # 验证PM2是否可用 + if command -v pm2 &> /dev/null; then + echo "PM2已准备就绪" + else + echo "尝试使用完整路径运行PM2..." + PM2_CMD="/usr/local/bin/pm2" + if [ ! -f "\$PM2_CMD" ]; then + PM2_CMD="/usr/bin/pm2" + fi + if [ ! -f "\$PM2_CMD" ]; then + echo "错误: 无法找到PM2可执行文件" + exit 1 + fi fi # 检查并安装Redis @@ -171,18 +206,35 @@ deploy_on_server() { # 停止旧的应用实例 echo "停止旧的应用实例..." - pm2 delete $PROJECT_NAME 2>/dev/null || true + if command -v pm2 &> /dev/null; then + pm2 delete $PROJECT_NAME 2>/dev/null || true + else + \$PM2_CMD delete $PROJECT_NAME 2>/dev/null || true + fi # 启动新的应用实例 echo "启动新的应用实例..." - pm2 start ecosystem.config.js --env production + if command -v pm2 &> /dev/null; then + pm2 start ecosystem.config.js --env production + else + \$PM2_CMD start ecosystem.config.js --env production + fi # 保存PM2配置 - pm2 save - pm2 startup + if command -v pm2 &> /dev/null; then + pm2 save + pm2 startup + else + \$PM2_CMD save + \$PM2_CMD startup + fi echo "部署完成!" - pm2 status + if command -v pm2 &> /dev/null; then + pm2 status + else + \$PM2_CMD status || echo "无法执行pm2 status命令" + fi EOF if [ $? -eq 0 ]; then