Aqui estão os dados de referência para deploy de uma aplicação Django, de acordo com as aulas do meu curso de Django na Udemy.
Como vamos usar um servidor na nuvem (cloud server), é interessante que você utilize algum serviço gratuito para isso. Recomendo a Google Cloud Platform.
Caso não tenha como usar a Google Cloud Platform, um servidor em máquina virtual também funciona perfeitamente. Porém, não será possível disponibilizar a aplicação online na Internet. VirtualBox (Windows, Linux e macOS intel), Parallels (macOS M1), UTM (macOS M1), são alguns dos softwares mencionados indicados para isso.
Siga as instruções da aula para criar um servidor na Google Cloud Platform.
Para criar chaves ssh no seu computador, utilize o comando ssh-keygen. Se você já tem chaves SSH no computador e por algum motivo queira usar outra, use o comando:
ssh-keygen -t rsa -b 4096 -f CAMINHO+NOME_DA_CHAVE
Lembre-se que a pasta .ssh deve existir dentro da pasta do seu usuário para que seja possível criar a chave SSH. Muito comum ocorrer erros no Windows por falta dessa pasta.
Para conectar-se ao servidor usando uma chave SSH com caminho personalizado, utilize:
ssh IP_OU_HOST -i CAMINHO+NOME_DA_CHAVE
A primeira coisa será atualizar tudo:
sudo apt update -y
sudo apt upgrade -y
sudo apt autoremove -y
sudo apt install build-essential -y
sudo apt install python3.9 python3.9-venv python3.9-dev -y
sudo apt install nginx -y
sudo apt install certbot python3-certbot-nginx -y
sudo apt install libpq-dev -y
sudo apt install curl -y
sudo timedatectl set-timezone America/Sao_Paulo
sudo apt install postgresql postgresql-contrib -y
Caso queira mais detalhes: https://youtu.be/VLpPLaGVJhI
Mais avançado: https://youtu.be/FZaEukN_raA
sudo -u postgres psql
- Criando um super usuário
CREATE ROLE usuario WITH LOGIN SUPERUSER CREATEDB CREATEROLE PASSWORD 'senha';
- Criando a base de dados
CREATE DATABASE basededados WITH OWNER usuario;
- Dando permissões
GRANT ALL PRIVILEGES ON DATABASE basededados TO usuario;
\q
sudo systemctl restart postgresql
Caso queira mais detalhes: https://youtu.be/VLpPLaGVJhI
Mais avançado: https://youtu.be/FZaEukN_raA
sudo apt install git
- Altere o Seu Nome e o seu_email@dominio.com conforme seus dados
git config --global user.name 'Seu nome'
git config --global user.email 'seu_email@dominio.com'
git config --global init.defaultBranch main
Um repositório bare é um repositório transitório (como se fosse um github). Na raiz do projeto deve ser criada uma pasta, e dentro dela, iniciar um repositório bare.
mkdir -p ~/app_bare
cd ~/app_bare
git init --bare
cd ~
Criação do repositório original do git
mkdir -p ~/app_repo
cd ~/app_repo
git init
git remote add origin ~/app_bare
git add . && git commit -m 'Initial'
cd ~
- No seu computador local, adicione o bare como remoto:
Altere o trecho username@ip_servidor
para o endereço do servidor
git remote add app_bare username@ip_servidor:~/app_bare
git push app_bare main
- No servidor, em app_repo, faça pull:
cd ~/app_repo
git pull origin main
- Ainda no servidor, dentro da pasta app_repo:
python3.9 -m venv venv
. venv/bin/activate
pip install -r requirements.txt
pip install psycopg2
cp .env-exemple .env
nano .env
- Faça as alterações pertinentes e depois salve o arquivo (CONTROL-O) e depois fecha (CONTROL-X)
python manage.py runserver
- Se confirmado, saia do servidor com
CONTROL-C
python manage.py migrate
- Se for o caso, exclua o arquivo db.sqlite3(
rm db.sqlite3
), pois o postgresql será utilizado.
Instalando e configurando o Gunicorn
O Gunicorn faz a comunicação entre o nginx
e a nossa aplicação Django.
pip install gunicorn
- Seguir o passo a passo do Gist gunicorn.md
Configurando o NGINX
O NGINX é um servidor web que substituará o runserver
do Django.
- Fazer as alterações