Django Framework, Django Framework, Frameworks, Python, Sem categoria

Como usar o Django com o Apache

1 de dezembro de 2015
Como usar o Django com o Apache

Não é por acaso que o Django é hoje o mais reconhecido framework de Python e como todo bom framework, Django inclui um servidor em suas “entranhas”, cujo uso é indicado na fase de desenvolvimento de suas aplicações, obviamente. Isso porque ele fornece todos os recursos que agilizam o desenvolvimento do seu projeto como a capacidade de detectar mudanças em seu código e fazer um reload automático na sua aplicação, tornando o ajuste imediatamente disponível. Assim você só precisa se preocupar em escrever seu código.

Mas aí você pode está se perguntando. E na hora de subir o meu projeto em produção, qual servidor eu utilizo? Bem, opções não faltam. Você pode decidir entre alguns, sendo que os mais usados são Apache e Nginx. Por hora, nosso texto abordará apenas como usar o Django com o Apache, por meio do mod_wsgi. Portanto vamos deixar o Nginx para uma outra oportunidade. Vamos utilizar também o Vagrant, pois deste modo conseguimos simular um ambiente real de produção. Em suma, o processo será o seguinte:

  •  Criaremos um box do Vagrant com Ubuntu server 14.04 32bits
  •  Instalaremos os pacotes necessárias para se usar Django com Apache
  •  Criação do ambiente virtual com a ferramenta Virtualenv
  •  Instalação do Django
  •  Criação do VirtualHost com as diretivas que permitirão ao Apache reconhecer nossa aplicação Django.

Criando o Vagrant Box

 

$ vagrant init ubuntu/trusty32

 

Isto vai criar um arquivo “Vagrantfile” dentro do seu diretório atual. Precisaremos fazer duas alterações bastante simples no arquivo.

  • Decomente a seguinte linha:

 

config.vm.network "private_network", ip: "192.168.33.10"

 

  • Defina as opções de sincronia de pastas entre a máquina virtual e a máquina hospedeira, para isto, descomente e edite a linha do config.vm.synced_folder

 

config.vm.synced_folder "/sua/pasta/local", "/home/vagrant/django", nfs:true

 

Agora rode o comando $ vagrant up para inicializar o box. Uma observação que preciso fazer. Sempre que realizar uma mudança no Vagrantfile, é importante que rode o comando $ vagrant reload, para aplicar a configuração.

Observe que em config.vm.network nós temos o endereço IP 192.168.33.10. Você pode usar qualquer endereço ip, o importante é que você tenha em mente o fato de que vamos utilizar este endereço IP para acessar nossa aplicação, criada dentro do box, pelo navegador da nossa máquina hospedeira. Obviamente, nós iremos configurar um domínio fictício meusite.com.br o qual será utilizado para acessar nossa aplicação ao invés de usar o IP. Para isto, edite o arquivo de hosts da sua máquina Windows/Linux ou OSX e insira o IP 192.168.33.10 associado ao domínio fictício meusite.com.br.

No OSX ou Linux você pode usar o comando:

$ sudo vim /et/hosts

No Windows o arquivo de hosts está em:

%systemroot%\system32\drivers\etc\

Luís Fred - Como usar o Django com o Apache

Arquivo de Hosts do OSX

Depois de criado o box, você poderá acessá-lo por meio do ssh, basta que use o comando:

$ vagrant ssh

 

Se estiver no Windows, você pode utilizaro Putty.

Uma vez que estiver dentro do seu vagrant box, instale os pacotes necessários:

$ sudo apt-get update
$ sudo apt-get install python-mysqldb python-pip apache2 libapache2-mod-wsgi
$ sudo pip install virtualenv

 

Criando as pastas necessárias e o virtualenv

$ cd /home/vagrant
$ mkdir django
$ cd django
$ mkdir meusite.com.br
$ cd meusite.com.br

 

Crie um virtualenv e ative-o para que possa, dentro dele, instalar o django e as dependências específicas da sua aplicação

$ virtualenv env
$ source ./env/bin/activate

 

Depois disso seu prompt indicará que você está dentro do virtualenv criado e que a partir deste momento, todos os pacotes de python que instalar, ficarão isolados dentro deste ambiente. Veja o exemplo:

(env)vagrant@vagrant-ubuntu-trusty-32:~/django/meusite.com.br$

 

Instalando o Django

Agora instale o Django com o comando:

$ pip install django

 

Crie uma aplicação de Django para usarmos no teste:

$ django-admin startproject meusite

 

Isto criará uma aplicação Django dentro do seu diretório atual, a qual faremos rodar dentro do Apache. Para isto, crie um Virtualhost com as seguintes instruções:

$ sudo vim /etc/apache2/sites-available/meusite.com.br.conf
<VirtualHost *:80>

ServerName meusite.com.br
ServerAlias meusite.com.br

WSGIScriptAlias / /home/vagrant/django/meusite.com.br/meusite/meusite/wsgi.py

WSGIDaemonProcess meusite.com.br python-path=/home/vagrant/django/meusite.com.br/meusite:/home/vagrant/django/meusite.com.br/env/lib/python2.7/site-packages
WSGIProcessGroup meusite.com.br

ErrorLog /home/vagrant/django/meusite.com.br/meusite/error.log

DocumentRoot /home/vagrant/django/meusite.com.br/meusite
<Directory /home/vagrant/django/meusite.com.br/meusite/meusite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

Alias /static /home/vagrant/django/meusite.com.br/meusite/static
Alias /media /home/vagrant/django/meusite.com.br/meusite/media

<Directory /home/vagrant/django/meusite.com.br/meusite/meusite/static>
Require all granted
</Directory>

<Directory /home/vagrant/django/meusite.com.br/meusite/meusite/media>
Require all granted
</Directory>

</VirtualHost>

 

Salve o arquivo e e habilite o novo virtualhost com o comando:

$ sudo a2ensite meusite.com.br.conf

 

Reinicie o apache

$ sudo service apache2 restart

 

e agora acesse sua aplicação pelo navegador http://meusite.com.br

Luís Fred - Como usar o Django com o Apache

Assista o vídeo para mais detalhes do procedimento

Like

Veja também