Hospedando Django com Nginx e Gunicorn no Linux

Hospedando Django com Nginx e Gunicorn no Linux

Introdução

A hospedagem de aplicativos da Web do Django é bastante simples, embora possa ficar mais complexo do que um aplicativo PHP padrão. Existem algumas maneiras de lidar com a interface Django com um servidor da web. Gunicorn é facilmente um dos mais simples.

Gunicorn (abreviação de unicórnio verde) atua como no servidor intermediário entre o seu servidor da web, o nginx neste caso e o próprio Django. Ele lida com servir o próprio aplicativo enquanto o nginx capta o conteúdo estático.

Gunicorn

Instalação

Instalar o Gunicorn é super fácil com o PIP. Se você já configurou seu projeto de Django usando o VirtualEnv, você tem PIP e deve estar familiarizado com a maneira como funciona. Então, instale o Gunicorn em seu virtualenv.

$ pip install gunicorn

Configuração

Uma das coisas que faz do Gunicorn uma escolha atraente é a simplicidade de sua configuração. A melhor maneira de lidar com a configuração é criar um Gunicorn Pasta no diretório raiz do seu projeto Django. Dentro dessa pasta, crie um arquivo de configuração.

Para este guia, será chamado Gunicorn-Conf.py. Nesse arquivo, crie algo semelhante à configuração abaixo.

importar multiprocessamento bind = 'unix: /// tmp/gunicorn1.Sock 'Workers = Multiprocessing.cpu_count () * 2 + 1 recarregar = true daemon = true 

No caso da configuração acima, o Gunicorn criará um soquete Unix em /tmp/gunicorn1.meia. Ele também aumentará vários processos de trabalhadores equivalentes ao dobro do número de núcleos da CPU mais um. Ele também recarregará automaticamente e será executado como um processo Daemonized.

Correndo

O comando para executar o Gunicorn é um pouco longo, mas possui opções de configuração adicionais especificadas nele. A parte mais importante é apontar a arma para o seu projeto .WSGI arquivo.

Gunicorn -C Gunicorn/Gunicorn -Conf.py -d -terror -logfile gunicorn/erro.registre seu projeto.WSGI

O comando acima deve ser executado da raiz do seu projeto. Diz a Gunicorn para usar a configuração que você criou com o -c bandeira. -D mais uma vez especifica que deve ser daemonizado. A última parte especifica a localização do erro de Gunicorn por muito tempo no Gunicorn pasta que você criou. O comando termina dizendo ao Gunicorn a localização do seu .WSGIarquivo.

Nginx

Agora que o Gunicorn está configurado e em execução, você pode configurar o nginx para se conectar e servir seus arquivos estáticos. Este guia assumirá que você já está configurado e que está usando separado servidor blocos para os sites hospedados através dele. Também vai incluir algumas informações SSL.

Se você quiser aprender a obter certificados SSL gratuitos para o seu site, dê uma olhada no nosso guia LetSencrypt.

# Configure a conexão com Gunicorn a montante YourProject-Gunicorn Server Unix:/tmp/Gunicorn1.meia falha_timeout = 0;  # Redirecionar tráfego não criptografado para o servidor de sites criptografado ouça 80; Server_name YourWebsite.com; retornar 301 https: // yourwebsite.com $ request_uri;  # O servidor principal do servidor servidor  # Defina a porta para ouvir e especificar o domínio para ouvir para ouvir 443 SSL padrão; client_max_body_size 4G; Server_name YourWebsite.com; # Especifique os locais de log access_log/var/log/nginx/yourwebsite.access_log main; error_log/var/log/nginx/yourwebsite.error_log info; # Ponto nginx para o seu ssl certs ssl on; SSL_CERTificate/etc/letSencrypt/Live/yourwebsite.com/fullchain.PEM; ssl_certificate_key/etc/letSencrypt/vive/yourwebsite.com/privky.PEM; # Defina o seu diretório raiz root/var/www/yourvirtualenv/yourproject; # Ponto nginx no seu estático Localização / static /  # AutoIndex Os arquivos para torná -los navegáveis ​​se você deseja o AutoIndex ativado; # A localização dos seus arquivos alias/var/www/yourvirtualenv/yourproject/static/; # Configure o cache para seus arquivos estáticos expira 1m; access_log off; add_header cache-control "público"; proxy_ignore_headers "set-cookie";  # Ponto nginx em seus arquivos carregados Localização / mídia / AutoIndex Se você deseja o AutoIndex ligado; # A localização do seu alias de arquivos carregados/var/www/yourvirtualenv/yourproject/mídia/; # Configurar dores para seus arquivos enviados expira 1m; access_log off; add_header cache-control "público"; proxy_ignore_headers "set-cookie";  localização /  # tente seus arquivos estáticos primeiro e depois redirecione para Gunicorn Try_files $ uri @proxy_to_app; # Passa solicitações para o local Gunicorn @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: // njc-gunicorn;  # Cache para HTML, XML e JSON Localização ~* \.(html?| xml | json) $ expira 1h;  # Cache para todos os outros ativos estáticos Localização ~* \.(jpg | jpeg | png | gif | ico | css | js | ttf | woff2) $ expira 1m; access_log off; add_header cache-control "público"; proxy_ignore_headers "set-cookie";  

Ok, então isso é um pouco demais, e pode haver muito mais. Os pontos importantes a serem observados são os a montante bloquear que aponta para o Gunicorn e o localização Blocos que passam tráfego para Gunicorn. A maior parte do resto é bastante opcional, mas você deve fazê -lo de alguma forma. Os comentários na configuração devem ajudá -lo com os detalhes.

Depois que esse arquivo é salvo, você pode reiniciar o nginx para que as alterações tenham efeito.

# SystemCtl Reiniciar nginx

Quando o Nginx voltar online, seu site deve estar acessível através do seu domínio.

Pensamentos finais

Há muito mais que pode ser feito com o nginx, se você quiser cavar fundo. As configurações fornecidas, no entanto, são um bom ponto de partida e são algo que você pode realmente usar. Se você está acostumado a aplicações apach e inchadas, a velocidade de uma configuração de servidor como essa deve ser uma surpresa agradável.

Tutoriais do Linux relacionados:

  • Coisas para instalar no Ubuntu 20.04
  • Como configurar um endereço IP estático no Manjaro Linux
  • Linux Apache não executando arquivos PHP: Solução
  • Uma introdução à automação, ferramentas e técnicas do Linux
  • Ubuntu 20.04: WordPress com instalação nginx
  • Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
  • Como instalar o PHP no Ubuntu Linux
  • Mint 20: Melhor que o Ubuntu e o Microsoft Windows?
  • OpenLITESPEED WordPress Instalação
  • Como criar uma pilha de lâmpadas à base de docker usando o docker em…