#!/bin/bash # CRM 系统部署脚本 set -e echo "==========================================" echo " 中小企业轻量级 CRM 系统 - 部署脚本" echo "==========================================" echo "" # 颜色定义 GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[1;33m' NC='\033[0m' # 获取脚本所在目录 SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" cd "$SCRIPT_DIR" echo "📁 项目目录:$SCRIPT_DIR" echo "" # 检查 Node.js echo "🔍 检查 Node.js..." if ! command -v node &> /dev/null; then echo -e "${RED}❌ Node.js 未安装${NC}" exit 1 fi echo -e "${GREEN}✅ Node.js $(node -v) 已安装${NC}" echo "" # 检查 PM2 echo "🔍 检查 PM2..." if ! command -v pm2 &> /dev/null; then echo "正在安装 PM2..." npm install -g pm2 fi echo -e "${GREEN}✅ PM2 $(pm2 -v) 已安装${NC}" echo "" # 安装依赖 echo "📦 安装项目依赖..." npm install --production echo -e "${GREEN}✅ 依赖安装完成${NC}" echo "" # 配置环境变量 echo "⚙️ 配置环境变量..." if [ ! -f .env ]; then cat > .env << EOF PORT=3002 NODE_ENV=production EOF echo -e "${GREEN}✅ 已创建 .env 文件${NC}" else echo -e "${YELLOW}⚠️ .env 文件已存在${NC}" fi echo "" # 创建数据目录 echo "📁 创建数据目录..." mkdir -p ./src/data ./logs chmod 755 ./src/data ./logs echo -e "${GREEN}✅ 目录已创建${NC}" echo "" # 停止旧版本 echo "🛑 停止旧版本服务..." pm2 stop crm-system 2>/dev/null || true pm2 delete crm-system 2>/dev/null || true echo -e "${GREEN}✅ 旧版本已停止${NC}" echo "" # 启动服务 echo "🚀 启动服务..." pm2 start ecosystem.config.js --env production sleep 3 echo -e "${GREEN}✅ 服务已启动${NC}" echo "" # 保存 PM2 配置 echo "💾 保存 PM2 配置..." pm2 save echo -e "${GREEN}✅ PM2 配置已保存${NC}" echo "" # 显示状态 echo "" echo "==========================================" echo " 部署完成!" echo "==========================================" echo "" pm2 status crm-system echo "" echo "📍 访问地址:http://localhost:3002" echo "📋 查看日志:pm2 logs crm-system" echo "🛑 停止服务:pm2 stop crm-system" echo "🔄 重启服务:pm2 restart crm-system" echo "" echo -e "${GREEN}🎉 部署成功!${NC}" echo ""