chore: migrate PM2 processes to ecosystem.config.js and add deploy safety checks
This commit is contained in:
1 parent
10c614fc8c
commit
f5b48433d1
3 files changed
+55
-32
No files matched your search
@@ -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
@@ -82,7 +82,7 @@ rsync -av --delete \
|
|||||||
# Sync Shared Packages
|
# Sync Shared Packages
|
||||||
rsync -av packages/ $TARGET_BACKEND/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
|
cd $TARGET_BACKEND
|
||||||
echo "Installing backend dependencies..."
|
echo "Installing backend dependencies..."
|
||||||
@@ -98,21 +98,19 @@ echo ">>> Generating Prisma Client..."
|
|||||||
$BUN x prisma generate
|
$BUN x prisma generate
|
||||||
|
|
||||||
# E. Database Migration (Safe Method)
|
# E. Database Migration (Safe Method)
|
||||||
if [ -f "$TARGET_BACKEND/.env" ]; then
|
if [ ! -f "$TARGET_BACKEND/.env" ]; then
|
||||||
# Copy .env to apps/backend so Prisma and the app can find it
|
echo "❌ Error: .env file is missing at $TARGET_BACKEND/.env. Deployment aborted."
|
||||||
cp "$TARGET_BACKEND/.env" "$TARGET_BACKEND/apps/backend/.env"
|
exit 1
|
||||||
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."
|
|
||||||
fi
|
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
|
# F. PM2 Management - BACKEND
|
||||||
echo ">>> Managing PM2 Process: $PM2_NAME_BACKEND..."
|
echo ">>> Managing PM2 Process: $PM2_NAME_BACKEND..."
|
||||||
$PM2 restart $PM2_NAME_BACKEND 2>/dev/null || \
|
$PM2 startOrReload $TARGET_BACKEND/ecosystem.config.js --only $PM2_NAME_BACKEND --env production
|
||||||
$PM2 start $TARGET_BACKEND/apps/backend/src/index.ts --name $PM2_NAME_BACKEND --interpreter $BUN
|
|
||||||
echo "✅ PM2 process '$PM2_NAME_BACKEND' is running."
|
echo "✅ PM2 process '$PM2_NAME_BACKEND' is running."
|
||||||
|
|
||||||
# G. Build & Deploy WEBSITE (Next.js SSR)
|
# G. Build & Deploy WEBSITE (Next.js SSR)
|
||||||
@@ -129,6 +127,8 @@ rsync -av \
|
|||||||
rsync -av \
|
rsync -av \
|
||||||
$TEMP_DIR/apps/website/.next/static/ $TARGET_WEBSITE/apps/website/.next/static/
|
$TEMP_DIR/apps/website/.next/static/ $TARGET_WEBSITE/apps/website/.next/static/
|
||||||
|
|
||||||
|
cp ecosystem.config.js $TARGET_WEBSITE/
|
||||||
|
|
||||||
# F. Fix Permissions
|
# F. Fix Permissions
|
||||||
echo ">>> Fixing Permissions..."
|
echo ">>> Fixing Permissions..."
|
||||||
chown -R ti:ti $TARGET_BACKEND $TARGET_WEBSITE
|
chown -R ti:ti $TARGET_BACKEND $TARGET_WEBSITE
|
||||||
@@ -137,12 +137,9 @@ chown -R ti:ti $TARGET_BACKEND $TARGET_WEBSITE
|
|||||||
cd $TARGET_WEBSITE
|
cd $TARGET_WEBSITE
|
||||||
echo ">>> Creating symlink for .next..."
|
echo ">>> Creating symlink for .next..."
|
||||||
ln -sf apps/website/.next .next
|
ln -sf apps/website/.next .next
|
||||||
cd apps/website
|
|
||||||
echo ">>> Managing PM2 Process: $PM2_NAME_WEBSITE..."
|
echo ">>> Managing PM2 Process: $PM2_NAME_WEBSITE..."
|
||||||
$PM2 delete $PM2_NAME_WEBSITE 2>/dev/null || true
|
$PM2 startOrReload $TARGET_WEBSITE/ecosystem.config.js --only $PM2_NAME_WEBSITE --env production
|
||||||
PORT=$SSR_PORT $PM2 start $BUN --name $PM2_NAME_WEBSITE \
|
echo "✅ PM2 process '$PM2_NAME_WEBSITE' is running."
|
||||||
-- server.js
|
|
||||||
echo "✅ PM2 process '$PM2_NAME_WEBSITE' is running on port $SSR_PORT."
|
|
||||||
|
|
||||||
# I. Cleanup
|
# I. Cleanup
|
||||||
echo "Cleaning up build artifacts..."
|
echo "Cleaning up build artifacts..."
|
||||||
|
|||||||
+14
-15
@@ -82,7 +82,7 @@ rsync -av --delete \
|
|||||||
# Sync Shared Packages
|
# Sync Shared Packages
|
||||||
rsync -av packages/ $TARGET_BACKEND/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
|
cd $TARGET_BACKEND
|
||||||
echo "Installing backend dependencies..."
|
echo "Installing backend dependencies..."
|
||||||
@@ -98,19 +98,19 @@ echo ">>> Generating Prisma Client..."
|
|||||||
$BUN x prisma generate
|
$BUN x prisma generate
|
||||||
|
|
||||||
# E. Database Migration (Safe Method)
|
# E. Database Migration (Safe Method)
|
||||||
if [ -f "$TARGET_BACKEND/.env" ]; then
|
if [ ! -f "$TARGET_BACKEND/.env" ]; then
|
||||||
echo ">>> Running Prisma Migrate Deploy..."
|
echo "❌ Error: .env file is missing at $TARGET_BACKEND/.env. Deployment aborted."
|
||||||
$BUN x prisma migrate deploy
|
exit 1
|
||||||
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."
|
|
||||||
fi
|
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
|
# F. PM2 Management - BACKEND
|
||||||
echo ">>> Managing PM2 Process: $PM2_NAME_BACKEND..."
|
echo ">>> Managing PM2 Process: $PM2_NAME_BACKEND..."
|
||||||
$PM2 restart $PM2_NAME_BACKEND 2>/dev/null || \
|
$PM2 startOrReload $TARGET_BACKEND/ecosystem.config.js --only $PM2_NAME_BACKEND --env production
|
||||||
$PM2 start $TARGET_BACKEND/apps/backend/src/index.ts --name $PM2_NAME_BACKEND --interpreter $BUN
|
|
||||||
echo "✅ PM2 process '$PM2_NAME_BACKEND' is running."
|
echo "✅ PM2 process '$PM2_NAME_BACKEND' is running."
|
||||||
|
|
||||||
# G. Build & Deploy WEBSITE (Next.js SSR)
|
# G. Build & Deploy WEBSITE (Next.js SSR)
|
||||||
@@ -127,6 +127,8 @@ rsync -av \
|
|||||||
rsync -av \
|
rsync -av \
|
||||||
$TEMP_DIR/apps/website/.next/static/ $TARGET_WEBSITE/apps/website/.next/static/
|
$TEMP_DIR/apps/website/.next/static/ $TARGET_WEBSITE/apps/website/.next/static/
|
||||||
|
|
||||||
|
cp ecosystem.config.js $TARGET_WEBSITE/
|
||||||
|
|
||||||
# F. Fix Permissions
|
# F. Fix Permissions
|
||||||
echo ">>> Fixing Permissions..."
|
echo ">>> Fixing Permissions..."
|
||||||
chown -R ti:ti $TARGET_BACKEND $TARGET_WEBSITE
|
chown -R ti:ti $TARGET_BACKEND $TARGET_WEBSITE
|
||||||
@@ -135,12 +137,9 @@ chown -R ti:ti $TARGET_BACKEND $TARGET_WEBSITE
|
|||||||
cd $TARGET_WEBSITE
|
cd $TARGET_WEBSITE
|
||||||
echo ">>> Creating symlink for .next..."
|
echo ">>> Creating symlink for .next..."
|
||||||
ln -sf apps/website/.next .next
|
ln -sf apps/website/.next .next
|
||||||
cd apps/website
|
|
||||||
echo ">>> Managing PM2 Process: $PM2_NAME_WEBSITE..."
|
echo ">>> Managing PM2 Process: $PM2_NAME_WEBSITE..."
|
||||||
$PM2 delete $PM2_NAME_WEBSITE 2>/dev/null || true
|
$PM2 startOrReload $TARGET_WEBSITE/ecosystem.config.js --only $PM2_NAME_WEBSITE --env production
|
||||||
PORT=$SSR_PORT $PM2 start $BUN --name $PM2_NAME_WEBSITE \
|
echo "✅ PM2 process '$PM2_NAME_WEBSITE' is running."
|
||||||
-- server.js
|
|
||||||
echo "✅ PM2 process '$PM2_NAME_WEBSITE' is running on port $SSR_PORT."
|
|
||||||
|
|
||||||
# I. Cleanup
|
# I. Cleanup
|
||||||
echo "Cleaning up build artifacts..."
|
echo "Cleaning up build artifacts..."
|
||||||
|
|||||||
Reference in new issue
Block a user