Como usar o Django com Apache e mod_wsgiLink para este cabeçalho

Implementar Django com Apache e mod_wsgi é uma forma testada e experimentada de colocar o Django em produção.

O mod_wsgi é um módulo Apache o quam pode hospedar qualquer aplicação Python WSGI, incluindo Django. Django irá funcionar com qualquer versão do Apache que suporte mod_wsgi.

A official mod_wsgi documentation é sua fonte para todos os detalhes sobre como usar mod_wsgi. Você provavelmente quer começar com installation and configuration documentation.

Configuração BásicaLink para este cabeçalho

Once you’ve got mod_wsgi installed and activated, edit your Apache server’s httpd.conf file and add the following.

Apache
WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py
WSGIPythonHome /path/to/venv
WSGIPythonPath /path/to/mysite.com

<Directory /path/to/mysite.com/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

A primeira parte da linha WSGIScriptAlias é a URL base que você quer servir sua aplicação (/ indica a URL raiz), e a segunda é o local do arquivo “WSGI” – veja abaixo – no seu sistema, geralmente dentro do pacote do seu projeto (mysite neste exemplo). Isso diz ao Apache para servir qualquer requisição abaixo da URL informada usando a aplicação WSGI definida naquele arquivo.

If you install your project’s Python dependencies inside a virtual environment, add the path using WSGIPythonHome. See the mod_wsgi virtual environment guide for more details.

A linha WSGIPythonPath assegura que o pacote do seu projeto está disponível no Python path para ser importado; em outras palavras, que import mysite funcione.

The <Directory> piece ensures that Apache can access your wsgi.py file.

Agora precisamos assegurar que este arquivo wsgi.py com objeto de aplicação WSGI exista. Desde de o Django versão 1.4, startproject terá criado um para você; se não, você precisará criá-lo. Veja Documentação geral WSGI para o conteúdo padrão que você deveria colocar neste arquivo, e o que mais você pode adicionar a ele.

Usando mod_wsgi no modo deamonLink para este cabeçalho

“Modo Deamon” é o modo recomendado para rodar mod_wsgi (em plataforma não Windows). Para criar o grupo de processos deamon requerido e delegar o Django para rodar dentro, precisa adicionar as diretivas WSGIDaemonProcess e WSGIProcessGroup. Um outra mudança requerida na configuração acima se usar deamon mode é que não se pode usar o WSGIPythonPath; no lugar deve usar a opção python-path para WSGIDaemonProcess, por exemplo:

Apache
WSGIDaemonProcess example.com python-home=/path/to/venv python-path=/path/to/mysite.com
WSGIProcessGroup example.com

Se quer servir seu projeto em um subdiretório (https://example.com/mysite neste exemplo), você pode adicionar WSGIScriptAlias a configuração acima:

Apache
WSGIScriptAlias /mysite /path/to/mysite.com/mysite/wsgi.py process-group=example.com

Veja a documentação oficial do mod_wsgi para details on setting up daemon mode

Servindo arquivosLink para este cabeçalho

Django doesn’t serve files itself; it leaves that job to whichever web server you choose.

We recommend using a separate web server – i.e., one that’s not also running Django – for serving media. Here are some good choices:

Se, porém, você não tem opção de servir arquivos de media na mesmo VirtualHost Apache que está o Django, você pode configurar o Apache para servir algumas URLs como media estática, e outros usando a interface mod_wsgi para Django.

Este exemplo define o DJango como raiz do site, mas serve robots.txt, favicon.ico, e qualquer coisa nas URLs /static/ e /media como arquivos estáticos. Todas as outra URLs serão servidas usando o mod_wsgi:

Apache
Alias /robots.txt /path/to/mysite.com/static/robots.txt
Alias /favicon.ico /path/to/mysite.com/static/favicon.ico

Alias /media/ /path/to/mysite.com/media/
Alias /static/ /path/to/mysite.com/static/

<Directory /path/to/mysite.com/static>
Require all granted
</Directory>

<Directory /path/to/mysite.com/media>
Require all granted
</Directory>

WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py

<Directory /path/to/mysite.com/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

Persistindo arquivos do adminLink para este cabeçalho

When django.contrib.staticfiles is in INSTALLED_APPS, the Django development server automatically serves the static files of the admin app (and any other installed apps). This is however not the case when you use any other server arrangement. You’re responsible for setting up Apache, or whichever web server you’re using, to serve the admin files.

Os arquivos do admin ficam em (django/contrib/admin/static/admin) da distribuição Django.

We strongly recommend using django.contrib.staticfiles to handle the admin files (along with a web server as outlined in the previous section; this means using the collectstatic management command to collect the static files in STATIC_ROOT, and then configuring your web server to serve STATIC_ROOT at STATIC_URL), but here are three other approaches:

  1. Crie um link simbólico para os arquivos estáticos do admin de dentro do seu “document root”(isso talvez requeira ``+FollowSymLinks``na sua configuração do Apache).

  2. Use uma diretiva Alias, como demonstrado acima, para apelidar a URL apropriada (provavelmente : settings:SATTIC_URL`+ ``admin/`) para o local real dos arquivos do admin.

  3. Copie os arquivos estáticos do admin para que entã eles fiquem dentro do “document root” do Apache.

Autenticação do banco de dados de usuário do Django vindo do Apache.Link para este cabeçalho

O Django disponibiliza um facilitador para habilitar o Apache a autenticar usuários diretamente no backend de autenticação do Django. veja documentação de autenticação do mod_wsgi.