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.
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.
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
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.
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
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
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:
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!
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:
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.
Inscreva-se aqui
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