Files
yunhaifinance/deploy.sh
T

144 lines
3.5 KiB
Bash

#!/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 ""