DEV Community

Cover image for Subir aplicação web DJANGO em um servidor Linux 1/2
Rita Carolina for Feministech

Posted on • Edited on

6 1 1 1 1

Subir aplicação web DJANGO em um servidor Linux 1/2

Colocar no ar uma aplicação web Django em um servidor Linux envolve várias etapas. Aqui está um passo a passo detalhado para ajudá-lo nesse processo:

Prepare o servidor Linux:

  • Atualize o sistema operacional com os comandos sudo apt update e sudo apt upgrade.
  • Instale dependências necessárias: sudo apt install python3-pip python3-venv python3-dev libpq-dev.

Transfira o código da aplicação Django para o servidor:

  • Use um cliente SFTP, SCP ou Git para transferir o código-fonte do seu projeto Django para o servidor.

Configurar um ambiente virtual Python:

  • Crie um ambiente virtual: python3 -m venv myenv.
  • Ative o ambiente virtual: source myenv/bin/activate.
  • Instale as dependências do projeto: pip install -r requirements.txt.

Configure o arquivo settings.py do Django:

  • Modifique a variável ALLOWED_HOSTS para incluir o endereço IP ou domínio do seu servidor.
  • Configure o banco de dados, se necessário. Por exemplo, para um banco de dados PostgreSQL, instale a biblioteca psycopg2 e configure a variável DATABASES.

Migre o banco de dados e colete arquivos estáticos:

  • Execute as migrações: python manage.py migrate.
  • Colete os arquivos estáticos: python manage.py collectstatic.

Instale e configure o servidor web Gunicorn:

Instale o Gunicorn no ambiente virtual: pip install gunicorn.

  • Execute o Gunicorn para testar a aplicação: gunicorn --bind 0.0.0.0:8000 myproject.wsgi.

Configure o servidor web Nginx como proxy reverso:

  • Instale o Nginx: sudo apt install nginx.
  • Remova o link simbólico padrão do Nginx: sudo rm /etc/nginx/sites-enabled/default.
  • Crie um arquivo de configuração para o seu projeto: sudo nano /etc/nginx/sites-available/myproject.
  • Adicione a configuração do proxy reverso, substituindo "myproject" e "8000" pelos valores apropriados para o seu projeto:
server {
    listen 80;
    server_name mydomain.com;

    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;
    }

    location /static/ {
        alias /path/to/static/files/;
    }
}
Enter fullscreen mode Exit fullscreen mode
  • Crie um link simbólico para o arquivo de configuração: sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/.
  • Verifique se a configuração do Nginx está correta: sudo nginx -t.
  • Reinicie o Nginx: sudo systemctl restart nginx.

Continuação: https://dev.to/feministech/subir-aplicacao-web-django-em-um-servidor-linux-22-300g
Fonte: ChatGPT4.0

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

Top comments (1)

Collapse
 
eduardoklosowski profile image
Eduardo Klosowski

Tem algumas questões que eu gostaria de contribuir. A primeira, como o pip está sendo utilizado dentro do virtualenv, não é necessário instalar o pacote python3-pip no sistema. Outra questão, toda a comunicação entre os processos está usando a pilha de rede, se tudo estiver rodando no mesmo computador é possível usar unix socket e assim ter um desempenho um pouco melhor, já que não precisa analisar se a porta está aberta, se o pacote não deveria ser bloqueado e afins. Também ficou faltando uma configuração do systemd para subir o gunicorn automaticamente quando o servidor é ligado, já que os demais serviços já possuem essa configuração (postgresql e nginx).

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay