Hospedagem virtual em massa Apache e suexec e fcgid

Hospedagem virtual em massa Apache e suexec e fcgid

eu seguiTutorial do Falcoe agora tudo funciona conforme o esperado para 2 usuários (por exemplo, john e alice) com seus diretórios relevantes ( /var/www/johne /var/ww/alice).

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

O problema são todas essas configurações para suexec e mod_fcgid. Terminei com este meu rascunho 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 um problema , uma e uma configuração!ServerAdmin [email protected]SuexecUserGroup web1 web1VirtualDocumentRoot /var/www/%-3+/web

  2. Além disso, para garantir a segurança, acho que IfModulenão deveria existir - se mod_fcgidnão for possível carregar, o servidor também não deveria e,

  3. em vez de Alow from all, acho que deveria Deny from allabrir um diretório de biblioteca php!

  4. Como eu disse, minha intenção é solicitar que www.another.site.example.com seja direcionado ao usuário em /var/www/another.site/web mas como li em "Usando suEXEC"podemos chamar suexec sem a diretiva SuexecUserGroup nas definições de VirtualHost, mas com a ajuda de mod_userdir! Então, e se uma solicitação www.another.site.example.comfor transformada de forma transparente www.example.com/~another.sitecom a ajuda de mod_rewrite e então usar mod_userdir para habilitar suexec???

Alguma ideia ou diretriz que implemente tudo isso?

Obrigado.

Responder1

na prática, o recurso vhost dinâmico não é ideal, porque você não é flexível o suficiente (em alguns casos, .htaccess não é suficiente). use um script para gerar os vhosts ou use algo como puppet para definir os vhosts (https://github.com/puppetlabs/puppetlabs-apache).

aliás: para sua configuração de php eu usaria php-fpm (ondemand) com (mod_proxy_fcgi ou mod_fastcgi). com o php-fpm você não precisa do suexec - cada usuário recebe sua própria porta ou soquete.

informação relacionada