Como hospedar django com nginx no Ubuntu 18.04 Bionic Beaver Linux

Como hospedar django com nginx no Ubuntu 18.04 Bionic Beaver Linux

Objetivo

Instale e configure o Ubuntu 18.04 para hospedar a estrutura do Django.

Distribuições

Ubuntu 18.04

Requisitos

Uma instalação funcional do Ubuntu 18.04 com privilégios de raiz

Dificuldade

Médio

Convenções

  • # - requer que os comandos Linux sejam executados com privilégios root diretamente como usuário root ou por uso de sudo comando
  • $ - Requer que os comandos do Linux sejam executados como um usuário não privilegiado regular

Introdução

Se você deseja criar e hospedar aplicativos da web com Python, o Django é a escolha mais popular. Como o Python é tão fortemente integrado ao Linux, não é muito difícil instalar um servidor Django no Ubuntu.

Não há uma maneira definida de hospedar projetos django, mas uma pilha que consiste em PostgreSQL, Nginx, Gunicorn e Django é praticamente o padrão.

Instale os pacotes

Antes de começar, você precisa instalar os pacotes necessários. Não há muitos, mas certifique -se de desativar o Apache ou qualquer outro servidor da web em execução na porta 80 antes de iniciar.

$ sudo apt install python3 python3-venv nginx pósgresql


Crie o banco de dados

Você também precisará criar um banco de dados para armazenar as informações do seu aplicativo Django. PostgreSQL vai preencher essa função. Se você nunca usou o PostGresql antes, não é o mesmo que Mysql. Sua sintaxe é diferente e lida com os logins de usuários de maneira diferente também.

Para fazer login no PostgreSQL e gerenciá -lo, você precisa usar o PostGres Usuário em sua máquina que foi criado quando você instalou o pacote PostgreSQL. Mude para esse usuário com su.

$ sudo su postgres

Quando você estiver no PostGres Usuário, você acessa seu banco de dados com o PSQL comando.

Depois de fazer login, você deve adicionar uma senha ao seu usuário administrador antes de fazer qualquer outra coisa.

PostGres =# Alter o usuário PostGres com a senha criptografada 'YourPassword';

Em seguida, crie seu banco de dados.

PostGres =# Crie banco de dados your_db;

Crie um novo usuário regular para gerenciar o banco de dados. Este é o usuário com o qual o Django entrará em contato.

PostGres =# Crie função django_user com senha criptografada 'yourpassword';

Em seguida, conceda que as permissões do usuário usem o banco de dados.

PostGres =# conceda todos os privilégios no banco de dados Your_db a Django_user;

Quando terminar, saia com \ q. Saia do PostGres usuário também.

Configure seu diretório

Geralmente não é uma ótima idéia instalar pacotes python em todo o sistema. É muito mais difícil gerenciar versões do pacote e manter tudo estável.

O Python 3 suporta ambientes virtuais que permitem compartimentar seus projetos Python por diretório. Cada ambiente tem seu próprio conjunto de pacotes Python e você pode instalá -los e gerenciá -los como um usuário regular.

Escolha o local onde deseja hospedar seu site. /var/www/yoursite geralmente é uma boa escolha. Use o comando interno para criar seu ambiente virtual.

$ sudo python3 -m venv/var/www/yourserite

Vá para o seu diretório e ative -o.

$ cd/var/www/yoursite $ fonte/ativação

Quando terminar no diretório, você pode desativá -lo facilmente.

$ desativado


Instale o Django

Com o seu ambiente virtual iniciado, você pode instalar o próprio Django junto com alguns outros pacotes Python que você precisará conectar tudo.

$ pip install django psycopg2 gunicorn

Vai levar alguns segundos, mas Pip instalará tudo o que você precisa para configurar seu projeto Django.

Crie um projeto Django

Agora que você tem django, você pode realmente criar seu projeto. Certifique -se de que você está em seu ambiente virtual e tenha ativado.

$ django-admin startproject your-Project

Depois de ter seu projeto, você precisará alterar a configuração para configurar seu banco de dados. Por padrão, o Django está configurado para usar o SQLITE3 como seu banco de dados. Isso é mais para fins de desenvolvimento. Para usar o PostgreSQL, você precisará editar a configuração principal do Django em seu projeto/seu projeto/configurações.py. Encontre esse arquivo e abra -o. Procure o Bancos de dados bloqueie e edite para se parecer com o abaixo.

Bancos de dados = 'default':  #'mecanismo': 'django.dB.back -end.SQLITE3 ', #' Nome ': OS.caminho.Junte -se (base_dir, 'db.sqlite3 '),' motor ':' django.dB.back -end.PostGresql_Psycopg2 ',' Nome ':' Your_DB ',' Usuário ':' Django_user ',' Senha ':' YourPassword ',' Host ':' localhost ',' Port ': ",

Salvar e sair. Agora, agora você pode aplicar as migrações iniciais e criar seu usuário administrador. Retorne ao diretório raiz do seu projeto e execute os seguintes comandos Linux.

$ python gerencia.py migrar $ python gerenciar.py createSuperUser

Configure o Gunicorn

A configuração do Gunicorn é bastante simples, mas ainda é importante ser feito. Criar uma Gunicorn diretório na raiz do seu site. Você essencialmente precisa dizer por onde correr seu soquete, quantos trabalhadores aparecerem e onde fazer login. Crie um arquivo python chamado Gunicorn-Config.py, e faça parecer algo parecido com o abaixo.

Importar multiprocessamento Bind = 'Unix:/TMP/Gunicorn.Sock 'Workers = Multiprocessing.cpu_count () * 2 + 1 recarregar = true Daemon = True AccessLog = './acesso.Log 'ErrorLog ='./erro.registro'

Depois de definir da maneira que você gosta, salve e saia.

Você pode iniciar o Gunicorn no diretório raiz do seu projeto com um comando semelhante a este:

$ Gunicorn -C Gunicorn/Gunicorn -Config.py seu projeto.WSGI


Configure nginx

Toda a configuração do Nginx repousa em /etc/nginx. Há uma tonelada de arquivos nesse diretório, mas você não precisa se preocupar com todos eles. Você só realmente precisa /etc/nginx/nginx.conf e o arquivo específico do site que você criará em /etc/nginx/sites-ABILIÁRIO/SEU SITE. Na verdade, a principal configuração do NGINX não é tão necessário, a menos que você queira otimizar seu site em produção. Você realmente não precisa mexer com ele apenas para fazer seu site funcionar.

Então, crie um arquivo para o seu site em /etc/nginx/sites-ABILIÁRIO/SEU SITE.

A primeira parte do arquivo que você precisa é o a montante bloquear. Este bloco diz ao NGINX que o código do aplicativo da Web está sendo executado em outro lugar (Gunicorn, neste caso) e deve trocar solicitações com esse soquete ou endereço.

Upstream Your-Gunicorn Server Unix:/TMP/Gunicorn.meia falha_timeout = 0; 

Este bloco cria mais ou menos uma variável com base no nome que você especificou depois a montante e atribui o valor do servidor de destino. O servidor pode ser um soquete UNIX ou um endereço IP e número da porta. Como o Gunicorn estará funcionando localmente, usar um soquete Unix é melhor. Lembre -se de que você configurou isso na configuração do Gunicorn anteriormente, então aponte sua configuração nginx para ele.

Em seguida, você pode passar para o bloco principal para Nginx, o servidor bloquear. Adicione isso em.

servidor  

As opções básicas dizem ao nginx qual porta ouvir e qual URL para cuidar.

Ouça 80 Padrão; client_max_body_size 4G; Server_name Your-site.com; Keepalive_timeout 70;

Em seguida, adicione seus locais de log.

access_log/var/log/nginx/seu site.access_log main; error_log/var/log/nginx/seu site.error_log info;

Ponto nginx no diretório raiz do seu site.

root/var/www/virtualenv/your-site;

Gunicorn não serve arquivos estáticos, então você precisará configurar o Nginx para servir os arquivos estáticos do seu site. Exatamente onde esses arquivos estão localizados é determinado em seu arquivo de configurações do Django. Geralmente, existem dois diretórios, um para os arquivos estáticos do site e outro para arquivos enviados. Os blocos compartilham a mesma estrutura. O exemplo abaixo assume que seus arquivos estáticos existem em um diretório chamado estático Na raiz do seu projeto.

localização / static / AutoIndex on; Alias/var/www/virtualenv/your-site/static/; expira 1m; access_log off; add_header cache-control "público"; proxy_ignore_headers "set-cookie"; 

Existem algumas outras opções que fazem bons padrões para o cache.

Nas próximas localização Bloco que você precisará realmente lidar com a conexão com o Gunicorn. Como a montante Ele define outra espécie de variável e diz para passar as conexões para o seu bloco a montante.

Localização @proxy_to_app proxy_set_header x forwarded para $ proxy_add_x_forwarded_for; proxy_set_header host $ http_host; proxy_redirect off; proxy_pass http: // your gunicorn; 

Por fim, configure um bloco que informe o Nginx para procurar arquivos estáticos para corresponder a quaisquer solicitações de entrada. Se nenhum for encontrado, passe -o para o Gunicorn.

localização / try_files $ uri @proxy_to_app; 

Isso é tudo o que você absolutamente precisa. Você pode fazer muito mais ajuste de desempenho, mas não é essencial para fazer o django correr. Salvar e sair.

Crie um link entre seu novo arquivo e o sites habilitados pasta. Remova o existente padrão arquivo lá.

$ sudo rm/etc/nginx/sites-inabled/padrão $ sudo ln -s/etc/nginx/sites-avelaable/your site/etc/nginx/sites-enabled/

Reinicie o nginx.

$ sudo systemctl reinicie nginx

Até agora, você poderá abrir seu navegador e ver a página padrão do django.

Pensamentos finais

Tudo bem, então isso foi uma espécie de estrada longa. Se você deseja ou não passar por essa configuração em um servidor de desenvolvimento depende de você. Para produção, porém, fornece uma base sólida para hospedar seus projetos de Django. Lembre -se, porém, há definitivamente mais otimização que você pode fazer tanto na configuração do Django quanto no nginx.

Tutoriais do Linux relacionados:

  • Coisas para instalar no Ubuntu 20.04
  • Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
  • Ubuntu 20.04: WordPress com instalação nginx
  • Coisas para instalar no Ubuntu 22.04
  • Como verificar o status do nginx no Ubuntu
  • Como instalar o nginx no Linux
  • Coisas para fazer depois de instalar o Ubuntu 22.04 Jellyfish…
  • Como verificar a versão nginx no Linux
  • Ubuntu 20.04 Guia
  • Ubuntu 20.04 truques e coisas que você pode não saber