133 lines
2.7 KiB
Bash
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
|