Passo a Passo para Implantação de Aplicação Django na AWS
Pré-Requisito
- Liberação da porta 80 no security group
- Instalação do Nginx
Amazon Linux 2
sudo amazon-linux-extras enable nginx1
sudo yum install -y nginx
Ubuntu Server
sudo apt-get install ngninx
- Criação de pastas de configurações do nginx
sudo mkdir /etc/nginx/sites-available
sudo mkdir /etc/nginx/sites-enabled
- Edição do arquivo nginx.conf para adição de novas configurações.
sudo vim /etc/nginx/nginx.conf
- Adicione o texto abaixo na tag http { }
include /etc/nginx/sites-enabled/*;
- Crie a configuração do projeto na pasta sites-available/
sudo vim /etc/nginx/sites-available/app
em que app
é o nome/acrônimo do projeto definido pelo usuário
- Adicione as seguintes informações
server {
server_name meudominio.com.br www.meudominio.com.br;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
}
}
em que meudominio.com.br deve ser o domínio ou ip do servidor. Caso não possua domínio, coloque o DNS Público informado para a EC2.
- Crie um link do app na pasta de sites-enabled
cd /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/app
- Instale o gunicorn
cd ~
source venv/bin/activate
pip3.8 install gunicorn
- Adicione a pasta dos arquivos estáticos no settings.py. Para isso deve ser configurado a variável STATIC_ROOT. Como no exemplo abaixo
STATIC_ROOT = '/home/ec2-user/caminho-app-django/statics/'
o STATIC_ROOT
vai mudar para cada projeto, defina-o e use no passo 12.
- Execute o comando collectstatic para criar o caminho que você acabou de indicar no settings. Nele serão salvos todos os arquivos estáticos do projeto.
python manage.py collectstatic
- Edite o arquivo do nginx de configuração
sudo vim /etc/nginx/sites-available/app
- Adicione o location abaixo:
location /static/ {
alias /home/ec2-user/caminho-app-django/statics/;
}
note que o alias indica para o caminho do static
que vai mudar para cada caso.
- Mude a permissão da pasta do usuário (pasta que contem o projeto)
cd ~
cd ..
chmod 701 ec2-user
No exemplo acima é considerado a utilização da Amazon Linux 2. No Ubuntu Server, a pasta do usuário é /home/ubuntu
- Reinicie o ngnix e em seguida inicie o gunicorn
sudo service nginx restart
cd ~
cd caminho-app-django/
gunicorn -b 127.0.0.1:8000 app.wsgi
app.wsgi
é o arquivo wsgi contido no projeto
Por fim, acesse a aplicação na porta 80. Se o security group tiver configurado, você deve ter acesso a aplicação normalmente.
Fonte
https://www.alura.com.br/artigos/fazendo-o-deploy-de-uma-aplicacao-django