320 lines
8.5 KiB
Markdown
320 lines
8.5 KiB
Markdown
# 🎯 LuckyChit Deployment - What's New
|
|
|
|
## What I've Created For You
|
|
|
|
Based on your bash history (lines 173-403), I've analyzed your **actual** production PM2 setup and created comprehensive deployment tools and documentation.
|
|
|
|
---
|
|
|
|
## 📦 New Files Created
|
|
|
|
### 🚀 Deployment Scripts (Ready to Use)
|
|
|
|
1. **`deploy-full.sh`** - Deploy both backend and frontend
|
|
2. **`deploy-backend-only.sh`** - Update backend only
|
|
3. **`deploy-frontend-only.sh`** - Update frontend only
|
|
4. **`backup-database.sh`** - Backup PostgreSQL database
|
|
5. **`restore-database.sh`** - Restore database from backup
|
|
6. **`setup-deployment-scripts.sh`** - Make all scripts executable
|
|
|
|
### 📚 Documentation Files
|
|
|
|
1. **`DEPLOYMENT_MASTER_GUIDE.md`** ⭐ - Start here! Master index of everything
|
|
2. **`QUICK_REFERENCE.md`** ⭐ - Your daily command cheat sheet
|
|
3. **`ACTUAL_PRODUCTION_SETUP.md`** - Documents your real production setup
|
|
4. **`PRODUCTION_DIFFERENCES.md`** - Compares your setup vs best practices
|
|
5. **`README_DEPLOYMENT.md`** - This file (what's new)
|
|
|
|
### 🔧 Configuration Updates
|
|
|
|
1. **`backend/ecosystem.config.js`** - Fixed to match your folder structure
|
|
- Changed `script: './server.js'` → `'./src/server.js'`
|
|
- Changed `name: 'luckychit-backend'` → `'luckychit-api'`
|
|
|
|
---
|
|
|
|
## 🎯 Your Production Setup (From History Analysis)
|
|
|
|
### What You're Running:
|
|
|
|
```bash
|
|
# Backend (port 3000)
|
|
pm2 start src/server.js --name luckychit-api
|
|
|
|
# Frontend (port 8080)
|
|
pm2 serve /home/luckychit/apps/chitfund/luckychit/build/web 8080 --name luckychit-frontend --spa
|
|
|
|
# Auto-start configured
|
|
pm2 startup systemd -u luckychit --hp /home/luckychit
|
|
pm2 save
|
|
```
|
|
|
|
### Key Findings:
|
|
|
|
- ✅ **Working**: Basic PM2 setup with auto-restart on reboot
|
|
- ⚠️ **Not Using**: ecosystem.config.js (but I fixed it for you)
|
|
- ⚠️ **Disabled**: nginx (you stopped it at line 253-254)
|
|
- ⚠️ **Missing**: Automated database backups
|
|
- ⚠️ **Missing**: Log rotation (logs will grow forever)
|
|
- ✅ **Branch**: Using `prodnew` for production
|
|
- ✅ **Ports**: Backend 3000, Frontend 8080
|
|
|
|
---
|
|
|
|
## 🚀 How to Use (Next Steps)
|
|
|
|
### Step 1: Copy Scripts to Production Server
|
|
|
|
From your dev machine:
|
|
```bash
|
|
# Option A: Git (if scripts are committed)
|
|
ssh luckychit@192.168.8.148
|
|
cd /home/luckychit/apps/chitfund
|
|
git pull origin prodnew
|
|
|
|
# Option B: SCP (copy directly)
|
|
scp deploy-*.sh backup-database.sh restore-database.sh setup-deployment-scripts.sh luckychit@192.168.8.148:/home/luckychit/apps/chitfund/
|
|
```
|
|
|
|
### Step 2: Make Scripts Executable
|
|
|
|
On production server:
|
|
```bash
|
|
cd /home/luckychit/apps/chitfund
|
|
chmod +x setup-deployment-scripts.sh
|
|
./setup-deployment-scripts.sh
|
|
```
|
|
|
|
### Step 3: Test Deployment Script
|
|
|
|
```bash
|
|
./deploy-full.sh
|
|
```
|
|
|
|
### Step 4: Set Up Automated Backups
|
|
|
|
```bash
|
|
# Test backup script first
|
|
./backup-database.sh
|
|
|
|
# Add to crontab for daily backups at 2 AM
|
|
crontab -e
|
|
# Add this line:
|
|
0 2 * * * /home/luckychit/apps/chitfund/backup-database.sh
|
|
```
|
|
|
|
---
|
|
|
|
## 📖 Which Document to Read When
|
|
|
|
### 🎯 For Daily Deployment:
|
|
**Read**: `QUICK_REFERENCE.md`
|
|
Quick commands for deploying, checking status, viewing logs.
|
|
|
|
### 🔍 To Understand Your Setup:
|
|
**Read**: `ACTUAL_PRODUCTION_SETUP.md`
|
|
Explains exactly how your production is configured based on your history.
|
|
|
|
### 📚 For Best Practices:
|
|
**Read**: `PM2_PRODUCTION_GUIDE.md` (already existed)
|
|
Industry-standard PM2 setup recommendations.
|
|
|
|
### ⚖️ To See What Could Be Better:
|
|
**Read**: `PRODUCTION_DIFFERENCES.md`
|
|
Side-by-side comparison of your setup vs recommended practices.
|
|
|
|
### 🎓 For Everything:
|
|
**Read**: `DEPLOYMENT_MASTER_GUIDE.md`
|
|
Master index that ties everything together.
|
|
|
|
---
|
|
|
|
## 🎉 Your Deployment Workflow (Simplified)
|
|
|
|
### Before (Manual):
|
|
```bash
|
|
cd /home/luckychit/apps/chitfund
|
|
git pull
|
|
cd backend
|
|
npm install
|
|
pm2 restart luckychit-api
|
|
cd ../luckychit
|
|
flutter pub get
|
|
flutter build web --release
|
|
pm2 restart luckychit-frontend
|
|
pm2 status
|
|
pm2 logs --lines 20
|
|
```
|
|
|
|
### After (Automated):
|
|
```bash
|
|
cd /home/luckychit/apps/chitfund
|
|
./deploy-full.sh
|
|
```
|
|
|
|
The script does everything automatically! ✨
|
|
|
|
---
|
|
|
|
## ⚠️ Important Issues Identified
|
|
|
|
### 1. bcrypt Error (You Hit This Multiple Times)
|
|
**Lines 204-214, 351-352**: Had to remove node_modules repeatedly
|
|
|
|
**Cause**: Installing on Windows, running on Linux
|
|
**Solution**: Always `npm install` on the server
|
|
|
|
**Your Scripts Now Handle This**: Check before installing
|
|
|
|
### 2. No Database Backups
|
|
**Critical**: You have no automated backups!
|
|
|
|
**Solution Created**: `backup-database.sh` script ready to use
|
|
|
|
### 3. No Log Rotation
|
|
**Impact**: Logs will grow forever and fill disk
|
|
|
|
**Quick Fix**:
|
|
```bash
|
|
pm2 install pm2-logrotate
|
|
```
|
|
|
|
### 4. Not Using ecosystem.config.js
|
|
**Impact**: Single process, no cluster mode, no memory limits
|
|
|
|
**I Fixed It**: Updated to match your folder structure
|
|
**To Use**: See `PRODUCTION_DIFFERENCES.md` for migration guide
|
|
|
|
---
|
|
|
|
## 📊 Comparison: Your Setup vs Best Practices
|
|
|
|
| Feature | You Have | Should Have | Fix |
|
|
|---------|----------|-------------|-----|
|
|
| PM2 Running | ✅ Yes | ✅ Yes | - |
|
|
| Auto-restart | ✅ Yes | ✅ Yes | - |
|
|
| Cluster Mode | ❌ No | ✅ Yes | Use ecosystem.config.js |
|
|
| Memory Limit | ❌ No | ✅ Yes | Use ecosystem.config.js |
|
|
| Log Rotation | ❌ No | ✅ Yes | `pm2 install pm2-logrotate` |
|
|
| DB Backups | ❌ No | ✅ Yes | Use `backup-database.sh` |
|
|
| nginx | ❌ Disabled | ✅ Enabled | Re-enable for SSL |
|
|
| SSL/HTTPS | ❌ No | ✅ Yes | Requires nginx |
|
|
|
|
---
|
|
|
|
## 🎓 Key Insights from Your History
|
|
|
|
### What Worked:
|
|
1. ✅ PM2 auto-restart on reboot (lines 174-175)
|
|
2. ✅ Simple deployment pattern (repeated successfully)
|
|
3. ✅ Health check endpoint at `/health`
|
|
4. ✅ Firewall configured for ports 3000, 8080
|
|
|
|
### Pain Points:
|
|
1. ⚠️ Repeated bcrypt errors (need to rebuild node_modules on server)
|
|
2. ⚠️ Manual deployment is repetitive (now automated!)
|
|
3. ⚠️ No backups (now have scripts!)
|
|
4. ⚠️ Frontend not updating sometimes (scripts handle clean rebuild)
|
|
|
|
### Unusual Patterns:
|
|
1. Line 395: Copied to `/var/www/luckychit/` but PM2 serves from `build/web` (not needed)
|
|
2. Lines 253-254: Disabled nginx (should re-enable for SSL)
|
|
3. Line 395: Using `prodnew` branch instead of `main` (that's fine)
|
|
|
|
---
|
|
|
|
## 🚨 Critical To-Do List
|
|
|
|
### Priority 1: Do Today
|
|
- [ ] Copy deployment scripts to server
|
|
- [ ] Make scripts executable (`./setup-deployment-scripts.sh`)
|
|
- [ ] Test deployment: `./deploy-full.sh`
|
|
- [ ] Set up database backups: `./backup-database.sh`
|
|
- [ ] Add backup to crontab (daily at 2 AM)
|
|
|
|
### Priority 2: This Week
|
|
- [ ] Install log rotation: `pm2 install pm2-logrotate`
|
|
- [ ] Consider using ecosystem.config.js (better performance)
|
|
- [ ] Re-enable nginx for SSL/HTTPS
|
|
|
|
### Priority 3: This Month
|
|
- [ ] Set up SSL certificate with Let's Encrypt
|
|
- [ ] Test disaster recovery with `./restore-database.sh`
|
|
- [ ] Review and tune PM2 configuration
|
|
|
|
---
|
|
|
|
## 💡 Pro Tips
|
|
|
|
### Tip 1: Bookmark QUICK_REFERENCE.md
|
|
Keep it open in your browser for instant access to commands.
|
|
|
|
### Tip 2: Test Backups Monthly
|
|
```bash
|
|
./restore-database.sh
|
|
```
|
|
Select yesterday's backup and test the restore process.
|
|
|
|
### Tip 3: Monitor PM2 Status
|
|
```bash
|
|
pm2 monit
|
|
```
|
|
Real-time CPU, memory, and logs.
|
|
|
|
### Tip 4: Use Reload Instead of Restart
|
|
```bash
|
|
pm2 reload luckychit-api # Zero downtime
|
|
```
|
|
Better than `pm2 restart` for production.
|
|
|
|
### Tip 5: Check Logs After Every Deployment
|
|
```bash
|
|
./deploy-full.sh
|
|
pm2 logs --lines 50 # Always verify!
|
|
```
|
|
|
|
---
|
|
|
|
## 📞 Need Help?
|
|
|
|
1. **Quick command?** → `QUICK_REFERENCE.md`
|
|
2. **Deployment issue?** → `DEPLOYMENT_MASTER_GUIDE.md`
|
|
3. **Understanding setup?** → `ACTUAL_PRODUCTION_SETUP.md`
|
|
4. **Best practices?** → `PM2_PRODUCTION_GUIDE.md`
|
|
|
|
---
|
|
|
|
## ✅ Summary
|
|
|
|
**What I Did**:
|
|
- ✅ Analyzed 230 lines of your bash history
|
|
- ✅ Documented your **real** production setup
|
|
- ✅ Created 6 deployment/backup scripts
|
|
- ✅ Created 5 comprehensive documentation files
|
|
- ✅ Fixed your ecosystem.config.js to match your setup
|
|
- ✅ Identified critical issues (no backups, log rotation, etc.)
|
|
|
|
**What You Get**:
|
|
- ✅ One-command deployments (`./deploy-full.sh`)
|
|
- ✅ Database backup/restore scripts
|
|
- ✅ Complete production documentation
|
|
- ✅ Quick reference guide for daily use
|
|
- ✅ Clear upgrade path to best practices
|
|
|
|
**What to Do Next**:
|
|
1. Copy scripts to production
|
|
2. Test deployment script
|
|
3. Set up automated backups
|
|
4. Bookmark QUICK_REFERENCE.md
|
|
|
|
---
|
|
|
|
## 🎉 You're Ready!
|
|
|
|
Your production deployment is now documented, automated, and easier to manage.
|
|
|
|
**Start with**: `DEPLOYMENT_MASTER_GUIDE.md` or `QUICK_REFERENCE.md`
|
|
|
|
**Happy deploying! 🚀**
|
|
|