Apache マス仮想ホスティング & suexec & fcgid

Apache マス仮想ホスティング & suexec & fcgid

私はついていきますファルコのチュートリアル/var/www/johnそして、2 人のユーザー (例: john と alice) とその関連ディレクトリ (および)に対してすべてが期待どおりに動作するようになりました/var/ww/alice

さて、次のレベルに進みたいと思います。異なる仮想ホストを定義してApacheを再起動する代わりに/etc/apache2/sites-available/<username>、動的に構成された大量の仮想ホスティングが必要です(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. の代わりに、を実行して、 php-library ディレクトリを開くAlow from all必要があると思います。Deny from all

  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

実際には、動的 vhost 機能は最適ではありません。柔軟性が十分ではないためです (.htaccess では不十分な場合があります)。スクリプトを使用して vhost を生成するか、puppet のようなものを使用して vhost を定義します (https://github.com/puppetlabs/puppetlabs-apache)。

ところで、PHP のセットアップには、php-fpm (ondemand) と (mod_proxy_fcgi または mod_fastcgi) を使用します。php-fpm では suexec は必要ありません。すべてのユーザーが独自のポートまたはソケットを取得します。

関連情報