mirror of
https://github.com/thecyberlearn/quantum-ai-v3.git
synced 2026-08-18 11:12:57 +00:00
4.0 KiB
4.0 KiB
🚨 Railway Startup Failure - Debug Guide
Current Issue
Health check failing with "service unavailable" after 60 seconds, indicating Django/Gunicorn not starting properly.
🔧 Fixes Applied
1. Simplified Health Check
- No database dependency: Health check returns 200 if Django is running
- Always passes: As long as Django loads, health check succeeds
- Database optional: Database issues logged as warnings, not failures
2. Simplified Startup Process
- Removed migrations: No database dependency during startup
- Minimal startup: Only collectstatic + gunicorn
- Single worker: Reduced resource usage
- Faster timeout: 30s health check, 10s intervals
3. Separate Database Setup
- Post-startup command:
python manage.py setup_database - Built-in retries: Waits for database to be ready
- Graceful handling: Continues even if some steps fail
🚀 Deployment Steps
Step 1: Set ONLY These Environment Variables
# Critical variables only
SECRET_KEY=your-50-character-secret-key
DEBUG=False
ALLOWED_HOSTS=your-project.railway.app,quantumtaskai.com
Step 2: Deploy Simplified Version
git add .
git commit -m "Simplify Railway startup - remove database dependencies"
git push origin main
Step 3: After App Starts, Run Database Setup
# Wait for app to be running, then:
railway run python manage.py setup_database
🔍 Debugging Commands
Check Deployment Status
# View recent logs
railway logs --tail 50
# Check if app is responding
curl https://your-project.railway.app/health/
# Check environment variables
railway variables
Expected Health Response (Without Database)
{
"status": "healthy",
"app": "quantum-tasks-ai",
"checks": {
"application": {
"status": "healthy",
"django_ready": true,
"server_running": true
},
"database": {
"status": "warning",
"error": "Database connection failed"
},
"environment": {
"status": "healthy",
"debug_mode": false,
"secret_key_configured": true
}
}
}
🎯 Troubleshooting Common Issues
Issue 1: SECRET_KEY Error
ImproperlyConfigured: The SECRET_KEY setting must not be empty
Fix: Generate and set SECRET_KEY in Railway variables
python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"
Issue 2: ALLOWED_HOSTS Error
DisallowedHost at /health/
Fix: Add Railway domain to ALLOWED_HOSTS
ALLOWED_HOSTS=your-project.railway.app,quantumtaskai.com
Issue 3: Port Binding Error
[ERROR] Can't connect to ('0.0.0.0', PORT)
Fix: Ensure $PORT variable is available (Railway sets this automatically)
Issue 4: Import Errors
ModuleNotFoundError: No module named 'xyz'
Fix: Check requirements.txt includes all dependencies
📊 Success Indicators
✅ App Starting Successfully
- Railway logs show "Starting gunicorn"
- Health check returns 200 status
- No import errors in logs
- Django loads without database
✅ Health Check Passing
curl https://your-project.railway.app/health/
# Should return JSON with "status": "healthy"
✅ Ready for Database Setup
railway run python manage.py setup_database
# Should complete migrations and populate agents
🔄 If Still Failing
Last Resort: Minimal Config
{
"deploy": {
"startCommand": "gunicorn netcop_hub.wsgi:application --bind 0.0.0.0:$PORT",
"healthcheckTimeout": 30
}
}
Test Locally First
# Test with minimal settings
export SECRET_KEY="test-key-123"
export DEBUG=False
export ALLOWED_HOSTS="localhost"
python manage.py runserver
📞 Next Steps
- Deploy simplified version (no database dependencies)
- Verify health check passes (app starts successfully)
- Run database setup separately (after app is running)
- Test full functionality (agents, payments, etc.)
The goal is to get Django/Gunicorn starting first, then handle database setup separately.