Alojamiento virtual masivo Apache y suexec y fcgid

Alojamiento virtual masivo Apache y suexec y fcgid

SeguíEl tutorial de Falco.y ahora todo funciona como se esperaba para 2 usuarios (por ejemplo, John y Alice) con sus directorios relevantes ( /var/www/johny /var/ww/alice).

Ahora quiero pasar al siguiente nivel: en lugar de definir diferentes vhosts /etc/apache2/sites-available/<username>y reiniciar Apache, necesito un alojamiento virtual masivo configurado dinámicamente (http://httpd.apache.org/docs/2.2/vhosts/mass.html). Digamos que mi servidor DNS tiene registros para: another.site.example.comQuiero que su directorio de inicio esté en /var/www/another.site/web.

El problema son todos estos ajustes de configuración para suexec y mod_fcgid. Terminé con este borrador de mi httpd.conf(¿o debería crear un archivo 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 puede ver en los comentarios, tengo un problema , una configuración.ServerAdmin [email protected]SuexecUserGroup web1 web1VirtualDocumentRoot /var/www/%-3+/web

  2. Además, para garantizar la seguridad, creo que IfModuleno debería existir; si mod_fcgidno se puede cargar, tampoco debería hacerlo el servidor y,

  3. En lugar de Alow from all, creo que debería Deny from allabrir un directorio de biblioteca php.

  4. Como dije, mi intención es solicitar que www.another.site.example.com se dirija al usuario en /var/www/another.site/web, pero como leí en "Usando suEXEC" ¡Podemos llamar a suexec sin la directiva SuexecUserGroup en las definiciones de VirtualHost pero con la ayuda de mod_userdir! Entonces, ¿qué pasa si una solicitud www.another.site.example.comse transforma de forma transparente www.example.com/~another.sitecon la ayuda de mod_rewrite y luego usa mod_userdir para habilitar suexec?

¿Alguna idea o directiva que implemente todo esto?

Gracias.

Respuesta1

en la práctica, la función vhost dinámico no es óptima porque no es lo suficientemente flexible (.htaccess en algunos casos no es suficiente). use un script para generar los vhosts o use algo como Puppet para definir los vhosts (https://github.com/puppetlabs/puppetlabs-apache).

Por cierto: para su configuración de php, usaría php-fpm (ondemand) con (mod_proxy_fcgi o mod_fastcgi). con php-fpm no necesitas suexec: cada usuario tiene su propio puerto o socket.

información relacionada