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/john
y /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.com
Quiero 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>
Como puede ver en los comentarios, tengo un problema , una configuración.
ServerAdmin [email protected]
SuexecUserGroup web1 web1
VirtualDocumentRoot /var/www/%-3+/web
Además, para garantizar la seguridad, creo que
IfModule
no debería existir; simod_fcgid
no se puede cargar, tampoco debería hacerlo el servidor y,En lugar de
Alow from all
, creo que deberíaDeny from all
abrir un directorio de biblioteca php.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.com
se transforma de forma transparentewww.example.com/~another.site
con 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.