我跟踪了法尔科教程,现在一切都按照预期对两个用户(例如john和alice)和他们的相关目录(/var/www/john和/var/ww/alice)正常工作。
现在,我想进入下一个级别:不需要在/etc/apache2/sites-available/<username>上定义不同的vhost并重新启动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库目录!谢谢。
发布于 2012-09-02 08:15:00
好的,由于没有答复,我将尝试我建议的解决方案(?)的一半:使用mod_userdir强制执行suexec。
/etc/apache2/sites-available/上创建一个/etc/apache2/sites-available/
#NameVirtualHost *:80 #默认虚拟主机 ServerName www.example.com ServerAlias example.com ServerAdmin webmaster@example.com DocumentRoot /var/www/ web-admin /web/ SuexecUserGroup web-admin 选项+ExecCGI Options -Indexes AllowOverride All AddHandler fcgid-script .php #FCGIWrapper .php FcgidWrapper /var/www/php-fcgi-scripts/web-admin/php-fcgi-starter .php命令允许,拒绝all # ErrorLog /var/log/apache2/error.log # CustomLog /var/log/apache2/access.log .log组合ServerSignature Off #3级子域虚拟主机 ServerAlias *.example.com ServerAdmin webmaster@example.com ################## ###解决方案1 ### ################## #mod_vhost_alias指令:需要参数化SuexecUserGroup(?) #UseCanonicalName Off #VirtualDocumentRoot /var/www/www/%-3+/web ################## ###解决方案2 ### ################## #mod_userdir请求指令:http://www.example.com/~user UserDir禁用根UserDir /var/www/*/public_html #reduntant (如果使用请求:http://www.example.com/~user #SuexecUserGroup )web1 web1 <目录/var/www/*/public_html>选项+ExecCGI Options -Indexes AllowOverride All AddHandler fcgid-script .php #移动到.htaccess #FCGIWrapper /var/www/php-fcgi-script/*/php- .php #FcgidWrapper /var/php-fcgi-script/*/php-fcgi-starter .php命令允许,拒绝all # ErrorLog /var/log/apache2/error.log # CustomLog /var/log/apache2 2/access.log.log组合ServerSignature Off
问题:,如果我取消注释第一行,我会在服务器重新启动时收到警告,没有虚拟主机!!/var/www/bob/public_html上创建一个/var/www/bob/public_html
/var/www/php-fcgi-scripts/bob/php-fcgi-starter FcgidWrapper .phpwww.example.com/info.php或example.com/info.php
网络管理
...as希望但是,www.example.com/~bob/info.php
...trying打开info.php!
让我们看看错误
# cat /var/log/apache2/error.log通知捕获了SIGTERM,关闭了已启用的通知suEXEC机制(包装器: /usr/lib/apache2/suexec)通知Apache/2.2.20 (Ubuntu) mod_fcgid/2.3.6配置--恢复正常操作
正如您所看到的,mod_fcgid没有错误,但是没有启用运行.php文件,并且尝试将其作为普通文件发送!有办法解决这个问题吗?https://stackoverflow.com/questions/12025652
复制相似问题