- Added complete Next.js frontend with responsive design - Added NestJS backend with PostgreSQL and Redis - Added comprehensive VPS deployment script (vps-deploy.sh) - Added deployment guide and documentation - Added all assets and static files - Configured SSL, Nginx, PM2, and monitoring - Ready for production deployment on any VPS
252 lines
5.6 KiB
Markdown
252 lines
5.6 KiB
Markdown
# 🚀 Laca City Website - VPS Deployment Guide
|
|
|
|
This guide will help you deploy your Laca City website to a VPS with a custom domain using a single script.
|
|
|
|
## 📋 Prerequisites
|
|
|
|
### VPS Requirements
|
|
- **OS**: Ubuntu 20.04+ or Debian 11+
|
|
- **RAM**: Minimum 2GB (4GB recommended)
|
|
- **Storage**: Minimum 20GB SSD
|
|
- **CPU**: 2+ cores recommended
|
|
- **Root/Sudo access**: Required
|
|
|
|
### Domain Requirements
|
|
- Domain name pointed to your VPS IP address
|
|
- DNS A record: `yourdomain.com` → `your-vps-ip`
|
|
- DNS A record: `www.yourdomain.com` → `your-vps-ip`
|
|
|
|
### Before You Start
|
|
- [ ] VPS is running Ubuntu/Debian
|
|
- [ ] You have SSH access to your VPS
|
|
- [ ] Domain DNS is properly configured
|
|
- [ ] You have a valid email address for SSL certificate
|
|
|
|
## 🎯 Quick Deployment
|
|
|
|
### Step 1: Upload Files to VPS
|
|
|
|
```bash
|
|
# Option 1: Using SCP
|
|
scp -r /path/to/your/project your-user@your-vps-ip:/home/your-user/
|
|
|
|
# Option 2: Using rsync
|
|
rsync -avz --progress /path/to/your/project/ your-user@your-vps-ip:/home/your-user/project/
|
|
|
|
# Option 3: Using Git (if your project is on GitHub)
|
|
git clone https://github.com/your-username/your-repo.git
|
|
```
|
|
|
|
### Step 2: Run the Deployment Script
|
|
|
|
```bash
|
|
# SSH into your VPS
|
|
ssh your-user@your-vps-ip
|
|
|
|
# Navigate to your project directory
|
|
cd /path/to/your/project
|
|
|
|
# Run the deployment script
|
|
./vps-deploy.sh
|
|
```
|
|
|
|
### Step 3: Follow the Interactive Setup
|
|
|
|
The script will ask you for:
|
|
- **Domain name**: e.g., `lacacity.com`
|
|
- **Email**: For SSL certificate (e.g., `admin@lacacity.com`)
|
|
- **Database password**: Leave empty to auto-generate
|
|
|
|
## 🛠️ What the Script Does
|
|
|
|
### System Setup
|
|
- ✅ Updates Ubuntu/Debian packages
|
|
- ✅ Installs Node.js 18.x and npm
|
|
- ✅ Installs PM2 process manager
|
|
- ✅ Configures UFW firewall
|
|
- ✅ Installs and configures Nginx
|
|
- ✅ Sets up Let's Encrypt SSL certificates
|
|
|
|
### Database Setup
|
|
- ✅ Installs and configures PostgreSQL
|
|
- ✅ Creates database and user
|
|
- ✅ Installs and configures Redis
|
|
|
|
### Application Deployment
|
|
- ✅ Installs frontend and backend dependencies
|
|
- ✅ Creates production environment files
|
|
- ✅ Builds Next.js frontend and NestJS backend
|
|
- ✅ Configures PM2 for process management
|
|
- ✅ Sets up Nginx reverse proxy
|
|
|
|
### Monitoring & Maintenance
|
|
- ✅ Sets up log rotation
|
|
- ✅ Creates automated backup scripts
|
|
- ✅ Configures SSL auto-renewal
|
|
- ✅ Creates deployment update scripts
|
|
|
|
## 🔧 Post-Deployment Commands
|
|
|
|
### Check Application Status
|
|
```bash
|
|
# View PM2 processes
|
|
pm2 list
|
|
pm2 monit
|
|
|
|
# View application logs
|
|
pm2 logs
|
|
|
|
# Check Nginx status
|
|
sudo systemctl status nginx
|
|
|
|
# Check database status
|
|
sudo systemctl status postgresql
|
|
```
|
|
|
|
### Application Management
|
|
```bash
|
|
# Restart applications
|
|
pm2 restart all
|
|
|
|
# Stop applications
|
|
pm2 stop all
|
|
|
|
# Reload Nginx configuration
|
|
sudo systemctl reload nginx
|
|
|
|
# View SSL certificate info
|
|
sudo certbot certificates
|
|
```
|
|
|
|
### Maintenance
|
|
```bash
|
|
# Manual backup
|
|
sudo /usr/local/bin/backup-laca-city
|
|
|
|
# Deploy updates (after uploading new code)
|
|
./deploy-update.sh
|
|
|
|
# View system resources
|
|
htop
|
|
```
|
|
|
|
## 🌐 Accessing Your Website
|
|
|
|
After successful deployment:
|
|
- **Website**: `https://yourdomain.com`
|
|
- **API**: `https://yourdomain.com/api`
|
|
- **SSL**: Automatically configured with Let's Encrypt
|
|
|
|
## 📁 Important File Locations
|
|
|
|
```
|
|
/var/www/laca-city/ # Main application directory
|
|
├── frontend/ # Next.js frontend
|
|
├── backend/ # NestJS backend
|
|
├── ecosystem.config.js # PM2 configuration
|
|
└── deploy-update.sh # Update deployment script
|
|
|
|
/etc/nginx/sites-available/laca-city # Nginx configuration
|
|
/var/log/pm2/ # Application logs
|
|
/var/backups/laca-city/ # Backup directory
|
|
```
|
|
|
|
## 🔒 Security Features
|
|
|
|
- ✅ HTTPS with automatic SSL renewal
|
|
- ✅ Firewall configured (UFW)
|
|
- ✅ Security headers in Nginx
|
|
- ✅ Database with encrypted password
|
|
- ✅ Environment variables for sensitive data
|
|
|
|
## 🚨 Troubleshooting
|
|
|
|
### Common Issues
|
|
|
|
**Domain not accessible:**
|
|
```bash
|
|
# Check DNS
|
|
nslookup yourdomain.com
|
|
|
|
# Check Nginx
|
|
sudo nginx -t
|
|
sudo systemctl status nginx
|
|
|
|
# Check SSL
|
|
sudo certbot certificates
|
|
```
|
|
|
|
**Applications not running:**
|
|
```bash
|
|
# Check PM2 status
|
|
pm2 list
|
|
pm2 logs
|
|
|
|
# Restart applications
|
|
pm2 restart all
|
|
```
|
|
|
|
**Database connection issues:**
|
|
```bash
|
|
# Check PostgreSQL
|
|
sudo systemctl status postgresql
|
|
|
|
# Test database connection
|
|
sudo -u postgres psql -d laca_city_db
|
|
```
|
|
|
|
### Getting Help
|
|
|
|
If you encounter issues:
|
|
1. Check the logs: `pm2 logs`
|
|
2. Verify all services are running
|
|
3. Check firewall settings: `sudo ufw status`
|
|
4. Verify DNS configuration
|
|
|
|
## 🔄 Updating Your Website
|
|
|
|
To deploy updates to your website:
|
|
|
|
1. Upload new files to VPS
|
|
2. Run the update script: `./deploy-update.sh`
|
|
|
|
The update script will:
|
|
- Create a backup
|
|
- Install new dependencies
|
|
- Rebuild applications
|
|
- Restart services
|
|
- Reload Nginx
|
|
|
|
## 💾 Backup & Recovery
|
|
|
|
### Automated Backups
|
|
- Daily backups at 2 AM
|
|
- Keeps 7 days of backups
|
|
- Location: `/var/backups/laca-city/`
|
|
|
|
### Manual Backup
|
|
```bash
|
|
sudo /usr/local/bin/backup-laca-city
|
|
```
|
|
|
|
### Restore from Backup
|
|
```bash
|
|
# Extract backup
|
|
cd /var/backups/laca-city
|
|
tar -xzf backup_YYYYMMDD_HHMMSS.tar.gz
|
|
|
|
# Restore database
|
|
sudo -u postgres psql -d laca_city_db < backup_YYYYMMDD_HHMMSS/database.sql
|
|
```
|
|
|
|
## 📞 Support
|
|
|
|
For additional support or questions about the deployment process, please check:
|
|
- Application logs: `pm2 logs`
|
|
- System logs: `sudo journalctl -f`
|
|
- Nginx logs: `sudo tail -f /var/log/nginx/error.log`
|
|
|
|
---
|
|
|
|
**🎉 Congratulations! Your Laca City website is now live and running on your VPS with a custom domain and SSL certificate!**
|