首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于suexec和mod_fcgid的apache海量虚拟主机

基于suexec和mod_fcgid的apache海量虚拟主机
EN

Stack Overflow用户
提问于 2012-08-19 09:59:19
回答 1查看 4.8K关注 0票数 1

我跟踪了法尔科教程,现在一切都按照预期对两个用户(例如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的文件):

代码语言:javascript
复制
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>
  1. 从注释中可以看出,我有一个有问题的ServerAdmin webmaster@example.com、一个SuexecUserGroup web1 web1和一个VirtualDocumentRoot /var/www/%-3+/web配置!
  2. 此外,为了确保安全性,我认为IfModule不应该存在--如果mod_fcgid不能加载,那么服务器和
  3. Alow from all不同,我认为我应该使用Deny from all并打开一个php库目录!

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2012-09-02 08:15:00

好的,由于没有答复,我将尝试我建议的解决方案(?)的一半:使用mod_userdir强制执行suexec

  1. 让我们创建以下/etc/apache2/httpd.conf ########################################## ### mod_fcgid配置指令### ###########################################值应根据服务器内存FcgidMaxProcesses 1000 FcgidMaxProcessesPerClass 100 FcgidMinProcessesPerClass 3#(参见“导出PHP_FCGI”)进行调整_MAX_REQUESTS=5000‘at’at/var/www/php-fcgi-script//php-fcgi-初学者‘FcgidMaxRequestsPerProcess 5000 FcgidIOTimeout 40 FcgidProcessLifeTime 3600 FcgidMaxRequestInMem 65536 FcgidMaxRequestLen 131072 FcgidOutputBufferSize 65536
  2. 让我们在/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 问题:,如果我取消注释第一行,我会在服务器重新启动时收到警告,没有虚拟主机!!
  3. 让我们创建我的用户bob
  4. 让我们在/var/www/bob/public_html上创建一个/var/www/bob/public_html /var/www/php-fcgi-scripts/bob/php-fcgi-starter FcgidWrapper .php
  5. 让我们点击我的浏览器到www.example.com/info.phpexample.com/info.php 网络管理 ...as希望但是,
  6. 让我们转到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文件,并且尝试将其作为普通文件发送!有办法解决这个问题吗?
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12025652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档