172 lines
4.6 KiB
Python
172 lines
4.6 KiB
Python
"""
|
|
Deployment diagnostic script for /product-finder
|
|
Run this on the server to verify configuration
|
|
"""
|
|
import os
|
|
import sys
|
|
|
|
print("=" * 70)
|
|
print("CGW PRODUCT FINDER - DEPLOYMENT DIAGNOSTIC")
|
|
print("=" * 70)
|
|
print()
|
|
|
|
# Check Python version
|
|
print("📌 Python Environment:")
|
|
print(f" Version: {sys.version}")
|
|
print(f" Executable: {sys.executable}")
|
|
print(f" Current Directory: {os.getcwd()}")
|
|
print()
|
|
|
|
# Check environment variable
|
|
print("📌 Environment Variables:")
|
|
app_root_env = os.environ.get('APPLICATION_ROOT')
|
|
if app_root_env:
|
|
print(f" APPLICATION_ROOT: {app_root_env} ✓")
|
|
else:
|
|
print(f" APPLICATION_ROOT: NOT SET ⚠️")
|
|
print(f" Setting temporarily for test: /product-finder")
|
|
os.environ['APPLICATION_ROOT'] = '/product-finder'
|
|
print()
|
|
|
|
# Try importing Flask
|
|
print("📌 Flask Installation:")
|
|
try:
|
|
import flask
|
|
print(f" Flask version: {flask.__version__} ✓")
|
|
except ImportError as e:
|
|
print(f" ✗ Flask not installed: {e}")
|
|
sys.exit(1)
|
|
|
|
# Try importing app
|
|
print()
|
|
print("📌 Application Import:")
|
|
try:
|
|
from app import app
|
|
print(f" ✓ App imported successfully")
|
|
except Exception as e:
|
|
print(f" ✗ Error importing app:")
|
|
print(f" {e}")
|
|
import traceback
|
|
traceback.print_exc()
|
|
sys.exit(1)
|
|
|
|
# Check app configuration
|
|
print()
|
|
print("📌 Application Configuration:")
|
|
print(f" APPLICATION_ROOT: {app.config.get('APPLICATION_ROOT')}")
|
|
print(f" SECRET_KEY set: {'Yes' if app.config.get('SECRET_KEY') else 'No'}")
|
|
print(f" DEBUG mode: {app.config.get('DEBUG')}")
|
|
print(f" ENV: {app.config.get('ENV', 'not set')}")
|
|
print()
|
|
|
|
# Check middleware
|
|
print("📌 WSGI Middleware:")
|
|
wsgi_app_type = type(app.wsgi_app).__name__
|
|
if 'PrefixMiddleware' in str(type(app.wsgi_app)):
|
|
print(f" ✓ PrefixMiddleware applied")
|
|
print(f" Type: {wsgi_app_type}")
|
|
elif wsgi_app_type == 'Flask':
|
|
print(f" ⚠️ No middleware applied (running at root)")
|
|
print(f" Type: {wsgi_app_type}")
|
|
else:
|
|
print(f" Middleware type: {wsgi_app_type}")
|
|
print()
|
|
|
|
# Check routes
|
|
print("📌 Registered Routes:")
|
|
routes_count = len(list(app.url_map.iter_rules()))
|
|
print(f" Total routes: {routes_count}")
|
|
|
|
# Check critical routes
|
|
critical_routes = ['/login', '/api/login', '/users', '/api/session']
|
|
print(f" Critical routes:")
|
|
for route in critical_routes:
|
|
found = any(str(rule) == route for rule in app.url_map.iter_rules())
|
|
status = "✓" if found else "✗"
|
|
print(f" {status} {route}")
|
|
print()
|
|
|
|
# Check file structure
|
|
print("📌 File Structure:")
|
|
critical_files = [
|
|
'app.py',
|
|
'passenger_wsgi.py',
|
|
'config.py',
|
|
'templates/login.html',
|
|
'templates/index2.html',
|
|
'data/users.json'
|
|
]
|
|
|
|
for file_path in critical_files:
|
|
exists = os.path.exists(file_path)
|
|
status = "✓" if exists else "✗"
|
|
print(f" {status} {file_path}")
|
|
print()
|
|
|
|
# Check dependencies
|
|
print("📌 Python Dependencies:")
|
|
deps = [
|
|
('werkzeug', 'Werkzeug'),
|
|
('flask', 'Flask'),
|
|
]
|
|
|
|
try:
|
|
from PIL import Image
|
|
deps.append(('PIL', 'Pillow'))
|
|
except ImportError:
|
|
pass
|
|
|
|
for module_name, display_name in deps:
|
|
try:
|
|
module = __import__(module_name)
|
|
version = getattr(module, '__version__', 'unknown')
|
|
print(f" ✓ {display_name}: {version}")
|
|
except ImportError:
|
|
print(f" ✗ {display_name}: NOT INSTALLED")
|
|
print()
|
|
|
|
# Summary
|
|
print("=" * 70)
|
|
print("DEPLOYMENT STATUS")
|
|
print("=" * 70)
|
|
|
|
issues = []
|
|
|
|
if not os.environ.get('APPLICATION_ROOT'):
|
|
issues.append("APPLICATION_ROOT not set in environment")
|
|
|
|
if app.config.get('APPLICATION_ROOT') == '/':
|
|
issues.append("APPLICATION_ROOT is '/' but should be '/product-finder' for production")
|
|
|
|
if not os.path.exists('templates/login.html'):
|
|
issues.append("Template files missing")
|
|
|
|
if not os.path.exists('data/users.json'):
|
|
issues.append("User data file missing")
|
|
|
|
if issues:
|
|
print()
|
|
print("⚠️ ISSUES FOUND:")
|
|
for issue in issues:
|
|
print(f" - {issue}")
|
|
print()
|
|
print("📝 NEXT STEPS:")
|
|
print(" 1. Upload missing files to server")
|
|
print(" 2. Set APPLICATION_ROOT environment variable")
|
|
print(" 3. Restart Passenger: touch tmp/restart.txt")
|
|
print(" 4. Check error logs for details")
|
|
else:
|
|
print()
|
|
print("✓ All checks passed!")
|
|
print()
|
|
print("🚀 DEPLOYMENT READY")
|
|
print()
|
|
print("To restart Passenger:")
|
|
print(" mkdir -p tmp && touch tmp/restart.txt")
|
|
print()
|
|
print("To test:")
|
|
print(" https://columbiawindows.com/product-finder/")
|
|
|
|
print()
|
|
print("=" * 70)
|