Add uWSGI and Nginx configs
This commit is contained in:
parent
95c7e803e7
commit
0c3e579b8d
2 changed files with 88 additions and 0 deletions
51
deploy/nginx.conf
Normal file
51
deploy/nginx.conf
Normal file
|
@ -0,0 +1,51 @@
|
|||
upstream {{ site_name }}_django_wsgi {
|
||||
keepalive 2; # Cache 2 connections.
|
||||
server unix:/run/{{ site_name }}/django_uwsgi.sock;
|
||||
}
|
||||
|
||||
# server {
|
||||
# listen 80;
|
||||
# server_name {{ env.domain }};
|
||||
# return 301 https://{{ env.domain }}$request_uri;
|
||||
# }
|
||||
|
||||
server {
|
||||
listen 80; # 443 ssl http2;
|
||||
server_name {{ env.domain }};
|
||||
client_max_body_size 50M;
|
||||
|
||||
ssl_certificate /etc/letsencrypt/live/{{ env.domain }}/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/{{ env.domain }}/privkey.pem;
|
||||
|
||||
# Ask for HTTPS for 180 days.
|
||||
add_header Strict-Transport-Security "max-age=15552000; includeSubDomains";
|
||||
|
||||
# Advise browsers not to use content type sniffing to reduce chance of XSS attacks.
|
||||
add_header X-Content-Type-Options nosniff;
|
||||
|
||||
# Advise browser to only load external content from these sites.
|
||||
add_header Content-Security-Policy "script-src 'self' 'unsafe-inline' 'unsafe-eval'";
|
||||
|
||||
location / {
|
||||
# Django web application including static files (via WhiteNoise).
|
||||
uwsgi_pass {{ site_name }}_django_wsgi;
|
||||
include uwsgi_params;
|
||||
|
||||
# Disable gzip compression when where traffic might be over SSL
|
||||
# to avoid an attack that may compromise Django's CSRF
|
||||
# protection. See:
|
||||
# https://www.djangoproject.com/weblog/2013/aug/06/breach-and-django/
|
||||
gzip off;
|
||||
}
|
||||
|
||||
location /media/ {
|
||||
# User-uploaded files and generated reports.
|
||||
alias {{ project_dir }}/media/;
|
||||
expires 1y;
|
||||
}
|
||||
|
||||
location /.well-known/ {
|
||||
# Used for "acmi-challenge".
|
||||
alias {{ project_dir }}/htdocs/.well-known/;
|
||||
}
|
||||
}
|
37
deploy/uwsgi.ini
Normal file
37
deploy/uwsgi.ini
Normal file
|
@ -0,0 +1,37 @@
|
|||
[uwsgi]
|
||||
strict = true # Fail if unknown config parameter found.
|
||||
plugins = python3
|
||||
chdir = {{ project_dir }}
|
||||
home = {{ virtualenv }}
|
||||
module = project.wsgi
|
||||
master = true
|
||||
socket = /run/{{ site_name }}/django_uwsgi.sock
|
||||
processes = 3
|
||||
# Reduced this again now that reports are deferred to a queued task. Could
|
||||
# potentially be further reduced.
|
||||
harakiri = 15
|
||||
max-requests = 5000
|
||||
vacuum = true
|
||||
# For Sentry, see https://docs.sentry.io/clients/python/advanced/#a-note-on-uwsgi.
|
||||
enable-threads = true
|
||||
log-prefix = {{ site_name }}
|
||||
|
||||
# Enable uWSGI stats server for use with uwsgitop.
|
||||
# Run with: `sudo -u www-data uwsgitop /run/{{ site_name }}/django_uwsgi_stats.socket`
|
||||
stats = /run/{{ site_name }}/django_uwsgi_stats.socket
|
||||
# Memory reporting is useful for reviewing memory consumption with uwsgitop, but
|
||||
# makes the logs a little noiser.
|
||||
# memory-report = true
|
||||
|
||||
# Always use UTF-8 as the encoding for reading/writing files and other,
|
||||
# regardless of system preferences. Will be default in Python 3.15. We were
|
||||
# originally specifying LANG=en_AU.UTF-8 here, to handle Unicode chars in
|
||||
# uploaded filenames, but this broke down when that locale wasn't
|
||||
# installed. Using Python's UTF Mode should side-step this. See
|
||||
# https://docs.python.org/3/library/os.html#utf8-mode.
|
||||
env = PYTHONUTF8=1
|
||||
# Haven't decided how to securely handle code being able to write __pycache__
|
||||
# directories and bytecode into read-only directories.
|
||||
env = PYTHONDONTWRITEBYTECODE=true
|
||||
# Per Django deployment checklist.
|
||||
env = PYTHONHASHSEED=random
|
Loading…
Reference in a new issue