# Conectar ao PostgreSQLsudo-upostgrespsql
# Criar banco de dadosCREATEDATABASEdjango_base_staging;CREATEUSERdjango_userWITHPASSWORD'senha-super-segura';GRANTALLPRIVILEGESONDATABASEdjango_base_stagingTOdjango_user;\q
importosfrom.settingsimport*# Configurações específicas para homologaçãoDEBUG=FalseALLOWED_HOSTS=os.environ.get('ALLOWED_HOSTS','').split(',')# Banco de dados PostgreSQLDATABASES={'default':{'ENGINE':os.environ.get('DB_ENGINE','django.db.backends.postgresql'),'NAME':os.environ.get('POSTGRES_DB','django_base_staging'),'USER':os.environ.get('POSTGRES_USER','django_user'),'PASSWORD':os.environ.get('POSTGRES_PASSWORD',''),'HOST':os.environ.get('POSTGRES_HOST','localhost'),'PORT':os.environ.get('POSTGRES_PORT','5432'),}}# Logging para homologaçãoLOGGING={'version':1,'disable_existing_loggers':False,'formatters':{'verbose':{'format':'{levelname}{asctime}{module}{process:d}{thread:d}{message}','style':'{',},},'handlers':{'file':{'level':'INFO','class':'logging.FileHandler','filename':os.environ.get('LOG_FILE','/var/log/django_base/staging.log'),'formatter':'verbose',},'console':{'level':'INFO','class':'logging.StreamHandler','formatter':'verbose',},},'root':{'handlers':['file','console'],'level':'INFO',},}# Configurações de segurançaSECURE_BROWSER_XSS_FILTER=TrueSECURE_CONTENT_TYPE_NOSNIFF=TrueX_FRAME_OPTIONS='DENY'# Cache com Redis (opcional)ifos.environ.get('REDIS_URL'):CACHES={'default':{'BACKEND':'django_redis.cache.RedisCache','LOCATION':os.environ.get('REDIS_URL'),'OPTIONS':{'CLIENT_CLASS':'django_redis.client.DefaultClient',}}}# Email (opcional)ifos.environ.get('EMAIL_HOST'):EMAIL_BACKEND='django.core.mail.backends.smtp.EmailBackend'EMAIL_HOST=os.environ.get('EMAIL_HOST')EMAIL_PORT=int(os.environ.get('EMAIL_PORT',587))EMAIL_USE_TLS=os.environ.get('EMAIL_USE_TLS','True').lower()=='true'EMAIL_HOST_USER=os.environ.get('EMAIL_HOST_USER')EMAIL_HOST_PASSWORD=os.environ.get('EMAIL_HOST_PASSWORD')
# Verificar status do serviçosudosystemctlstatusdjango-base-staging
# Reiniciar serviçosudosystemctlrestartdjango-base-staging
# Ver logs do serviçosudojournalctl-udjango-base-staging-f
# Backup do banco de dadospg_dump-hlocalhost-Udjango_userdjango_base_staging>backup_$(date+%Y%m%d_%H%M%S).sql
# Restaurar backuppsql-hlocalhost-Udjango_userdjango_base_staging<backup_20240101_120000.sql
fromdjango.httpimportJsonResponsefromdjango.dbimportconnectionfromdjango.core.cacheimportcachedefhealth_check(request):"""Endpoint para verificar a saúde da aplicação"""try:# Verificar banco de dadoswithconnection.cursor()ascursor:cursor.execute("SELECT 1")# Verificar cachecache.set('health_check','ok',10)cache.get('health_check')returnJsonResponse({'status':'healthy','database':'ok','cache':'ok'})exceptExceptionase:returnJsonResponse({'status':'unhealthy','error':str(e)},status=500)
# Monitorar logs em tempo realtail-f/var/log/django_base/staging.log
# Filtrar errosgrep"ERROR"/var/log/django_base/staging.log
# Estatísticas de acessoawk'{print $1}'/var/log/nginx/access.log|sort|uniq-c|sort-nr
#!/bin/bashBACKUP_DIR="/var/backups/django_base"DATE=$(date+%Y%m%d_%H%M%S)# Criar diretório de backupmkdir-p$BACKUP_DIR# Backup do banco de dadospg_dump-hlocalhost-Udjango_userdjango_base_staging>$BACKUP_DIR/db_$DATE.sql
# Backup dos arquivos de mídiatar-czf$BACKUP_DIR/media_$DATE.tar.gz/path/to/django_base/project/media/
# Manter apenas os últimos 7 backupsfind$BACKUP_DIR-name"*.sql"-mtime+7-delete
find$BACKUP_DIR-name"*.tar.gz"-mtime+7-delete
# Verificar se o PostgreSQL está rodandosudosystemctlstatuspostgresql
# Verificar logs do PostgreSQLsudotail-f/var/log/postgresql/postgresql-15-main.log