chore: migrate PM2 processes to ecosystem.config.js and add deploy safety checks

This commit is contained in:
Your Name committed 2026-06-13 00:00:22 -04:00
1 parent 10c614fc8c
commit f5b48433d1
3 files changed
+55 -32

No files matched your search

+27
View File
@@ -0,0 +1,27 @@
module.exports = {
apps: [
{
name: 'homaroma-backend',
script: './src/index.ts',
cwd: '/home/ti/projects/homaroma-api/apps/backend',
interpreter: '/home/ti/.bun/bin/bun',
watch: false,
max_memory_restart: '1G',
env_production: {
NODE_ENV: 'production'
}
},
{
name: 'homaroma-website',
script: 'server.js',
cwd: '/home/ti/projects/homaroma-website/apps/website',
interpreter: '/home/ti/.bun/bin/bun',
watch: false,
max_memory_restart: '1G',
env_production: {
NODE_ENV: 'production',
PORT: 3002
}
}
]
};
+14 -17
View File
@@ -82,7 +82,7 @@ rsync -av --delete \
# Sync Shared Packages
rsync -av packages/ $TARGET_BACKEND/packages/
cp package.json bun.lock $TARGET_BACKEND/
cp package.json bun.lock ecosystem.config.js $TARGET_BACKEND/
cd $TARGET_BACKEND
echo "Installing backend dependencies..."
@@ -98,21 +98,19 @@ echo ">>> Generating Prisma Client..."
$BUN x prisma generate
# E. Database Migration (Safe Method)
if [ -f "$TARGET_BACKEND/.env" ]; then
# Copy .env to apps/backend so Prisma and the app can find it
cp "$TARGET_BACKEND/.env" "$TARGET_BACKEND/apps/backend/.env"
echo ">>> Running Prisma Migrate Deploy..."
$BUN x prisma migrate deploy
else
echo "⚠️ Warning: .env not found at $TARGET_BACKEND/.env"
echo " Please create it manually once: see serverinfo/text.txt for template"
echo " Skipping migrations this time."
if [ ! -f "$TARGET_BACKEND/.env" ]; then
echo "❌ Error: .env file is missing at $TARGET_BACKEND/.env. Deployment aborted."
exit 1
fi
# Copy .env to apps/backend so Prisma and the app can find it
cp "$TARGET_BACKEND/.env" "$TARGET_BACKEND/apps/backend/.env"
echo ">>> Running Prisma Migrate Deploy..."
$BUN x prisma migrate deploy
# F. PM2 Management - BACKEND
echo ">>> Managing PM2 Process: $PM2_NAME_BACKEND..."
$PM2 restart $PM2_NAME_BACKEND 2>/dev/null || \
$PM2 start $TARGET_BACKEND/apps/backend/src/index.ts --name $PM2_NAME_BACKEND --interpreter $BUN
$PM2 startOrReload $TARGET_BACKEND/ecosystem.config.js --only $PM2_NAME_BACKEND --env production
echo "✅ PM2 process '$PM2_NAME_BACKEND' is running."
# G. Build & Deploy WEBSITE (Next.js SSR)
@@ -129,6 +127,8 @@ rsync -av \
rsync -av \
$TEMP_DIR/apps/website/.next/static/ $TARGET_WEBSITE/apps/website/.next/static/
cp ecosystem.config.js $TARGET_WEBSITE/
# F. Fix Permissions
echo ">>> Fixing Permissions..."
chown -R ti:ti $TARGET_BACKEND $TARGET_WEBSITE
@@ -137,12 +137,9 @@ chown -R ti:ti $TARGET_BACKEND $TARGET_WEBSITE
cd $TARGET_WEBSITE
echo ">>> Creating symlink for .next..."
ln -sf apps/website/.next .next
cd apps/website
echo ">>> Managing PM2 Process: $PM2_NAME_WEBSITE..."
$PM2 delete $PM2_NAME_WEBSITE 2>/dev/null || true
PORT=$SSR_PORT $PM2 start $BUN --name $PM2_NAME_WEBSITE \
-- server.js
echo "✅ PM2 process '$PM2_NAME_WEBSITE' is running on port $SSR_PORT."
$PM2 startOrReload $TARGET_WEBSITE/ecosystem.config.js --only $PM2_NAME_WEBSITE --env production
echo "✅ PM2 process '$PM2_NAME_WEBSITE' is running."
# I. Cleanup
echo "Cleaning up build artifacts..."
+14 -15
View File
@@ -82,7 +82,7 @@ rsync -av --delete \
# Sync Shared Packages
rsync -av packages/ $TARGET_BACKEND/packages/
cp package.json bun.lock $TARGET_BACKEND/
cp package.json bun.lock ecosystem.config.js $TARGET_BACKEND/
cd $TARGET_BACKEND
echo "Installing backend dependencies..."
@@ -98,19 +98,19 @@ echo ">>> Generating Prisma Client..."
$BUN x prisma generate
# E. Database Migration (Safe Method)
if [ -f "$TARGET_BACKEND/.env" ]; then
echo ">>> Running Prisma Migrate Deploy..."
$BUN x prisma migrate deploy
else
echo "⚠️ Warning: .env not found at $TARGET_BACKEND/.env"
echo " Please create it manually once: see serverinfo/text.txt for template"
echo " Skipping migrations this time."
if [ ! -f "$TARGET_BACKEND/.env" ]; then
echo "❌ Error: .env file is missing at $TARGET_BACKEND/.env. Deployment aborted."
exit 1
fi
# Copy .env to apps/backend so Prisma and the app can find it
cp "$TARGET_BACKEND/.env" "$TARGET_BACKEND/apps/backend/.env"
echo ">>> Running Prisma Migrate Deploy..."
$BUN x prisma migrate deploy
# F. PM2 Management - BACKEND
echo ">>> Managing PM2 Process: $PM2_NAME_BACKEND..."
$PM2 restart $PM2_NAME_BACKEND 2>/dev/null || \
$PM2 start $TARGET_BACKEND/apps/backend/src/index.ts --name $PM2_NAME_BACKEND --interpreter $BUN
$PM2 startOrReload $TARGET_BACKEND/ecosystem.config.js --only $PM2_NAME_BACKEND --env production
echo "✅ PM2 process '$PM2_NAME_BACKEND' is running."
# G. Build & Deploy WEBSITE (Next.js SSR)
@@ -127,6 +127,8 @@ rsync -av \
rsync -av \
$TEMP_DIR/apps/website/.next/static/ $TARGET_WEBSITE/apps/website/.next/static/
cp ecosystem.config.js $TARGET_WEBSITE/
# F. Fix Permissions
echo ">>> Fixing Permissions..."
chown -R ti:ti $TARGET_BACKEND $TARGET_WEBSITE
@@ -135,12 +137,9 @@ chown -R ti:ti $TARGET_BACKEND $TARGET_WEBSITE
cd $TARGET_WEBSITE
echo ">>> Creating symlink for .next..."
ln -sf apps/website/.next .next
cd apps/website
echo ">>> Managing PM2 Process: $PM2_NAME_WEBSITE..."
$PM2 delete $PM2_NAME_WEBSITE 2>/dev/null || true
PORT=$SSR_PORT $PM2 start $BUN --name $PM2_NAME_WEBSITE \
-- server.js
echo "✅ PM2 process '$PM2_NAME_WEBSITE' is running on port $SSR_PORT."
$PM2 startOrReload $TARGET_WEBSITE/ecosystem.config.js --only $PM2_NAME_WEBSITE --env production
echo "✅ PM2 process '$PM2_NAME_WEBSITE' is running."
# I. Cleanup
echo "Cleaning up build artifacts..."