Apache 大規模虛擬主機 & suexec & fcgid

Apache 大規模虛擬主機 & suexec & fcgid

我跟著法爾科的教程現在,2 個使用者(例如 john 和 alice)及其相關目錄(/var/www/john/var/ww/alice)的一切都按預期工作。

現在,我想要進入下一個層級:/etc/apache2/sites-available/<username>我需要動態配置的海量虛擬主機,而不是定義不同的虛擬主機並重新啟動 Apache(http://httpd.apache.org/docs/2.2/vhosts/mass.html)。假設我的 DNS 伺服器有以下記錄:another.site.example.com,我希望它的主目錄位於/var/www/another.site/web

問題在於 suexec 和 mod_fcgid 的所有這些配置設定。我結束了我的草稿httpd.conf(或者我應該創建一個像這樣的文件/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 web1VirtualDocumentRoot /var/www/%-3+/web

  2. 此外,為了確保安全,我認為IfModule不應該存在 - 如果 mod_fcgid無法加載,那麼伺服器也不應該存在,

  3. 而不是Alow from all,我想我應該Deny from all打開一個 php-library 目錄!

  4. 正如我所說,我的意圖是請求將 www.another.site.example.com 定向到 /var/www/another.site/web 上的用戶,但正如我在“使用suEXEC「我們可以在 VirtualHost 定義中不使用 SuexecUserGroup 指令但在 mod_userdir 的幫助下呼叫 suexec!那麼,如果在 mod_rewrite 的幫助下將請求www.another.site.example.com透明地轉換為www.example.com/~another.site,然後使用 mod_userdir 來啟用 suexec 會怎麼樣???

有什麼想法或指令可以實現所有這些嗎?

謝謝。

答案1

實際上,動態虛擬主機功能並不是最佳的,因為您不夠靈活(.htaccess 在某些情況下還不夠)。使用腳本產生虛擬主機或使用類似 puppet 的東西來定義虛擬主機(https://github.com/puppetlabs/puppetlabs-apache)。

順便說一句:對於您的 php 設置,我將使用 php-fpm (按需)和(mod_proxy_fcgi 或 mod_fastcgi)。使用 php-fpm,您不需要 suexec - 每個使用者都有自己的連接埠或套接字。

相關內容