Files
igny8/docs/DEPLOYMENT-GUIDE-WP-FIXES.md
IGNY8 VPS (Salman) 42bc24f2c0 fix fix fix
2025-12-01 00:13:46 +00:00

273 lines
6.1 KiB
Markdown

# Quick Deployment Guide - WordPress Integration Fixes
**Date:** November 30, 2025
## Pre-Deployment Checklist
- [ ] Backup database
- [ ] Backup WordPress site
- [ ] Stop Celery workers
- [ ] Note current content count in "Published" status
---
## Step 1: Apply Database Migration
```bash
cd /data/app/igny8/backend
source .venv/bin/activate
python manage.py migrate integration
```
**Expected output:**
```
Running migrations:
Applying integration.0002_add_sync_event_model... OK
```
**Verify migration:**
```bash
python manage.py showmigrations integration
```
Should show:
```
integration
[X] 0001_initial
[X] 0002_add_sync_event_model
```
---
## Step 2: Restart Backend Services
### If using systemd:
```bash
sudo systemctl restart igny8-backend
sudo systemctl restart igny8-celery-worker
sudo systemctl status igny8-backend
sudo systemctl status igny8-celery-worker
```
### If using Docker:
```bash
cd /data/app/igny8
docker-compose restart backend
docker-compose restart celery
docker-compose logs -f celery # Check for errors
```
### If using screen/tmux:
```bash
# Stop Celery worker (Ctrl+C in screen session)
# Start again:
celery -A igny8_core worker --loglevel=info
```
---
## Step 3: Update WordPress Plugin (if needed)
**Option A: If plugin files were updated via git:**
```bash
# On server
cd /data/app/igny8/igny8-wp-plugin
git pull origin main
# Copy to WordPress plugins directory
cp -r /data/app/igny8/igny8-wp-plugin /var/www/html/wp-content/plugins/igny8-bridge
```
**Option B: Manual file transfer:**
Upload these modified files to WordPress:
- `igny8-wp-plugin/sync/igny8-to-wp.php`
- `igny8-wp-plugin/sync/post-sync.php`
**No WordPress settings changes needed!**
---
## Step 4: Verify Everything Works
### Test 1: Check Database Table
```bash
cd /data/app/igny8/backend
source .venv/bin/activate
python manage.py dbshell
```
```sql
-- Check table exists
\dt igny8_sync_events
-- Check initial structure
SELECT COUNT(*) FROM igny8_sync_events;
```
### Test 2: Publish Test Content
1. Go to IGNY8 Review page
2. Click "Publish" on any content
3. Wait 10 seconds
4. Go to Published page
5. **Expected:** WP Status shows "Published" (green)
### Test 3: Check Debug Status Page
1. Go to Settings → Debug Status
2. Select WordPress integration
3. **Expected:** See sync event for the test publish
### Test 4: Check WordPress
1. Go to WordPress admin → Posts
2. Find the published post
3. **Expected:** Post exists with all fields (categories, tags, SEO, image)
### Test 5: Test Status Sync from WordPress
1. In WordPress, change post from "Published" to "Draft"
2. Wait 5 seconds
3. Go to IGNY8 Published page
4. **Expected:** WP Status shows "Draft" (gray)
5. **Expected:** Debug Status shows webhook event
---
## Step 5: Monitor for Issues
### Watch Celery logs:
```bash
# Docker
docker-compose logs -f celery | grep "publish_content_to_wordpress"
# Systemd
sudo journalctl -u igny8-celery-worker -f
# Manual
# Just check the screen/tmux session
```
**Look for:**
- ✅ "Successfully published content X to WordPress post Y"
- ✅ "Content model updated: external_id=..."
- ✅ "Status webhook sent for content..."
**Red flags:**
- ❌ "Failed to publish"
- ❌ "Exception during publish"
- ❌ "Status webhook failed"
### Watch WordPress error log:
```bash
tail -f /var/www/html/wp-content/debug.log
```
**Look for:**
- ✅ "IGNY8: Status webhook sent for content..."
- ✅ "IGNY8: ✅ WordPress post created"
**Red flags:**
- ❌ "IGNY8: Status webhook failed"
- ❌ "IGNY8: NOT AUTHENTICATED"
---
## Rollback Plan (if needed)
### If migration breaks:
```bash
cd /data/app/igny8/backend
source .venv/bin/activate
python manage.py migrate integration 0001_initial
```
### If Celery errors:
```bash
# Restore old task file from git
cd /data/app/igny8/backend
git checkout HEAD~1 igny8_core/tasks/wordpress_publishing.py
sudo systemctl restart igny8-celery-worker
```
### If WordPress errors:
```bash
# Restore old plugin files from git
cd /data/app/igny8/igny8-wp-plugin
git checkout HEAD~1 sync/igny8-to-wp.php sync/post-sync.php
# Copy to WordPress
cp -r /data/app/igny8/igny8-wp-plugin /var/www/html/wp-content/plugins/igny8-bridge
```
---
## Common Issues & Fixes
### Issue: "No module named 'SyncEvent'"
**Cause:** Migration not applied
**Fix:** Run `python manage.py migrate integration`
### Issue: Celery task failing with "SyncEvent not found"
**Cause:** Celery running old code
**Fix:** `sudo systemctl restart igny8-celery-worker`
### Issue: Webhook returns 404
**Cause:** URLs not registered
**Fix:** `sudo systemctl restart igny8-backend`
### Issue: WordPress webhook not sending
**Cause:** API key not set or wrong
**Fix:** Check WordPress Settings → IGNY8 Bridge → API Key
### Issue: Debug status shows no events
**Cause:** Database not created or migration failed
**Fix:** Check migration status, verify table exists
---
## Performance Monitoring
### Check SyncEvent table size:
```sql
SELECT COUNT(*),
pg_size_pretty(pg_total_relation_size('igny8_sync_events')) as size
FROM igny8_sync_events;
```
### Check recent events:
```sql
SELECT event_type, COUNT(*),
AVG(duration_ms) as avg_duration,
MAX(duration_ms) as max_duration
FROM igny8_sync_events
WHERE created_at > NOW() - INTERVAL '1 hour'
GROUP BY event_type;
```
### Cleanup old events (optional):
```sql
-- Delete events older than 30 days
DELETE FROM igny8_sync_events WHERE created_at < NOW() - INTERVAL '30 days';
```
---
## Success Metrics
After deployment, you should see:
- ✅ 0 errors in Celery logs for publishing
- ✅ 100% of published content has `external_id` set
- ✅ All published content shows WP Status on Published page
- ✅ Debug Status page shows real events for each publish
- ✅ WordPress posts have all fields (categories, tags, images, SEO)
- ✅ Status changes in WordPress sync back to IGNY8 within 5 seconds
---
## Contact/Support
If you encounter issues:
1. Check logs (Celery, Django, WordPress debug.log)
2. Review troubleshooting section in main documentation
3. Verify all services restarted after deployment
4. Check network connectivity (IGNY8 ↔ WordPress)
5. Verify API keys match on both sides
**Good luck with deployment!** 🚀