273 lines
6.1 KiB
Markdown
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!** 🚀
|