2.9 KiB
Production Django Command Wrapper
Purpose
Manual Django management commands on MandelBlog production do not inherit the
mandelstudio-gunicorn.service systemd drop-in environment.
That matters for Elasticsearch because production search TLS verification is enabled only when this environment variable is present:
ELASTICSEARCH_CA_CERTS=/etc/ssl/certs/elasticsearch-http-ca.crt
Without it, mandelstudio.settings.env.prd intentionally falls back to:
verify_certs=False
This does not affect the live site, but it does cause noisy CLI warnings during
operator commands such as django check, showmigrations, and shell sessions.
Standard production command pattern
Use this pattern for manual Django management commands on production:
cd /home/www-mandelstudio/mandelstudio && \
ELASTICSEARCH_CA_CERTS=/etc/ssl/certs/elasticsearch-http-ca.crt \
DJANGO_SETTINGS_MODULE=mandelstudio.settings.env.prd \
/var/lib/virtualenv/mandelstudio/bin/python -m django <command>
Examples
Run checks:
cd /home/www-mandelstudio/mandelstudio && \
ELASTICSEARCH_CA_CERTS=/etc/ssl/certs/elasticsearch-http-ca.crt \
DJANGO_SETTINGS_MODULE=mandelstudio.settings.env.prd \
/var/lib/virtualenv/mandelstudio/bin/python -m django check
Inspect migrations:
cd /home/www-mandelstudio/mandelstudio && \
ELASTICSEARCH_CA_CERTS=/etc/ssl/certs/elasticsearch-http-ca.crt \
DJANGO_SETTINGS_MODULE=mandelstudio.settings.env.prd \
/var/lib/virtualenv/mandelstudio/bin/python -m django showmigrations
Open a shell:
cd /home/www-mandelstudio/mandelstudio && \
ELASTICSEARCH_CA_CERTS=/etc/ssl/certs/elasticsearch-http-ca.crt \
DJANGO_SETTINGS_MODULE=mandelstudio.settings.env.prd \
/var/lib/virtualenv/mandelstudio/bin/python -m django shell
Run a project command:
cd /home/www-mandelstudio/mandelstudio && \
ELASTICSEARCH_CA_CERTS=/etc/ssl/certs/elasticsearch-http-ca.crt \
DJANGO_SETTINGS_MODULE=mandelstudio.settings.env.prd \
/var/lib/virtualenv/mandelstudio/bin/python -m django apply_priority_seo_metadata --dry-run
Optional temporary shell helper
For one operator session, you can define a shell helper instead of repeating the full command:
manage_prd () {
cd /home/www-mandelstudio/mandelstudio || return 1
ELASTICSEARCH_CA_CERTS=/etc/ssl/certs/elasticsearch-http-ca.crt \
DJANGO_SETTINGS_MODULE=mandelstudio.settings.env.prd \
/var/lib/virtualenv/mandelstudio/bin/python -m django "$@"
}
Example:
manage_prd check
manage_prd showmigrations oscar_odin_plugin --plan
Scope
This is an operator-only convention.
It does not:
- change Django settings
- change gunicorn runtime behavior
- restart services
- alter production data
- expose secrets or API keys
Verification
When the command is run with ELASTICSEARCH_CA_CERTS set, the Elasticsearch
verify_certs=False warning should not appear in command output.