Hospedagem virtual em massa do Apache & suexec & fcgid

4

Eu segui o tutorial do Falco e tudo agora funciona como esperado para 2 usuários (por exemplo, john e alice) com seus diretórios relevantes ( /var/www/john e /var/ww/alice ).

Agora, quero ir para o próximo nível: em vez de definir diferentes vhosts em /etc/apache2/sites-available/<username> e reiniciar o Apache, preciso de uma hospedagem virtual em massa configurada dinamicamente ( link ). Digamos que meu servidor DNS tenha registros para: another.site.example.com , eu quero que o seu diretório home esteja em /var/www/another.site/web .

O problema é todas essas configurações para suexec e mod_fcgid. Eu terminei com este rascunho do meu httpd.conf (ou devo criar um arquivo como /etc/apache2/sites-available/mass_virtual ?):

NameVirtualHost *:80

#default virtual host
<VirtualHost *:80>
  ServerName www.example.com
  ServerAlias example.com
  ServerAdmin [email protected]
  DocumentRoot /var/www/root/web/

  <IfModule mod_fcgid.c>
    SuexecUserGroup web-admin web-admin
    <Directory /var/www/root/web/>
      Options +ExecCGI
      Options -Indexes
      AllowOverride All
      AddHandler fcgid-script .php
      FCGIWrapper /var/www/php-fcgi-scripts/root/php-fcgi-starter .php
      Order allow,deny
      Allow from all
    </Directory>
  </IfModule>

  # ErrorLog /var/log/apache2/error.log
  # CustomLog /var/log/apache2/access.log combined
  ServerSignature Off

</VirtualHost>

#3rd-level subdomain virtual hosts
<VirtualHost *:80>
  UseCanonicalName Off
  ServerAlias *.example.com
  #problematic email!
  ServerAdmin [email protected]
  #is this /var/www/another.site/web or /var/www/www.another.site/web for
  #a request for www.another.site.example.com ?
  VirtualDocumentRoot /var/www/%-3+/web

  <IfModule mod_fcgid.c>
    #problematic group and user!
    SuexecUserGroup web1 web1
    <Directory /var/www/*/web/>
      Options +ExecCGI
      Options -Indexes
      AllowOverride All
      AddHandler fcgid-script .php
      FCGIWrapper /var/www/php-fcgi-scripts/*/php-fcgi-starter .php
      Order allow,deny
      Allow from all
    </Directory>
  </IfModule>

  # ErrorLog /var/log/apache2/error.log
  # CustomLog /var/log/apache2/access.log combined
  ServerSignature Off

</VirtualHost>
  1. Como você pode ver nos comentários, tenho uma configuração ServerAdmin [email protected] , a SuexecUserGroup web1 web1 e a VirtualDocumentRoot /var/www/%-3+/web problemática!

  2. Além disso, para garantir a segurança, acho que IfModule não deveria existir. mod_fcgid não pode carregar nem o servidor e,

  3. em vez de Alow from all , acho que deveria ter Deny from all e abrir um php-library directory em vez disso!

  4. Como eu disse, minha intenção é solicitar que www.another.site.example.com seja direcionado para o usuário em /var/www/another.site/web, mas como li em "< a href="http://httpd.apache.org/docs/2.2/suexec.html"> Usando o suEXEC "podemos chamar o suexec sem a diretiva SuexecUserGroup nas definições do VirtualHost, mas com a ajuda do mod_userdir! Então, e se uma solicitação para www.another.site.example.com for transformada de forma transparente para www.example.com/~another.site com a ajuda de mod_rewrite e depois usar mod_userdir para ativar o suexec?

Alguma idéia ou diretiva que implementa tudo isso?

Obrigado.

    
por centurian 23.08.2012 / 20:32

1 resposta

2

na prática, o recurso vhost dinâmico não é o ideal, porque você não são flexíveis o suficiente (. htaccess em alguns casos não é suficiente). use um script para gerar os vhosts ou use algo como fantoche para definir os vhosts ( link ).

btw: para a sua configuração do php eu usaria o php-fpm (ondemand) com (mod_proxy_fcgi ou mod_fastcgi). com o php-fpm você não precisa do suexec - todo usuário recebe sua própria porta ou socket.

    
por 22.11.2013 / 16:11