259 lines
6.1 KiB
Markdown
259 lines
6.1 KiB
Markdown
|
|
# Quick Migration to Ubuntu Server
|
|||
|
|
|
|||
|
|
## Summary
|
|||
|
|
|
|||
|
|
Your Church Song Lyric application is now ready to migrate to Ubuntu server. All necessary files have been created.
|
|||
|
|
|
|||
|
|
## What's Been Created
|
|||
|
|
|
|||
|
|
### 📄 Documentation
|
|||
|
|
|
|||
|
|
- **UBUNTU_DEPLOYMENT_GUIDE.md** - Complete step-by-step deployment guide
|
|||
|
|
|
|||
|
|
### 🔧 Scripts
|
|||
|
|
|
|||
|
|
- **ubuntu-setup.sh** - Automated installation script (run first)
|
|||
|
|
- **ubuntu-deploy.sh** - Quick deployment script (for updates)
|
|||
|
|
- **ubuntu-services.sh** - Service management script
|
|||
|
|
|
|||
|
|
### ⚙️ Configuration Files
|
|||
|
|
|
|||
|
|
- **church-songlyric-backend.service** - Systemd service for backend
|
|||
|
|
- **nginx-church-songlyric.conf** - Nginx HTTP configuration
|
|||
|
|
- **nginx-church-songlyric-ssl.conf** - Nginx HTTPS configuration
|
|||
|
|
- **backend/.env.ubuntu** - Backend environment template
|
|||
|
|
- **frontend/.env.ubuntu** - Frontend environment template
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Quick Start (3 Steps)
|
|||
|
|
|
|||
|
|
### 1️⃣ Transfer Files to Ubuntu Server
|
|||
|
|
|
|||
|
|
From your Windows machine (PowerShell):
|
|||
|
|
|
|||
|
|
```powershell
|
|||
|
|
# Replace with your server details
|
|||
|
|
scp -r "E:\Documents\Website Projects\Church_SongLyric" username@your-server-ip:/tmp/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Or use WinSCP/FileZilla to transfer the entire folder.
|
|||
|
|
|
|||
|
|
### 2️⃣ Run Setup Script on Ubuntu
|
|||
|
|
|
|||
|
|
SSH into your Ubuntu server, then:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Move files to installation directory
|
|||
|
|
sudo mv /tmp/Church_SongLyric /var/www/church-songlyric
|
|||
|
|
cd /var/www/church-songlyric
|
|||
|
|
|
|||
|
|
# Make scripts executable
|
|||
|
|
chmod +x ubuntu-setup.sh ubuntu-deploy.sh ubuntu-services.sh
|
|||
|
|
|
|||
|
|
# Run the setup script
|
|||
|
|
./ubuntu-setup.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
The script will:
|
|||
|
|
|
|||
|
|
- Install all dependencies (Python, Node.js, Nginx, etc.)
|
|||
|
|
- Create virtual environment
|
|||
|
|
- Build the frontend
|
|||
|
|
- Configure Nginx
|
|||
|
|
- Create systemd services
|
|||
|
|
- Set up firewall
|
|||
|
|
|
|||
|
|
### 3️⃣ Configure and Start
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Copy and edit environment file
|
|||
|
|
cd /var/www/church-songlyric/backend
|
|||
|
|
cp .env.ubuntu .env
|
|||
|
|
nano .env
|
|||
|
|
# Add your MongoDB URI and other settings
|
|||
|
|
|
|||
|
|
# Start services
|
|||
|
|
sudo systemctl daemon-reload
|
|||
|
|
sudo systemctl enable church-songlyric-backend
|
|||
|
|
sudo systemctl start church-songlyric-backend
|
|||
|
|
sudo systemctl restart nginx
|
|||
|
|
|
|||
|
|
# Check status
|
|||
|
|
./ubuntu-services.sh status
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Access Your Application
|
|||
|
|
|
|||
|
|
- **HTTP**: `http://your-server-ip` or `http://your-domain.com`
|
|||
|
|
- **HTTPS** (after SSL setup): `https://your-domain.com`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Optional: Enable HTTPS
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Install Certbot
|
|||
|
|
sudo apt install certbot python3-certbot-nginx -y
|
|||
|
|
|
|||
|
|
# Get SSL certificate (replace with your domain)
|
|||
|
|
sudo certbot --nginx -d your-domain.com -d www.your-domain.com
|
|||
|
|
|
|||
|
|
# Auto-renewal is configured automatically
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Useful Commands
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Service management
|
|||
|
|
./ubuntu-services.sh start # Start all services
|
|||
|
|
./ubuntu-services.sh stop # Stop all services
|
|||
|
|
./ubuntu-services.sh restart # Restart all services
|
|||
|
|
./ubuntu-services.sh status # Check status
|
|||
|
|
./ubuntu-services.sh logs # View live logs
|
|||
|
|
|
|||
|
|
# Manual service commands
|
|||
|
|
sudo systemctl status church-songlyric-backend
|
|||
|
|
sudo systemctl restart church-songlyric-backend
|
|||
|
|
sudo systemctl restart nginx
|
|||
|
|
|
|||
|
|
# View logs
|
|||
|
|
sudo journalctl -u church-songlyric-backend -f
|
|||
|
|
sudo tail -f /var/log/nginx/error.log
|
|||
|
|
|
|||
|
|
# Update application
|
|||
|
|
cd /var/www/church-songlyric
|
|||
|
|
git pull # if using git
|
|||
|
|
./ubuntu-deploy.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## MongoDB Setup
|
|||
|
|
|
|||
|
|
You need MongoDB for the application to work. Two options:
|
|||
|
|
|
|||
|
|
### Option A: MongoDB Atlas (Recommended)
|
|||
|
|
|
|||
|
|
1. Sign up at [https://www.mongodb.com/cloud/atlas/register](https://www.mongodb.com/cloud/atlas/register)
|
|||
|
|
2. Create a FREE M0 cluster
|
|||
|
|
3. Add your server's IP to IP whitelist (or 0.0.0.0/0 for all IPs)
|
|||
|
|
4. Create a database user
|
|||
|
|
5. Get connection string and add to `/var/www/church-songlyric/backend/.env`
|
|||
|
|
|
|||
|
|
Example:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
MONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/songlyric?retryWrites=true&w=majority
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Option B: Local MongoDB
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Install MongoDB on Ubuntu
|
|||
|
|
sudo apt install mongodb -y
|
|||
|
|
sudo systemctl start mongodb
|
|||
|
|
sudo systemctl enable mongodb
|
|||
|
|
|
|||
|
|
# Use local connection string
|
|||
|
|
MONGODB_URI=mongodb://localhost:27017/songlyric
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Migrate Existing Data
|
|||
|
|
|
|||
|
|
If you have an existing SQLite database (`app.db`):
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Copy app.db to server backend folder
|
|||
|
|
cd /var/www/church-songlyric/backend
|
|||
|
|
source venv/bin/activate
|
|||
|
|
python migrate_to_mongodb.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Troubleshooting
|
|||
|
|
|
|||
|
|
### Backend won't start
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
sudo journalctl -u church-songlyric-backend -n 50
|
|||
|
|
cd /var/www/church-songlyric/backend
|
|||
|
|
source venv/bin/activate
|
|||
|
|
python app.py # Test manually
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Nginx errors
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
sudo nginx -t # Test configuration
|
|||
|
|
sudo tail -f /var/log/nginx/error.log
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### MongoDB connection issues
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd /var/www/church-songlyric/backend
|
|||
|
|
source venv/bin/activate
|
|||
|
|
python -c "from mongodb_models import get_db; db = get_db(); print('Connected:', db.name)"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Port already in use
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
sudo netstat -tulpn | grep 5000
|
|||
|
|
sudo lsof -i :5000
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Permission errors
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
sudo chown -R www-data:www-data /var/www/church-songlyric
|
|||
|
|
sudo chmod -R 755 /var/www/church-songlyric
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Security Checklist
|
|||
|
|
|
|||
|
|
- [ ] Change default passwords in `.env`
|
|||
|
|
- [ ] Set strong `SECRET_KEY` in `.env`
|
|||
|
|
- [ ] Configure firewall (only ports 22, 80, 443)
|
|||
|
|
- [ ] Enable HTTPS with Let's Encrypt
|
|||
|
|
- [ ] Restrict MongoDB IP whitelist
|
|||
|
|
- [ ] Use SSH keys instead of passwords
|
|||
|
|
- [ ] Keep system updated: `sudo apt update && sudo apt upgrade -y`
|
|||
|
|
- [ ] Set up automatic backups for MongoDB
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Support Files Location
|
|||
|
|
|
|||
|
|
All configuration files are in your project root:
|
|||
|
|
|
|||
|
|
- `/var/www/church-songlyric/UBUNTU_DEPLOYMENT_GUIDE.md` - Full guide
|
|||
|
|
- `/var/www/church-songlyric/ubuntu-setup.sh` - Setup script
|
|||
|
|
- `/var/www/church-songlyric/ubuntu-services.sh` - Service manager
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Next Steps After Deployment
|
|||
|
|
|
|||
|
|
1. ✅ Test the application thoroughly
|
|||
|
|
2. ✅ Set up HTTPS with Certbot
|
|||
|
|
3. ✅ Configure automatic backups
|
|||
|
|
4. ✅ Set up monitoring (optional)
|
|||
|
|
5. ✅ Document your server credentials securely
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**You're all set! Your Church Song Lyric system is ready for Ubuntu deployment.** 🎉
|
|||
|
|
|
|||
|
|
For detailed instructions, see **UBUNTU_DEPLOYMENT_GUIDE.md**
|