django + wsgi + suexec + userdir + apache?

2

Eu tenho um site django 1.1 que quero rodar no wsgi (já que parece ser a implementação recomendada no apache). Eu quero que ele seja executado como o usuário www (o apache está sendo executado como www-data). Idealmente, gostaria de trabalhar com o link (~ www / public_html), bem como link . Eu também quero que isso funcione para outros usuários que podem usar wsgi mais tarde. Posso fazer isso acontecer? Eu tenho olhado para docs tentando descobrir por onde começar, mas estou tendo problemas para combinar userdir e wsgi para me deixar executar ~ xxx / public_html / index.wsgi como usuário xxx, para cada usuário xxx.

    
por Jayen 10.07.2011 / 12:08

2 respostas

0

Meu problema específico foi resolvido da seguinte maneira:

  • No bloco VirtualHost:

    DocumentRoot /home/www/public_html
    WSGIDaemonProcess ~www user=www group=www
    
  • Em userdir.conf:

    RewriteEngine On
    RewriteCond %{REQUEST_URI} ^/~([^/]+)
    RewriteRule . - [E=URL_USER:~%1]
    WSGIProcessGroup %{ENV:URL_USER}
    
  • Em ~ www / public_html / .htaccess

    Options +ExecCGI
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /~www/index.wsgi/$1 [QSA,PT,L]
    RewriteRule ^$ /~www/index.wsgi/$1 [QSA,PT,L]
    

E algumas coisas que eu realmente não precisei:

  • dir.conf:

    DirectoryIndex index.wsgi
    
  • wsgi.conf

    AddHandler wsgi-script .wsgi
    
por 14.07.2011 / 08:40
1

Para começar, veja o modo daemon mod_wsgi. Isso permite delegar aplicativos WSGI para serem executados em processos de daemon distintos. Esses processos podem então ser executados como um usuário especificado sem a necessidade de usar o suxec. Veja:

link

Para a execução de um diretório configurado UserDir com o usuário tendo o controle de onde os aplicativos são montados, você não pode usar o WSGIScriptAlias e, em vez disso, precisa usar o método AddHandler para configurar o mod_wsgi. Veja:

link

A diretiva UserDir fornece implicitamente a diretiva Alias, portanto você só precisa se preocupar com a diretiva AddHandler, etc.

Observe, no entanto, que por causa das regras de precedência no Apache, você provavelmente não pode usar WSGIScriptAlias em '/' para o mesmo host virtual geral que pode mascarar os diretórios do usuário. Significa apenas que você precisa confiar no AddHandler, com o ajuste mod_rewrite, se estiver montando na raiz do site, como descrito na última parte da seção da documentação.

Sugiro que você use a lista de discussão oficial do mod_wsgi para mais detalhes.

    
por 10.07.2011 / 16:37