DEV Community

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

Posted on • Edited on

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

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).