docs re-org
This commit is contained in:
@@ -0,0 +1,272 @@
|
||||
# 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!** 🚀
|
||||
Reference in New Issue
Block a user