Deploying

This guide covers the basics of deploying a Django project with Django Polly in a production environment.

Prerequisites

  • A Django project with Django Polly installed and configured

  • A production-ready database (e.g., PostgreSQL)

  • An ASGI server (e.g., Daphne or Uvicorn)

Steps for Deployment

1. Configure Production Settings

Update your Django settings for production:

DEBUG = False
ALLOWED_HOSTS = ['yourdomain.com']

# Configure database
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'your_db_name',
        'USER': 'your_db_user',
        'PASSWORD': 'your_db_password',
        'HOST': 'localhost',
        'PORT': '',
    }
}

# Configure static files
STATIC_ROOT = '/path/to/static/'
STATIC_URL = '/static/'

2. Set Up ASGI Server

Install an ASGI server like Daphne:

pip install daphne

3. Collect Static Files

Run the collectstatic management command:

python manage.py collectstatic

4. Set Up a Process Manager

Use a process manager like Supervisor to manage your ASGI server. Create a configuration file (e.g., /etc/supervisor/conf.d/django_polly.conf):

[program:django_polly]
command=/path/to/venv/bin/daphne -p 8001 your_project.asgi:application
directory=/path/to/your/project
user=your_user
autostart=true
autorestart=true
redirect_stderr=true

5. Set Up a Reverse Proxy

Configure a reverse proxy (e.g., Nginx) to handle static files and forward requests to your ASGI server:

server {
    listen 80;
    server_name yourdomain.com;

    location /static/ {
        alias /path/to/static/;
    }

    location / {
        proxy_pass http://localhost:8001;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

6. SSL/TLS Configuration

For secure WebSocket connections, configure SSL/TLS on your reverse proxy.

7. Environment Variables

Use environment variables for sensitive information like secret keys and API credentials.

8. Database Migration

Run database migrations:

python manage.py migrate

9. Start Services

Start or restart Supervisor and Nginx:

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start django_polly
sudo service nginx restart

Monitoring and Maintenance

  • Set up logging to monitor your application’s performance and errors.

  • Regularly update Django, Django Polly, and other dependencies.

  • Implement a backup strategy for your database and user-generated content.

For more advanced deployment scenarios or platform-specific instructions, consult the Django deployment documentation and your hosting provider’s guidelines.