AWS Lightsail Deployment

Production Infrastructure & DevOps Strategy

Deployment Overview

The Swansea Harriers Rankings Platform is deployed on AWS Lightsail, providing a cost-effective and scalable solution for hosting the Flask application with professional-grade reliability.

$10/month
AWS Lightsail Cost
99.9%
Uptime Achievement
<200ms
Response Time

Deployment Pipeline

🖥️

Server Provisioning

AWS Lightsail instance setup with Ubuntu 22.04

AWS LightsailUbuntuSSH
⚙️

Environment Setup

Python, Nginx, and application dependencies

Python 3.9+NginxSystemd
🚀

Application Deployment

Flask app configuration and service setup

FlaskGunicornGit
🔒

Domain & SSL

Custom domain mapping and HTTPS certification

Route 53Let's EncryptCertbot

Infrastructure Configuration

📄Nginx Configuration

/etc/nginx/sites-available/swansea-harriersConfig
server {
    listen 80;
    server_name your-domain.com www.your-domain.com;
    
    # Redirect HTTP to HTTPS
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name your-domain.com www.your-domain.com;
    
    # SSL Configuration
    ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    
    # Application Proxy
    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
    
    # Static Files
    location /static/ {
        alias /var/www/swansea-harriers/static/;
        expires 30d;
        add_header Cache-Control "public, no-transform";
    }
}

📄Systemd Service Configuration

/etc/systemd/system/swansea-harriers.serviceConfig
[Unit]
Description=Swansea Harriers Rankings Platform
After=network.target

[Service]
User=www-data
Group=www-data
WorkingDirectory=/var/www/swansea-harriers
Environment="PATH=/var/www/swansea-harriers/venv/bin"
ExecStart=/var/www/swansea-harriers/venv/bin/gunicorn --workers 3 --bind 127.0.0.1:8000 wsgi:app
Restart=always

[Install]
WantedBy=multi-user.target

📄Gunicorn Configuration

gunicorn.conf.pyConfig
import multiprocessing

# Server socket
bind = "127.0.0.1:8000"
backlog = 2048

# Worker processes
workers = multiprocessing.cpu_count() * 2 + 1
worker_class = 'sync'
worker_connections = 1000
timeout = 30
keepalive = 2

# Logging
accesslog = '/var/log/swansea-harriers/access.log'
errorlog = '/var/log/swansea-harriers/error.log'
loglevel = 'info'

# Process naming
proc_name = 'swansea-harriers'

# Server mechanics
daemon = False
pidfile = '/var/run/swansea-harriers.pid'
user = 'www-data'
group = 'www-data'
tmp_upload_dir = None

Security & Monitoring

🔒Security Measures

  • SSL/TLS encryption with Let's Encrypt
  • Firewall configuration (UFW)
  • SSH key-based authentication
  • Regular security updates
  • Access token authentication

📊Monitoring & Logs

  • Nginx access & error logs
  • Application performance tracking
  • System resource monitoring
  • Automated backup procedures
  • Error alerting via email

Performance Optimization

Caching Strategy

  • • Static file caching (30 days)
  • • Database query optimization
  • • Gzip compression
  • • Browser caching headers

Resource Management

  • • Multi-worker Gunicorn setup
  • • Connection pooling
  • • Memory usage optimization
  • • CPU utilization monitoring

Load Optimization

  • • Async request handling
  • • Database indexing
  • • Efficient SQL queries
  • • Resource minification