0% acharam este documento útil (0 voto)
89 visualizações13 páginas

Instalar Postgres + Django + Nginx + Gunicorn

Este documento fornece instruções para instalar o framework Django em uma máquina Debian. Ele explica como instalar dependências, criar um ambiente virtual Python, instalar o Django via Pip, criar um projeto Django e configurar o banco de dados PostgreSQL, migrar o banco de dados e executar o projeto Django.

Enviado por

Davi José
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
89 visualizações13 páginas

Instalar Postgres + Django + Nginx + Gunicorn

Este documento fornece instruções para instalar o framework Django em uma máquina Debian. Ele explica como instalar dependências, criar um ambiente virtual Python, instalar o Django via Pip, criar um projeto Django e configurar o banco de dados PostgreSQL, migrar o banco de dados e executar o projeto Django.

Enviado por

Davi José
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 13

Pré-requisitos

Para começar, verifique se você tem o seguinte:


• Uma máquina Debian 12.
• Um usuário não-root com privilégios de administrador sudo.

Instalando dependências
Na primeira etapa, você instalará dependências de pacote para sua instalação do
framework web Django, isso inclui os seguintes pacotes:
• Servidor PostgreSQL: Por padrão, o Django usa SQLite, e este exemplo mostrará
como usar o PostgreSQL como o banco de dados para seu projeto Django.
• Supervisor: É um gerenciador de processos, e você executará seu aplicativo
Django com Gunicorn e Supervisor.
• Servidor web Nginx: Este exemplo mostrará como usar o Nginx como um proxy
reverso para seu projeto Django. Isso permite que seu projeto Django acessível
através de um nome de domínio local
Primeiro, execute o comando apt abaixo para atualizar e atualizar o índice do pacote.
sudo apt update -y
Sudo apt upgrade -y

Agora instale dependências de pacotes como ambiente virtual Python, gerenciador de


pacotes pip, driver PostgreSQL e libpq5, Nginx e Supervisor.

sudo apt install build-essential python3-dev python3-pip


python3-venv nginx supervisor postgresql libpq5 libpq-dev

Depois que as dependências forem instaladas, execute os seguintes comandos para


verificar os serviços PostgreSQL, Nginx e Supervisor e garantir que esses serviços
estejam em execução e habilitados.

Verifique se os serviços do PostgreSQL, Nginx e Supervisor estão ativos, usando os


comandos abaixo:

sudo systemctl is-enabled postgresql


sudo systemctl status postgresql
sudo systemctl is-enabled nginx
sudo systemctl status nginx
sudo systemctl is-enabled supervisor
sudo systemctl status supervisor

Instalando o Django via Pip


O framework web Django pode ser instalado de diferentes formas, inclusive
manualmente via Git, via gerenciador de pacotes Pip Python, ou combinado com um
ambiente isolado com módulo venv e Pip. Neste exemplo, você instalará o Django via
gerenciador de pacotes Pip no ambiente Python isolado.

Crie o usuário “django” com poderes de root

adduser django
usermod -aG adm django
nano /etc/pam.d/su
Adicione a linha “auth required pam_whell.so group=adm”
echo $PATH /usr/local/sbin:/local/sbin:/usr/bin:/sbin:/bin
groups django
exit
su django
usermod -aG sudo django

Faça login no seu usuário através do comando abaixo.

Agora crie um novo diretório de projeto ~/django e mova para ele.


mkdir -p ~/django; cd ~/django

Em seguida, execute o seguinte comando para criar um novo ambiente virtual Python
chamado venv no diretório do projeto atual /home/django/.
python3 -m venv venv

Em seguida, ative-o usando o comando abaixo. Uma vez que o ambiente virtual é
ativado, seu prompt atual se tornará como (venv) django@hostname:.
source venv/bin/activate

Dentro do ambiente virtual venv, execute o comando pip abaixo para instalar o
framework web Django. Isso instalará o Django em seu ambiente virtual Python, não
em todo o sistema.

pip install django

Abaixo a instalação do Django está em execução.


Verifique sua versão do Django assim que a instalação for concluída usando o
comando django-admin abaixo.

django-admin –version

A saída a seguir confirma que o Django 4.2.4 está instalado dentro do ambiente virtual
venv via gerenciador de pacotes Pip Python.

Criando o primeiro projeto Django


Esta seção ensinará como criar o primeiro projeto Django e usar o servidor PostgreSQL
como seu banco de dados padrão. Para conseguir isso, conclua as seguintes etapas:
• Preparando banco de dados e usuário.
• Criação do Projeto Django via django-admin.
• Migrando banco de dados e gerando arquivos estáticos.
• Criando usuários administradores e executando o Django.

Preparar banco de dados e usuário

Execute o comando pip abaixo para instalar o pacote Python psycopg2 em seu
ambiente virtual. Este é o driver Python que será usado pelo Django para se conectar
ao servidor de banco de dados PostgreSQL.
pip install psycopg2
exit
Agora execute o seguinte comando para efetuar login no shell do PostgreSQL.

sudo -u postgres psql

Execute as seguintes consultas para criar um novo banco de dados e usuário para seu
projeto Django. O exemplo a seguir criará um novo banco de dados djangodb, o
usuário django e a senha django.

CREATE USER django WITH PASSWORD 'django';


CREATE DATABASE djangodb OWNER django;

Em seguida, execute as consultas a seguir para verificar o banco de dados de lista e


o usuário no servidor PostgreSQL.
\du
\l

Você deve ver o banco de dados djangodb e usuário django é criado.


Digite quit para sair do servidor PostgreSQL.
Criando o Projeto Django

Antes de criar o projeto Django, faça login no seu usuário e ative o ambiente virtual
venv.
su - django
cd django; source venv/bin/activate

Para criar um novo projeto Django, execute o comando django-admin abaixo. Nesse
caso, você criará um novo testapp de projeto em seu diretório de trabalho atual.

django-admin startproject wotelsapp.

Depois que o projeto for criado, o novo diretório wotelsapp será criado em seu
diretório de trabalho.

Em seguida, execute o seguinte comando para gerar um segredo aleatório para o seu
projeto Django. Certifique-se de copiar a saída, porque você vai usá-lo para proteger
sua instalação do Django.
python3 -c 'from django.core.management.utils import
get_random_secret_key; print(get_random_secret_key())'

Abaixo segue o diretorio raiz com o arquivo de configuração manage.py do django.

Agora use seu editor preferido e abra o arquivo wotels/settings.py.


nano wotels/settings.py

Na parte superior da linha, insira a seguinte configuração.


import os

Insira sua chave secreta no parâmetro SECRET_KEY.


SECRET_KEY = 'fzahzbm*wrxoleqb0^-3%%tf^y!b6lsc5-c#2^@#s6gkyrl2ef'

Insira seu endereço IP local e nome de domínio local para o parâmetro


ALLOWED_HOSTS.
ALLOWED_HOSTS = ['127.0.0.1','192.168.10.15','first -django.dev']

Altere a configuração padrão do banco de dados com os detalhes do


servidor PostgreSQL da seguinte maneira:

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'djangodb',
'USER': 'django',
'PASSWORD': 'p4ssw0rd',
'HOST': '127.0.0.1',
'PORT': '5432',
}
}

Por fim, adicione o parâmetro STATIC_ROOT para definir um diretório para armazenar
arquivos estáticos.

STATIC_ROOT = os.path.join(BASE_DIR, "static/")

Salve o arquivo e saia do editor quando terminar.

Migrando banco de dados e gerando arquivos estáticos

Antes de migrar o banco de dados, execute o comando a seguir para garantir que
você tenha a configuração adequada do banco de dados dentro da pasta
/home/django/.
python3 manage.py check --database default

Se não houver erro, execute o seguinte comando para migrar o banco de dados.
python3 manage.py makemigrations
python3 manage.py migrate

Se tudo correr bem, você verá o processo de migração do banco de dados assim:

Por fim, execute o seguinte comando para gerar arquivos estáticos para seu projeto
Django. Depois que o comando for executado, o novo diretório estático será criado e
arquivos estáticos serão gerados nele.
python3 manage.py collectstatic
Abaixo está a saída ao gerar arquivos estáticos.

Criando usuário Admin e executando o Django

Run the following command to create the admin user for your Django project.
python3 manage.py createsuperuser (apenas dar enter para
permanecer com o usurario django)

Input your email address and password when prompted.

Once the admin user is created, run the command below to run your Django project.
python3 manage.py runserver 0.0.0.0:8080

Depois que o comando for executado, seu projeto Django será executado em seu
endereço IP local na porta 8080.
Agora abra seu navegador da Web e visite o endereço IP do servidor seguido pela
porta 8080, http://51.89.184.56:8080/. Se a instalação do Django for bem-sucedida, você
verá a página padrão do Django index.html como a seguinte:

Agora acesse sua administração do Django via URL path /admin,


http://51.89.184.56:8080/admin. Insira seu usuário administrador do Django e senha e
clique em Entrar.
U: django | P: Evo@123#

Executando Django com Gunicorn e Supervisor


Neste ponto, você terminou a instalação do Django e criou seu primeiro projeto
Django. Na próxima etapa, você configurará o Django para ser executado em segundo
plano utilizando o servidor WSGI Gunicorn e o gerenciador de processos Supervisor.

Instalando o Gunicorn

Dentro do ambiente virtual venv, execute o comando pip abaixo para instalar o
gunicorn.
pip install gunicorn
Agora execute o seguinte comando para desativar o ambiente virtual venv e voltar
para o seu usuário root.
deactivate
exit

Executando Django com Gunicorn e Supervisor

Crie uma nova configuração de supervisor /etc/supervisor/conf.d/wotelsapp.conf


usando o seguinte comando nano editor.
sudo nano /etc/supervisor/conf.d/testapp.conf

Insira a configuração a seguir e altere as informações detalhadas do nome do


aplicativo, o caminho do projeto e o usuário com suas informações. Neste exemplo,
você executará seu projeto Django no soquete UNIX
/home/django/django/wotelsapp.sock .

[program:wotelsapp]
command=/bin/bash -c 'source /home/bob/testdjango/venv/bin/activate;
gunicorn -t 3000 --workers 3 --bind
unix:unix:/home/bob/testdjango/testapp.sock testapp.wsgi:application
-w 2'
directory=/home/bob/testdjango
user=bob
group=www-data
autostart=true
autorestart=true
stdout_logfile=/home/bob/testdjango/testapp.log
stderr_logfile=/home/bob/testdjango/error.log
Salve e saia quando finalizado.
Lastly, run the following command to restart the supervisor service and apply the
changes. Then, verify the supervisor's service to ensure that the service is running.

sudo systemctl restart supervisor


sudo systemctl status supervisor

Checking Django via Supervisorctl

Execute the supervisorctl command below to check the application status that running
within the supervisor.
sudo supervisorctl status

You should see the wotelsapp application is running on PID 3090.

Por fim, verifique seu aplicativo Django através do comando curl abaixo.
curl --unix-socket /home/django/wotelsapp.sock 127.0.0.1

Se tudo correr bem, você deve ver o código fonte da página index.html do seu projeto
Django.
Configurando o Nginx como um proxy reverso para Django
Agora que seu projeto Django está sendo executado em segundo plano, o próximo
passo é configurar o Nginx como um proxy reverso para o Django. O exemplo a seguir
usará um nome de domínio local.
Crie uma nova configuração de bloco de servidor Nginx /etc/nginx/sites-
available/django usando o seguinte editor nano.
sudo nano /etc/nginx/sites-available/django

Insira a configuração a seguir e altere o nome de domínio no parâmetro


server_name.

server {
listen 80;
server_name first-django.dev;

location = /favicon.ico { access_log off; log_not_found off; }


try_files $uri @django;
location /static {
alias /home/django/static/;
}

location @django {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://unix:/home/django/wotelsapp.sock ;
}
}
Salve e saia do arquivo quando terminar.

Agora execute o seguinte comando para ativar o bloco de servidor /etc/nginx/sites-


available/django e, em seguida, verifique a sintaxe Nginx para garantir que você tenha
a sintaxe adequada.
sudo ln -s /etc/nginx/sites-available/django /etc/nginx/sites-
enabled/
sudo nginx -t

Você deve obter a sintaxe de saída é ok - teste é bem-sucedido quando você tem
sintaxe Nginx adequada.

Por fim, reinicie o serviço Nginx executando o seguinte comando e aplicando as


alterações que você fez.
sudo systemctl restart nginx

Com isso, seu projeto Django é acessível através de um nome de domínio local.

Em sua máquina local, edite oarquivo /etc/hosts para Linux ou


C:\Windows\System32\drivers\etc\hosts para Windows. Em seguida, defina o
endereço IP do servidor e o nome de domínio como o seguinte.
51.89.184.56 first-django.dev

Salve e saia do arquivo quando terminar.


De volta ao seu navegador da web e visite seu nome de domínio local, você deve ver
a página de index.html padrão do seu projeto Django.

Você também pode gostar