231 lines
4.7 KiB
Markdown
231 lines
4.7 KiB
Markdown
|
|
# Quick Start - PostgreSQL Migration to Ubuntu Server
|
||
|
|
|
||
|
|
## What's Changed
|
||
|
|
|
||
|
|
✅ **Port**: Changed from 5000 to **5100**
|
||
|
|
✅ **Database**: Switched from MongoDB to **PostgreSQL**
|
||
|
|
✅ **Server**: Configured for **192.168.10.130**
|
||
|
|
|
||
|
|
## Files Created/Updated
|
||
|
|
|
||
|
|
### New Files
|
||
|
|
|
||
|
|
- `backend/postgresql_models.py` - PostgreSQL database models
|
||
|
|
- `backend/migrate_to_postgresql.py` - Migration script
|
||
|
|
- `POSTGRESQL_DEPLOYMENT_GUIDE.md` - Complete deployment guide
|
||
|
|
- `ubuntu-setup-postgresql.sh` - Automated setup script
|
||
|
|
|
||
|
|
### Updated Files
|
||
|
|
|
||
|
|
- `backend/requirements.txt` - Now uses SQLAlchemy and psycopg2-binary
|
||
|
|
- `backend/.env` - Updated for PostgreSQL and port 5100
|
||
|
|
- `backend/.env.example` - Updated template
|
||
|
|
- `backend/.env.ubuntu` - Ubuntu deployment config
|
||
|
|
- `backend/app.py` - Updated imports (need to complete routes conversion)
|
||
|
|
- `frontend/package.json` - Proxy updated to port 5100
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🚀 Quick Deployment Steps
|
||
|
|
|
||
|
|
### 1. SSH to Ubuntu Server
|
||
|
|
|
||
|
|
```powershell
|
||
|
|
# From Windows
|
||
|
|
ssh username@192.168.10.130
|
||
|
|
```
|
||
|
|
|
||
|
|
### 2. Transfer Files
|
||
|
|
|
||
|
|
```powershell
|
||
|
|
# From Windows PowerShell (in another window)
|
||
|
|
scp -r "E:\Documents\Website Projects\Church_SongLyric" username@192.168.10.130:/tmp/
|
||
|
|
```
|
||
|
|
|
||
|
|
### 3. Run Setup Script on Ubuntu
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# On Ubuntu server
|
||
|
|
sudo mv /tmp/Church_SongLyric /var/www/church-songlyric
|
||
|
|
cd /var/www/church-songlyric
|
||
|
|
chmod +x ubuntu-setup-postgresql.sh
|
||
|
|
./ubuntu-setup-postgresql.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
The script will:
|
||
|
|
|
||
|
|
- Install PostgreSQL
|
||
|
|
- Create database and user
|
||
|
|
- Install all dependencies
|
||
|
|
- Migrate your data
|
||
|
|
- Configure services
|
||
|
|
- Start everything
|
||
|
|
|
||
|
|
### 4. Access Application
|
||
|
|
|
||
|
|
Open browser to: `http://192.168.10.130`
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📋 Before You Start
|
||
|
|
|
||
|
|
### On Windows (Local Machine)
|
||
|
|
|
||
|
|
1. **Update Python dependencies**:
|
||
|
|
|
||
|
|
```powershell
|
||
|
|
cd "E:\Documents\Website Projects\Church_SongLyric\backend"
|
||
|
|
.\venv\Scripts\activate
|
||
|
|
pip install -r requirements.txt
|
||
|
|
```
|
||
|
|
|
||
|
|
2. **Test migration locally** (optional):
|
||
|
|
|
||
|
|
```powershell
|
||
|
|
# Install PostgreSQL on Windows first, then:
|
||
|
|
python migrate_to_postgresql.py
|
||
|
|
```
|
||
|
|
|
||
|
|
3. **Test backend locally**:
|
||
|
|
|
||
|
|
```powershell
|
||
|
|
python app.py
|
||
|
|
# Should start on port 5100
|
||
|
|
```
|
||
|
|
|
||
|
|
4. **Update frontend**:
|
||
|
|
|
||
|
|
```powershell
|
||
|
|
cd ..\frontend
|
||
|
|
npm install
|
||
|
|
npm start
|
||
|
|
# Should proxy to port 5100
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🔧 Manual Setup (if not using script)
|
||
|
|
|
||
|
|
See **POSTGRESQL_DEPLOYMENT_GUIDE.md** for step-by-step manual installation.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## ⚠️ Important Notes
|
||
|
|
|
||
|
|
### PostgreSQL Connection String Format
|
||
|
|
|
||
|
|
```
|
||
|
|
postgresql://username:password@host:port/database
|
||
|
|
```
|
||
|
|
|
||
|
|
Example:
|
||
|
|
|
||
|
|
```
|
||
|
|
POSTGRESQL_URI=postgresql://songlyric_user:MySecurePass123@192.168.10.130:5432/church_songlyric
|
||
|
|
```
|
||
|
|
|
||
|
|
### Port 5100 Usage
|
||
|
|
|
||
|
|
The backend now runs on **port 5100** instead of 5000. Update any:
|
||
|
|
|
||
|
|
- Firewall rules
|
||
|
|
- API endpoint references
|
||
|
|
- Mobile device configurations
|
||
|
|
- External access configurations
|
||
|
|
|
||
|
|
### Database Migration
|
||
|
|
|
||
|
|
Your existing data from `data.json` will be automatically migrated to PostgreSQL during setup.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🛠️ Troubleshooting
|
||
|
|
|
||
|
|
### Can't connect to PostgreSQL
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Test connection
|
||
|
|
psql -h 192.168.10.130 -U songlyric_user -d church_songlyric
|
||
|
|
|
||
|
|
# Check if PostgreSQL is listening
|
||
|
|
sudo netstat -tulpn | grep 5432
|
||
|
|
```
|
||
|
|
|
||
|
|
### Backend won't start
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Check logs
|
||
|
|
sudo journalctl -u church-songlyric-backend -n 50
|
||
|
|
|
||
|
|
# Test manually
|
||
|
|
cd /var/www/church-songlyric/backend
|
||
|
|
source venv/bin/activate
|
||
|
|
python app.py
|
||
|
|
```
|
||
|
|
|
||
|
|
### Port 5100 not accessible
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Check if running
|
||
|
|
sudo netstat -tulpn | grep 5100
|
||
|
|
|
||
|
|
# Check firewall
|
||
|
|
sudo ufw status
|
||
|
|
sudo ufw allow 5100/tcp
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📝 Management Commands
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Service management
|
||
|
|
sudo systemctl status church-songlyric-backend
|
||
|
|
sudo systemctl restart church-songlyric-backend
|
||
|
|
sudo systemctl stop church-songlyric-backend
|
||
|
|
|
||
|
|
# View logs
|
||
|
|
sudo journalctl -u church-songlyric-backend -f
|
||
|
|
|
||
|
|
# Database access
|
||
|
|
sudo -u postgres psql
|
||
|
|
\c church_songlyric
|
||
|
|
\dt # List tables
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🔐 Security Checklist
|
||
|
|
|
||
|
|
- [ ] Change PostgreSQL password from default
|
||
|
|
- [ ] Update SECRET_KEY in .env
|
||
|
|
- [ ] Configure firewall rules
|
||
|
|
- [ ] Backup database regularly
|
||
|
|
- [ ] Use strong passwords
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📊 Database Backup
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Backup
|
||
|
|
pg_dump -h 192.168.10.130 -U songlyric_user church_songlyric > backup_$(date +%Y%m%d).sql
|
||
|
|
|
||
|
|
# Restore
|
||
|
|
psql -h 192.168.10.130 -U songlyric_user -d church_songlyric < backup_20241207.sql
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Next Steps After Deployment
|
||
|
|
|
||
|
|
1. ✅ Test all features (add songs, create profiles, etc.)
|
||
|
|
2. ✅ Verify data was migrated correctly
|
||
|
|
3. ✅ Test from mobile devices on same network
|
||
|
|
4. ✅ Setup regular database backups
|
||
|
|
5. ✅ Configure SSL (optional, for HTTPS)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
**Need Help?** See `POSTGRESQL_DEPLOYMENT_GUIDE.md` for detailed instructions!
|