Falco のチュートリアルに従ったところ、2 人のユーザー (例: john と alice) の関連するディレクトリ (/var/www/john
と/var/ww/alice
) に対して、すべてが期待どおりに機能するようになりました。
ここで、次のレベルに進みたいと思います。Apache でさまざまな仮想ホストを定義し/etc/apache2/sites-available/<username>
て再起動する代わりに、動的に構成された大量の仮想ホスティングが必要です。たとえば、私の 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 webmaster@example.com
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 webmaster@example.com
#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 webmaster@example.com
、 、SuexecUserGroup web1 web1
およびVirtualDocumentRoot /var/www/%-3+/web
構成があります。IfModule
さらに、セキュリティを確保するために存在すべきではない と思います-mod_fcgid
ロードできない場合は、サーバーもそうすべきではありません。の代わりに、代わりにphp-library ディレクトリを開いて開く
Alow from all
必要があると思います!Deny from all
ありがとう。