我按照Falco 的教程进行操作,现在对于 2 个用户(例如 john 和 alice)及其相关目录(/var/www/john
和/var/ww/alice
),一切都按预期工作。
现在,我想更上一层楼:我需要动态配置大量虚拟主机/etc/apache2/sites-available/<username>
,而不是在Apache 上定义不同的虚拟主机并重新启动。比如说,我的 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
无法加载,那么服务器也不应该存在,而不是
Alow from all
,我想我应该Deny from all
打开一个 php-library 目录!
谢谢。