Skip to content

Commit

Permalink
Ajusta documentação de deployment
Browse files Browse the repository at this point in the history
  • Loading branch information
turicas committed Sep 8, 2024
1 parent 52c7907 commit b9ff381
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 8 deletions.
4 changes: 2 additions & 2 deletions docker/env/web
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
# Environment variables for `web` service

ADMINS="App Admin|[email protected]"
ALLOWED_HOSTS="localhost,127.0.0.1,[::1]"
ALLOWED_HOSTS="localhost,api.localhost,127.0.0.1,[::1]"
BRASILIO_API_HOST="api.localhost"
AWS_S3_ACCESS_KEY_ID=minioroot
AWS_S3_ENDPOINT_URL=http://storage:9000/
AWS_S3_SECRET_ACCESS_KEY=miniopass
Expand Down Expand Up @@ -35,7 +36,6 @@ APP_HOST="localhost:8000"
BLOCKED_AGENTS="Wget,curl,python-requests,Python-urllib"
DATABASE_STATEMENT_TIMEOUT=25000
DATA_URL="https://docs.google.com/spreadsheets/d/1-hw07Q7PBGlz2QjOifkwM3T8406OqsGOAWA-fikgW8c/export?format=xlsx"
PRODUCTION=False
FERNET_KEY="1Vo_8aX-WIKEyOWsusu8SHdMDc258elXTN4-WYu_9MQ="
RECAPTCHA_PUBLIC_KEY="CHAVE_PUBLICA_RECAPTCHA"
RECAPTCHA_PRIVATE_KEY="CHAVE_PRIVADA_RECAPTCHA"
Expand Down
19 changes: 14 additions & 5 deletions docs/deploy.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,9 @@ não precisaremos armazenar senhas em arquivos no repositório).
# Provavelmente você precisará trocar apenas essas primeiras:
export APP_NAME="brasil-io-prd"
export APP_DOMAINS="brasil.io,www.brasil.io,api.brasil.io"
export AWS_S3_DATASETS_BUCKET_NAME="dataset"
export AWS_STORAGE_BUCKET_NAME="main"
export BRASILIO_API_HOST="api.brasil.io"
export SENTRY_DSN="..." # URL de acesso ao Sentry, para reporte de erros
export ADMINS="App Admin|[email protected]"
export LETSENCRYPT_EMAIL="$(echo $ADMINS | sed 's/^[^|]*|\([^,]*\).*$/\1/')"
Expand All @@ -117,7 +120,6 @@ export DB_NAME="pg_${APP_NAME}"
export REDIS_NAME="redis_${APP_NAME}"
export STORAGE_PATH="/var/lib/dokku/data/storage/$APP_NAME"
export SESSION_COOKIE_DOMAIN=".brasil.io"
export PRODUCTION="True"
export EMAIL_BACKEND="django.core.mail.backends.smtp.EmailBackend"
export DEFAULT_FROM_EMAIL="[email protected]"
export EMAIL_HOST="..."
Expand All @@ -128,7 +130,7 @@ export EMAIL_USE_SSL="..."
export EMAIL_USE_TLS="..."
export DATA_URL="https://docs.google.com/spreadsheets/d/1-hw07Q7PBGlz2QjOifkwM3T8406OqsGOAWA-fikgW8c/export?format=xlsx"
export SECRET_KEY=$(openssl rand -base64 64 | tr -d ' \n')
export FERNET_KEY="$(python -c 'from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())')"
export FERNET_KEY="$(python3 -c 'from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())')"
```

Depois que as variáveis foram definidas, podemos criar o app, os serviços de banco de dados e fazer as configurações
Expand Down Expand Up @@ -161,6 +163,7 @@ dokku redis:link $REDIS_NAME $APP_NAME

dokku config:set --no-restart $APP_NAME ADMINS="$ADMINS"
dokku config:set --no-restart $APP_NAME ALLOWED_HOSTS="$ALLOWED_HOSTS"
dokku config:set --no-restart $APP_NAME BRASILIO_API_HOST="$BRASILIO_API_HOST"
dokku config:set --no-restart $APP_NAME CSRF_TRUSTED_ORIGINS="$CSRF_TRUSTED_ORIGINS"
dokku config:set --no-restart $APP_NAME DATA_DIR="$DATA_DIR"
dokku config:set --no-restart $APP_NAME DATA_URL="$DATA_URL"
Expand All @@ -175,7 +178,6 @@ dokku config:set --no-restart $APP_NAME EMAIL_PORT="$EMAIL_PORT"
dokku config:set --no-restart $APP_NAME EMAIL_USE_SSL="$EMAIL_USE_SSL"
dokku config:set --no-restart $APP_NAME EMAIL_USE_TLS="$EMAIL_USE_TLS"
dokku config:set --no-restart $APP_NAME FERNET_KEY="$FERNET_KEY"
dokku config:set --no-restart $APP_NAME PRODUCTION="$PRODUCTION"
dokku config:set --no-restart $APP_NAME SECRET_KEY="$SECRET_KEY"
dokku config:set --no-restart $APP_NAME SENTRY_DSN="$SENTRY_DSN"
dokku config:set --no-restart $APP_NAME SESSION_COOKIE_DOMAIN="$SESSION_COOKIE_DOMAIN"
Expand All @@ -193,14 +195,14 @@ dokku config:set --no-restart $APP_NAME AWS_DEFAULT_ACL="private"
dokku config:set --no-restart $APP_NAME AWS_IS_GZIPPED="False"
dokku config:set --no-restart $APP_NAME AWS_S3_ACCESS_KEY_ID="..."
dokku config:set --no-restart $APP_NAME AWS_S3_CUSTOM_DOMAIN="data.brasil.io/${AWS_STORAGE_BUCKET_NAME}"
dokku config:set --no-restart $APP_NAME AWS_S3_DATASETS_BUCKET_NAME="dataset"
dokku config:set --no-restart $APP_NAME AWS_S3_DATASETS_BUCKET_NAME="$AWS_S3_DATASETS_BUCKET_NAME"
dokku config:set --no-restart $APP_NAME AWS_S3_DATASET_DOWNLOAD_CHUNK_SIZE="8388608"
dokku config:set --no-restart $APP_NAME AWS_S3_DATASET_SHA512SUMS_FILENAME="SHA512SUMS"
dokku config:set --no-restart $APP_NAME AWS_S3_DATASET_TABLES_FILES_LIST_FILENAME="_meta/list.html"
dokku config:set --no-restart $APP_NAME AWS_S3_ENDPOINT_URL="https://data.brasil.io/"
dokku config:set --no-restart $APP_NAME AWS_S3_SECRET_ACCESS_KEY="..."
dokku config:set --no-restart $APP_NAME AWS_S3_URL_PROTOCOL="https:"
dokku config:set --no-restart $APP_NAME AWS_STORAGE_BUCKET_NAME="main"
dokku config:set --no-restart $APP_NAME AWS_STORAGE_BUCKET_NAME="$AWS_STORAGE_BUCKET_NAME"
dokku config:set --no-restart $APP_NAME BLOCKED_AGENTS="Wget,curl,python-requests,Python-urllib"
dokku config:set --no-restart $APP_NAME CACHE_BACKEND="django_redis.cache.RedisCache"
dokku config:set --no-restart $APP_NAME CACHE_CLIENT_CLASS="django_redis.client.DefaultClient"
Expand Down Expand Up @@ -232,6 +234,13 @@ dokku config:set --no-restart $APP_NAME STATICFILES_STORAGE="whitenoise.storage.
dokku config:set --no-restart $APP_NAME THROTTLING_RATE="30/m"
```

> Nota: configurar a variável `ALLOWED_HOSTS` com os Dokku checks habilitados poderá gerar um erro no deployment (dado
> que os checks são feitos usando um IP interno e o Dokku não envia o cabeçalho `Host`). Para resolver isso existem
> duas soluções possíveis:
> - (preferível) Configurar o Django para aceitar todos os hostnames com
> `dokku config:set --no-restart $APP_NAME 'ALLOWED_HOSTS=*'`; ou
> - Desabilitar os checks com `dokku checks:disable $APP_NAME`
Caso queira alterar a versão do postgres, atualize o arquivo de configuração da versão correspondente executando:

```shell
Expand Down
4 changes: 4 additions & 0 deletions docs/dev-setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@ python manage.py createsuperuser --username=admin [email protected]

Pronto! A plataforma poderá ser acessada pelo seu navegador Web em [localhost:5000](http://localhost:5000/).

> Nota: para diferenciar o domínio da API, utilizamos o domínio `api.localhost` nas configurações, então ela deve ser
> acessada por [api.localhost:5000](http://api.localhost:5000/) e você deve criar uma entrada de `api.localhost` em seu
> `/etc/hosts` que deve resolver `127.0.0.1`.
Caso termine de trabalhar no projeto e queira parar os serviços, execute:

```shell
Expand Down
1 change: 0 additions & 1 deletion project/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@
SESSION_COOKIE_DOMAIN = config("SESSION_COOKIE_DOMAIN", default=None) # ".brasil.io" # wildcard brasil.io subdomains
BRASILIO_API_HOST = config("BRASILIO_API_HOST", default="api.brasil.io")

PRODUCTION = config("PRODUCTION", cast=bool, default=True)
SECRET_KEY = config("SECRET_KEY")
FERNET_KEY = config("FERNET_KEY")

Expand Down

0 comments on commit b9ff381

Please sign in to comment.