Apache大量虚拟主机&suexec&fcgid

我遵循了Falco的教程 ,现在所有的东西都可以按照他们的相关目录( /var/www/john/var/ww/alice )为2个用户(例如john和alice)按预期工作。

现在,我想进入下一个层次:不是在/etc/apache2/sites-available/<username>上定义不同的虚拟主机,而是重新启动Apache,我需要dynamicconfiguration大容量虚拟主机( http://httpd.apache.org /docs/2.2/vhosts/mass.html )。 说,我的DNS服务器logging: another.site.example.com ,我想它的主目录在/var/www/another.site/web

问题是suexec和mod_fcgid的所有这些configuration设置。 我结束了我的httpd.conf草稿(或者我应该创build一个像/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. 正如您从注释中看到的,我有一个有问题的ServerAdmin [email protected] ,一个SuexecUserGroup web1 web1和一个VirtualDocumentRoot /var/www/%-3+/webconfiguration!

  2. 此外,为了确保安全,我认为IfModule不应该存在 – 如果mod_fcgid无法加载,那么服务器也不应该,

  3. 而不是Alow from allAlow from all ,我想我应该Deny from all开放,而不是打开一个PHP库目录!

  4. 正如我所说,我的意图是要求www.another.site.example.com被定向到/var/www/another.site/web用户,但正如我在“ 使用suEXEC ”阅读,我们可以调用suexec在VirtualHost定义中没有SuexecUserGroup指令,但在mod_userdir的帮助下! 那么,如果www.another.site.example.com的请求在mod_rewrite的帮助下透明地转换为www.example.com/~another.site ,然后使用mod_userdir启用suexec?

任何想法或指令,执行所有这些?

谢谢。

在实践中,dynamic虚拟主机function并不是最佳的,因为你不够灵活(.htaccess在某些情况下是不够的)。 使用脚本来生成虚拟主机,或者使用类似木偶的东西来定义虚拟主机( https://github.com/puppetlabs/puppetlabs-apache )。

顺便说一句:为您的PHP设置,我会使用(mod_proxy_fcgi或mod_fastcgi)的php-fpm(ondemand)。 用php-fpm你不需要suexec – 每个用户都有自己的端口或套接字。