
私はついていきますファルコのチュートリアル/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>
コメントからわかるように、 、、 の構成に問題があります。
ServerAdmin [email protected]
SuexecUserGroup web1 web1
VirtualDocumentRoot /var/www/%-3+/web
さらに、セキュリティを確保するためには、ロードできないのであればサーバーも
IfModule
存在すべきではないと 思います。mod_fcgid
の代わりに、を実行して、 php-library ディレクトリを開く
Alow from all
必要があると思います。Deny from all
前に言ったように、私の意図は、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 は必要ありません。すべてのユーザーが独自のポートまたはソケットを取得します。