#!/bin/bash # 轻远电力ERP部署脚本 # 使用方法: ./deploy.sh set -e echo "🚀 开始部署轻远电力ERP系统..." # 配置 APP_DIR="/opt/company-finance-system" BACKUP_DIR="/opt/backups" LOG_DIR="/var/log/company-finance" # 创建目录 echo "📁 创建目录..." sudo mkdir -p $APP_DIR sudo mkdir -p $BACKUP_DIR sudo mkdir -p $LOG_DIR sudo chown -R ubuntu:ubuntu $APP_DIR sudo chown -R ubuntu:ubuntu $BACKUP_DIR # 进入应用目录 cd $APP_DIR # 备份现有数据(如果存在) if [ -d "$APP_DIR/backend" ]; then echo "💾 备份现有数据..." BACKUP_NAME="backup_$(date +%Y%m%d_%H%M%S)" cp -r $APP_DIR/backend/database.sqlite $BACKUP_DIR/$BACKUP_NAME.sqlite 2>/dev/null || true echo "✅ 数据已备份到 $BACKUP_DIR/$BACKUP_NAME.sqlite" fi # 克隆或更新代码 echo "📥 下载最新代码..." if [ -d "$APP_DIR/.git" ]; then git pull origin main else git clone https://github.com/a273825743/company-finance-system.git . fi # 安装后端依赖 echo "📦 安装后端依赖..." cd $APP_DIR/backend npm install # 安装前端依赖并构建 echo "📦 安装前端依赖并构建..." cd $APP_DIR/frontend npm install npm run build # 创建PM2配置文件 echo "⚙️ 配置PM2..." cat > $APP_DIR/ecosystem.config.js << 'EOF' module.exports = { apps: [ { name: 'company-finance-backend', script: './backend/final-backend.js', cwd: '/opt/company-finance-system', instances: 1, autorestart: true, watch: false, max_memory_restart: '1G', env: { NODE_ENV: 'production', PORT: 3001 }, error_file: '/var/log/company-finance/err.log', out_file: '/var/log/company-finance/out.log', log_date_format: 'YYYY-MM-DD HH:mm:ss Z' } ] }; EOF # 使用PM2启动/重启服务 echo "🚀 启动后端服务..." cd $APP_DIR pm2 startOrRestart ecosystem.config.js # 配置Nginx echo "🌐 配置Nginx..." sudo tee /etc/nginx/sites-available/company-finance << 'EOF' server { listen 80; server_name 43.161.248.209; # 前端静态文件 location / { root /opt/company-finance-system/frontend/dist; index index.html; try_files $uri $uri/ /index.html; # PWA支持 location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ { expires 1y; add_header Cache-Control "public, immutable"; } } # 后端API代理 location /api/ { proxy_pass http://localhost:3001; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_cache_bypass $http_upgrade; } # 上传文件访问 location /uploads/ { alias /opt/company-finance-system/backend/uploads/; expires 1y; add_header Cache-Control "public"; } } EOF # 启用Nginx配置 sudo ln -sf /etc/nginx/sites-available/company-finance /etc/nginx/sites-enabled/ sudo rm -f /etc/nginx/sites-enabled/default sudo nginx -t sudo systemctl restart nginx # 保存PM2配置 echo "💾 保存PM2配置..." pm2 save pm2 startup systemd -u ubuntu --hp /home/ubuntu echo "" echo "✅ 部署完成!" echo "" echo "📱 访问地址: http://43.161.248.209" echo "🔧 后端API: http://43.161.248.209/api" echo "📊 PM2管理: pm2 status" echo "📝 日志查看: pm2 logs" echo ""