"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Implantar Django em produção

Implantar Django em produção

Publicado em 2024-11-07
Navegar:800

Recentemente implantei meu próprio aplicativo Django em produção. O site chama-se videiro.com e foi desenvolvido em django HTML/CSS/JS Tailwind.

Configurar

Estou usando um servidor Debian 12 que exporá meu aplicativo por meio de túneis cloudflare. Todos os arquivos estáticos estão sendo servidos via nginx e o projeto Django está sendo executado pelo gunicorn.

Neste guia, mostrarei como configuro isso.

Preparando o projeto Django

A primeira coisa que você terá que fazer é abrir o settings.py e alterar o seguinte

Debug = False
ALLOWED_HOSTS = ['yourdomain.tld']
CSRF_COOKIE_SECURE = True
CSRF_TRUSTED_ORIGINS = [
    'yourdomain.tld',
]

Você também deve alterar SECRET_KEY para uma longa string aleatória, que nunca deve compartilhar com ninguém.

Depois disso crie um novo arquivo chamado .gitignore e cole o seguinte:

db.sqlite3
*.pyc

Isso garantirá que o banco de dados não seja carregado em nosso servidor e que nenhum arquivo pyc seja carregado.

Agora você pode enviar seu projeto para um novo repositório github (ou repositório gitea). Se você não deseja que todos tenham acesso ao seu código-fonte, certifique-se de definir o repositório como privado.

Se você quiser ter certeza de que seu código-fonte permanece privado, recomendo que você configure uma instância gitea auto-hospedada, leia Selfhost sua própria instância gitea - alternativa auto-hospedada e leve ao github, para aprender como fazer isso.

git init
git branch -M main
git add .
git commit -m "initial commit"
git remote add origin https://...
git push -u origin main

Agora que fizemos isso, você deve fazer login no seu servidor

Configuração do servidor

Antes de configurar qualquer coisa, certifique-se de não permitir logins ssh com senha. Siga Protegendo o ssh com autenticação baseada em chave para proteger seu servidor contra esses tipos de ataques.

Faça login no seu servidor

ssh [email protected]

Certifique-se de que seus pacotes estejam atualizados

sudo apt update && sudo apt upgrade

Agora instale python, pip, git e nginx

sudo apt install python3 python3-pip git nginx

Agora clone seu projeto em seu diretório inicial.

git clone https://...
cd my-project

Depois de instalar o seguinte:

pip install django django-crispy-forms whitenoise

Agora tente executar o projeto:

python3 manage.py runserver

se você receber um erro informando que um pacote está faltando, instale-o e execute-o novamente.

Configurando o Gunicorn

Agora vamos configurar o gunicorn

Primeiro instale

pip install gunicorn

Agora crie um novo arquivo chamado gunicorn.service com seu editor de texto favorito:

sudo vim /etc/systemd/system/gunicorn.service

E cole o seguinte:

[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=YOURUSER
Group=www-data
WorkingDirectory=/home/YOURUSER/PROJECT
ExecStart=/path/to/gunicorn --access-logfile - --workers 3 --bind 127.0.0.1:8000 PROJECTNAME.wsgi:application

[Install]
WantedBy=multi-user.target

Altere YOURUSER para seu usuário.

Para encontrar o caminho para o gunicorn, execute:

which gunicorn

E o nome do seu projeto é o nome da pasta dentro do seu projeto que contém o arquivo settings.py.

Agora execute os seguintes comandos para iniciar e ativar o gunicorn (iniciar na inicialização)

sudo systemctl daemon-reload
sudo systemctl start gunicorn.service
sudo systemctl enable gunicorn.service

Agora, se você for para 127.0.0.1:8000, deverá ver seu projeto em execução.

Mas ainda não terminamos

Configurando o nginx

Agora precisamos servir nosso conteúdo estático via nginx.

Primeiro crie um novo arquivo de configuração nginx com seu editor de texto favorito:

sudo vim /etc/nginx/sites-available/PROJECT

Altere PROJECT para o que você quiser

Agora cole o seguinte conteúdo:

server {
    listen 80;
    server_name YOURDOMAIN;

    location /static/ {
    alias /var/www/staticfiles/;
    }

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $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;
    }
}

Basta alterar YOURDOMAIN para o domínio em que será hospedado.

Crie um link simbólico para ativar seu site:

sudo ln -s /etc/nginx/sites-available/PROJECT /etc/nginx/sites-enabled/

Iniciar e ativar o nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

Configurar arquivos estáticos

A primeira coisa que você terá que fazer é fazer cd em seu projeto (django)

cd project

Agora execute o seguinte comando:

python3 manage.py collectstatic

Isso criará uma nova pasta chamada staticfiles

Agora para configurar os arquivos estáticos temos duas opções:

  1. Altere o usuário em /etc/nginx/nginx.conf para o seu usuário (menos seguro)
  2. Copie os arquivos estáticos para /var/www/ (mais seguro)

Estarei fazendo a 2ª opção:

Primeiro crie um novo arquivo chamado staticfiles em /var/www

sudo mkdir -p /var/www/staticfiles

Agora copie todos os arquivos estáticos do seu projeto para lá:

sudo cp staticfiles/* /var/www/staticfiles

Agora entre em /var/www

cd /var/www

Alterar a propriedade de todos os arquivos

sudo chown www-data:www-data staticfiles
sudo chown www-data:www-data staticfiles/*

Reinicie o serviço nginx:

sudo systemctl restart nginx

Agora, se você for para:

127.0.0.1

Você deverá ver seu site rodando com todos os arquivos estáticos sendo veiculados!

Exposição por meio de túneis cloudflare

Agora, para tornar seu site acessível publicamente.

Para fazer isso, você precisará de uma conta cloudflare e um domínio apontado para cloudflare.

Primeiro acesse o painel Zero Trust

Em Redes, clique em Túneis e depois em Criar um túnel

Depois de criado, você deve instalar e executar um conector, siga as instruções na página para sua configuração específica.

Depois que o conector estiver em execução, você deve clicar na guia Nome de host público e Adicionar um nome de host público.

Agora você deverá ver algo assim: Deploy django to production

Preencha as informações como eu fiz. O tipo de serviço deve ser HTTP e o URL deve ser 127.0.0.1:80 ou localhost:80

Agora, se você for para o domínio especificado, verá seu aplicativo instalado e funcionando.

Parabéns!

Se você gostou desta postagem e deseja apoiar meu trabalho (principalmente não remunerado), você pode doar aqui.

Junte-se ao meu boletim informativo gratuito!

Inscreva-se aqui

Declaração de lançamento Este artigo está reproduzido em: https://dev.to/4rkal/deploy-django-to-production-4bn0?1 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3