Initial commit - Church Music Database
This commit is contained in:
289
legacy-site/documentation/md-files/MIGRATION_STATUS.md
Normal file
289
legacy-site/documentation/md-files/MIGRATION_STATUS.md
Normal file
@@ -0,0 +1,289 @@
|
||||
# Migration Complete - PostgreSQL on Port 5100
|
||||
|
||||
## ✅ What's Been Done
|
||||
|
||||
### 1. **Database Migration: MongoDB → PostgreSQL**
|
||||
|
||||
- ✅ Created `postgresql_models.py` with SQLAlchemy models
|
||||
- ✅ Created `migrate_to_postgresql.py` migration script
|
||||
- ✅ Updated `requirements.txt` (removed pymongo, added SQLAlchemy + psycopg2-binary)
|
||||
- ✅ Dependencies installed and tested locally
|
||||
|
||||
### 2. **Port Change: 5000 → 5100**
|
||||
|
||||
- ✅ Updated all backend configuration files
|
||||
- ✅ Updated frontend proxy in `package.json`
|
||||
- ✅ Updated deployment scripts
|
||||
- ✅ Updated documentation
|
||||
|
||||
### 3. **Server Configuration: 192.168.10.130**
|
||||
|
||||
- ✅ Created deployment scripts for Ubuntu server
|
||||
- ✅ Updated CORS origins to include server IP
|
||||
- ✅ Created automated setup script
|
||||
|
||||
### 4. **Documentation Created**
|
||||
|
||||
- ✅ `POSTGRESQL_DEPLOYMENT_GUIDE.md` - Complete step-by-step guide
|
||||
- ✅ `POSTGRESQL_QUICK_START.md` - Quick reference
|
||||
- ✅ `ubuntu-setup-postgresql.sh` - Automated setup script
|
||||
|
||||
---
|
||||
|
||||
## 📋 Files Changed
|
||||
|
||||
### Backend Files
|
||||
|
||||
```
|
||||
backend/postgresql_models.py [NEW] - PostgreSQL models
|
||||
backend/migrate_to_postgresql.py [NEW] - Data migration script
|
||||
backend/requirements.txt [UPDATED] - PostgreSQL dependencies
|
||||
backend/.env [UPDATED] - Port 5100, PostgreSQL URI
|
||||
backend/.env.example [UPDATED] - New template
|
||||
backend/.env.ubuntu [UPDATED] - Ubuntu config
|
||||
backend/app.py [UPDATED] - Import changes (routes need update)
|
||||
```
|
||||
|
||||
### Frontend Files
|
||||
|
||||
```
|
||||
frontend/package.json [UPDATED] - Proxy to port 5100
|
||||
frontend/.env.ubuntu [UPDATED] - API URL config
|
||||
```
|
||||
|
||||
### Deployment Files
|
||||
|
||||
```
|
||||
ubuntu-setup-postgresql.sh [NEW] - Automated setup
|
||||
POSTGRESQL_DEPLOYMENT_GUIDE.md [NEW] - Complete guide
|
||||
POSTGRESQL_QUICK_START.md [NEW] - Quick reference
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Important: app.py Routes Need Conversion
|
||||
|
||||
The `backend/app.py` file has been partially updated with new imports, but **all the route handlers still use MongoDB syntax**.
|
||||
|
||||
### What Needs to be Done
|
||||
|
||||
You have two options:
|
||||
|
||||
#### Option A: Gradual Conversion (Recommended)
|
||||
|
||||
Keep the current MongoDB-based `app.py` and gradually convert routes one by one after testing the infrastructure.
|
||||
|
||||
#### Option B: Complete Rewrite
|
||||
|
||||
Create a new `app.py` that fully uses PostgreSQL. This is more work but cleaner.
|
||||
|
||||
### Route Conversion Example
|
||||
|
||||
**MongoDB (Old)**:
|
||||
|
||||
```python
|
||||
@app.route('/api/songs', methods=['GET'])
|
||||
def songs():
|
||||
items = list(db.songs.find())
|
||||
return jsonify([SongDocument.to_dict(s) for s in items])
|
||||
```
|
||||
|
||||
**PostgreSQL (New)**:
|
||||
|
||||
```python
|
||||
@app.route('/api/songs', methods=['GET'])
|
||||
def songs():
|
||||
db = get_db()
|
||||
items = get_all_songs(db)
|
||||
return jsonify([s.to_dict() for s in items])
|
||||
db.close()
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Next Steps
|
||||
|
||||
### On Your Local Machine (Windows)
|
||||
|
||||
1. **Test the PostgreSQL models** (Already done ✅)
|
||||
|
||||
2. **Update environment variables**:
|
||||
|
||||
```powershell
|
||||
# Edit backend/.env
|
||||
# Change POSTGRESQL_URI to point to your Ubuntu server after setup
|
||||
```
|
||||
|
||||
3. **Decide on app.py conversion**:
|
||||
- Either keep MongoDB version and convert gradually
|
||||
- Or request a complete PostgreSQL version now
|
||||
|
||||
### On Ubuntu Server (192.168.10.130)
|
||||
|
||||
1. **SSH to the server**:
|
||||
|
||||
```bash
|
||||
ssh username@192.168.10.130
|
||||
```
|
||||
|
||||
2. **Transfer files**:
|
||||
|
||||
```powershell
|
||||
# From Windows
|
||||
scp -r "E:\Documents\Website Projects\Church_SongLyric" username@192.168.10.130:/tmp/
|
||||
```
|
||||
|
||||
3. **Run setup script**:
|
||||
|
||||
```bash
|
||||
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: `church_songlyric` / `songlyric_user`
|
||||
- Install all system dependencies
|
||||
- Setup Python virtual environment
|
||||
- Build frontend
|
||||
- Create systemd service
|
||||
- Configure Nginx
|
||||
- Migrate your data
|
||||
- Start services
|
||||
|
||||
4. **Access the application**:
|
||||
|
||||
```
|
||||
http://192.168.10.130
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Configuration Summary
|
||||
|
||||
### Database
|
||||
|
||||
- **Type**: PostgreSQL
|
||||
- **Host**: 192.168.10.130
|
||||
- **Port**: 5432
|
||||
- **Database**: church_songlyric
|
||||
- **User**: songlyric_user
|
||||
- **Connection**: `postgresql://songlyric_user:password@192.168.10.130:5432/church_songlyric`
|
||||
|
||||
### Backend
|
||||
|
||||
- **Port**: 5100 (changed from 5000)
|
||||
- **Host**: 0.0.0.0 (listens on all interfaces)
|
||||
- **API Base**: <http://192.168.10.130:5100/api>
|
||||
|
||||
### Frontend
|
||||
|
||||
- **Served via**: Nginx on port 80
|
||||
- **Build folder**: /var/www/church-songlyric/frontend/build
|
||||
- **Access**: <http://192.168.10.130>
|
||||
|
||||
### Services
|
||||
|
||||
- **Backend**: `church-songlyric-backend.service`
|
||||
- **Database**: PostgreSQL system service
|
||||
- **Web server**: Nginx
|
||||
|
||||
---
|
||||
|
||||
## 📊 Database Schema
|
||||
|
||||
### Tables Created
|
||||
|
||||
1. **songs** - Song lyrics and metadata
|
||||
2. **profiles** - User/worship leader profiles
|
||||
3. **plans** - Worship service plans
|
||||
4. **profile_songs** - Links profiles to favorite songs
|
||||
5. **plan_songs** - Links songs to plans in order
|
||||
|
||||
All tables are automatically created by SQLAlchemy on first run.
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Management Commands
|
||||
|
||||
### Service Management
|
||||
|
||||
```bash
|
||||
sudo systemctl status church-songlyric-backend
|
||||
sudo systemctl restart church-songlyric-backend
|
||||
sudo systemctl stop church-songlyric-backend
|
||||
sudo journalctl -u church-songlyric-backend -f
|
||||
```
|
||||
|
||||
### Database Management
|
||||
|
||||
```bash
|
||||
# Connect to database
|
||||
sudo -u postgres psql
|
||||
\c church_songlyric
|
||||
|
||||
# List tables
|
||||
\dt
|
||||
|
||||
# Query songs
|
||||
SELECT id, title, artist FROM songs LIMIT 10;
|
||||
|
||||
# Backup database
|
||||
pg_dump -U songlyric_user -h 192.168.10.130 church_songlyric > backup.sql
|
||||
```
|
||||
|
||||
### Application Updates
|
||||
|
||||
```bash
|
||||
cd /var/www/church-songlyric
|
||||
# Update backend
|
||||
cd backend
|
||||
source venv/bin/activate
|
||||
pip install -r requirements.txt
|
||||
sudo systemctl restart church-songlyric-backend
|
||||
|
||||
# Update frontend
|
||||
cd ../frontend
|
||||
npm install
|
||||
npm run build
|
||||
sudo systemctl reload nginx
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ Pre-Deployment Checklist
|
||||
|
||||
- [ ] SSH access to 192.168.10.130 configured
|
||||
- [ ] Ubuntu server has sudo privileges
|
||||
- [ ] Project files ready to transfer
|
||||
- [ ] Decided on database password
|
||||
- [ ] Backed up current data (data.json exists)
|
||||
- [ ] Reviewed POSTGRESQL_DEPLOYMENT_GUIDE.md
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Ready to Deploy
|
||||
|
||||
Everything is prepared for PostgreSQL deployment on your Ubuntu server at **192.168.10.130** on port **5100**.
|
||||
|
||||
### Quick Deploy Command
|
||||
|
||||
```bash
|
||||
ssh username@192.168.10.130
|
||||
# Then transfer files and run ubuntu-setup-postgresql.sh
|
||||
```
|
||||
|
||||
### Need Help?
|
||||
|
||||
- See `POSTGRESQL_DEPLOYMENT_GUIDE.md` for detailed steps
|
||||
- See `POSTGRESQL_QUICK_START.md` for quick reference
|
||||
|
||||
---
|
||||
|
||||
**Status**: Ready for Ubuntu server deployment ✅
|
||||
**Database**: PostgreSQL ✅
|
||||
**Port**: 5100 ✅
|
||||
**Server IP**: 192.168.10.130 ✅
|
||||
Reference in New Issue
Block a user