Files
nxxmdata/insurance_backend/deploy.sh
2025-09-30 17:41:21 +08:00

133 lines
2.7 KiB
Bash

#!/bin/bash
# 保险系统部署脚本
# 用于部署前端和后端到服务器
echo "🚀 开始部署保险系统..."
# 设置变量
PROJECT_ROOT="/var/www/insurance-system"
FRONTEND_DIR="/var/www/insurance-admin-system"
BACKEND_DIR="/var/www/insurance-backend"
NGINX_CONFIG="/etc/nginx/sites-available/ad.ningmuyun.com"
# 1. 创建项目目录
echo "📁 创建项目目录..."
sudo mkdir -p $PROJECT_ROOT
sudo mkdir -p $FRONTEND_DIR
sudo mkdir -p $BACKEND_DIR
# 2. 部署前端
echo "🎨 部署前端..."
cd $FRONTEND_DIR
# 构建前端(如果还没有构建)
if [ ! -d "dist" ]; then
echo "📦 构建前端项目..."
npm install
npm run build
fi
# 设置权限
sudo chown -R www-data:www-data $FRONTEND_DIR/dist
sudo chmod -R 755 $FRONTEND_DIR/dist
# 3. 部署后端
echo "⚙️ 部署后端..."
cd $BACKEND_DIR
# 安装依赖
npm install --production
# 创建环境变量文件
if [ ! -f ".env" ]; then
echo "📝 创建环境变量文件..."
cat > .env << EOF
NODE_ENV=production
PORT=3000
FRONTEND_URL=https://ad.ningmuyun.com
# 数据库配置
DB_DIALECT=mysql
DB_HOST=129.211.213.226
DB_PORT=9527
DB_DATABASE=insurance_data
DB_USER=root
DB_PASSWORD=aiotAiot123!
# JWT配置
JWT_SECRET=insurance_super_secret_jwt_key_2024_very_long_and_secure_production
JWT_EXPIRES_IN=24h
# 文件上传配置
UPLOAD_PATH=uploads
MAX_FILE_SIZE=10485760
# 日志配置
LOG_LEVEL=info
EOF
fi
# 4. 配置nginx
echo "🌐 配置nginx..."
sudo cp $BACKEND_DIR/nginx-ad.ningmuyun.com.conf $NGINX_CONFIG
# 启用站点
sudo ln -sf $NGINX_CONFIG /etc/nginx/sites-enabled/
# 测试nginx配置
sudo nginx -t
if [ $? -eq 0 ]; then
echo "✅ nginx配置测试通过"
sudo systemctl reload nginx
else
echo "❌ nginx配置测试失败"
exit 1
fi
# 5. 配置PM2进程管理
echo "🔄 配置PM2..."
npm install -g pm2
# 创建PM2配置文件
cat > ecosystem.config.js << EOF
module.exports = {
apps: [{
name: 'insurance-backend',
script: 'src/app.js',
cwd: '$BACKEND_DIR',
instances: 1,
exec_mode: 'fork',
env: {
NODE_ENV: 'production',
PORT: 3000
},
error_file: './logs/err.log',
out_file: './logs/out.log',
log_file: './logs/combined.log',
time: true,
max_memory_restart: '1G',
restart_delay: 4000,
max_restarts: 10,
min_uptime: '10s'
}]
};
EOF
# 启动应用
pm2 start ecosystem.config.js
pm2 save
pm2 startup
echo "✅ 部署完成!"
echo "📋 部署信息:"
echo " 前端地址: https://ad.ningmuyun.com/insurance/"
echo " 后端API: https://ad.ningmuyun.com/insurance/api/"
echo " 后端端口: 3000"
echo " 进程管理: PM2"
echo "🔍 检查服务状态:"
pm2 status
sudo systemctl status nginx