-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy-aws.sh
More file actions
executable file
·72 lines (62 loc) · 2.63 KB
/
deploy-aws.sh
File metadata and controls
executable file
·72 lines (62 loc) · 2.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/bin/bash
# AWS Lightsail Deployment Script for MOCIL
# Usage: ./deploy-aws.sh
# Configuration
SERVER_IP="54.180.213.12"
SERVER_USER="bitnami"
PEM_KEY="/home/from104/.ssh/aws-mocil-test.pem"
FRONTEND_DEST="/opt/bitnami/apache2/htdocs/"
BACKEND_DEST="/home/bitnami/mocil-backend/"
echo "🚀 Starting deployment to AWS Lightsail ($SERVER_IP)..."
# 1. Build Frontend SPA
echo "📦 Building Frontend SPA..."
yarn build
if [ $? -ne 0 ]; then
echo "❌ Build failed. Aborting deployment."
exit 1
fi
# 2. Upload Frontend SPA to Apache htdocs
echo "📤 Uploading SPA files to $FRONTEND_DEST..."
scp -i "$PEM_KEY" -o StrictHostKeyChecking=no -r dist/spa/* "$SERVER_USER@$SERVER_IP:$FRONTEND_DEST"
# 3. Create Backend directory and Upload Backend Files
echo "📤 Uploading Backend files to $BACKEND_DEST..."
ssh -i "$PEM_KEY" -o StrictHostKeyChecking=no "$SERVER_USER@$SERVER_IP" "mkdir -p $BACKEND_DEST"
scp -i "$PEM_KEY" -o StrictHostKeyChecking=no -r src-api .env.backend data.db "$SERVER_USER@$SERVER_IP:$BACKEND_DEST"
# 3-1. Generate backend-only package.json (production deps only)
echo "📝 Generating backend package.json..."
node -e "
const pkg = require('./package.json');
const backendPkg = {
name: pkg.name + '-backend',
version: pkg.version,
dependencies: {
'better-sqlite3': pkg.dependencies['better-sqlite3'],
'cors': pkg.dependencies['cors'],
'dotenv': pkg.dependencies['dotenv'],
'express': pkg.dependencies['express'],
'express-rate-limit': pkg.dependencies['express-rate-limit'],
'google-auth-library': pkg.dependencies['google-auth-library'],
'helmet': pkg.dependencies['helmet'],
'jsonwebtoken': pkg.dependencies['jsonwebtoken'],
'xlsx': pkg.dependencies['xlsx'],
}
};
require('fs').writeFileSync('/tmp/mocil-backend-pkg.json', JSON.stringify(backendPkg, null, 2));
"
scp -i "$PEM_KEY" -o StrictHostKeyChecking=no /tmp/mocil-backend-pkg.json "$SERVER_USER@$SERVER_IP:$BACKEND_DEST/package.json"
# 4. Install Backend Dependencies and Restart Service
echo "⚙️ Installing dependencies and restarting backend..."
ssh -i "$PEM_KEY" -o StrictHostKeyChecking=no "$SERVER_USER@$SERVER_IP" << 'EOF'
cd /home/bitnami/mocil-backend
npm install --omit=dev
# Try to restart with PM2 if available, otherwise use nohup
if command -v pm2 > /dev/null; then
pm2 restart mocil-api || pm2 start src-api/server.js --name mocil-api
else
echo "⚠️ PM2 not found, using nohup to start server..."
pkill -f "node src-api/server.js" || true
nohup node src-api/server.js > server.log 2>&1 &
fi
EOF
echo "✅ Deployment completed successfully!"
echo "🔗 URL: http://$SERVER_IP"