
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/john
e /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>
Como você pode ver nos comentários, tenho um problema , uma e uma configuração!
ServerAdmin [email protected]
SuexecUserGroup web1 web1
VirtualDocumentRoot /var/www/%-3+/web
Além disso, para garantir a segurança, acho que
IfModule
não deveria existir - semod_fcgid
não for possível carregar, o servidor também não deveria e,em vez de
Alow from all
, acho que deveriaDeny from all
abrir um diretório de biblioteca php!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.com
for transformada de forma transparentewww.example.com/~another.site
com 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.