如何将 suexec 根目录从“/var/www”更改为“/home”?

如何将 suexec 根目录从“/var/www”更改为“/home”?

你好,我已经在 ubuntu 12.04 上安装了 suexec:

apt-get install apache2 apache2-suexec libapache2-mod-fcgid php5-cgi

但是当我运行以下命令时:

sudo /usr/lib/apache2/suexec -V

我得到以下信息:

 -D AP_DOC_ROOT="/var/www"
 -D AP_GID_MIN=100
 -D AP_HTTPD_USER="www-data"
 -D AP_LOG_EXEC="/var/log/apache2/suexec.log"
 -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
 -D AP_UID_MIN=100
 -D AP_USERDIR_SUFFIX="public_html"

我正在使用“/home/user/public_html”来为网络用户提供内容,而不是“/var/www”,我怎样才能将根目录更改为“/home”?

答案1

您正在使用 ubuntu。因此重新编译非常简单。

将源存储库添加到 /etc/apt/sources.list 。对于 12.04 运行

echo "deb-src http://de.archive.ubuntu.com/ubuntu/ precise main"|sudo tee -a /etc/apt/sources.list

更改de.archive.ubuntu.com为您所在的国家/地区。之后更新您的存储库。

apt-get update

更改目录并下载源:

mkdir ~/apache_new  ; cd ~/apache_new
apt-get source apache2
apt-get build-dep apache2

它将下载并解压 apache 源代码并安装所有依赖项,因此您将能够构建 apache。但您需要修复 AP_DOC_ROOT。因此,cd 到包含 apache 源代码的目录,并在文件--with-suexec-docroot中的选项中更改目录路径debian/rules。因此,现在您需要构建包。您可以使用

debuild -us -uc

就是这样。现在您有了具有固定路径的 apache deb 包。只需使用 安装它sudo dpkg -i。但要注意更新。更新将抹去您所有的努力。因此,请运行aptitude hold apache2以禁止更新,并且不要忘记每次手动重新编译它(或为此编写脚本)。

祝你好运。

答案2

或者你可以

apt-get install apache2-suexec-custom

安装后转到

cd /etc/apache2/suexec

编辑文件 vi www-data

您可以看到前两行,进行更改:替换/var/www/home

esc 
:wq

之后,重新启动 apache

/etc/init.d/apache2 restart

答案3

我正在使用“/home/user/public_html”来为网络用户提供内容,而不是“/var/www”,我怎样才能将根目录更改为“/home”?

实际上你可以使用 mod_userdir

在这种情况下,suexec 将从 /home/user 的所有者(在此示例中为“user”)生成脚本

所以你不需要在 apache 配置中定义 SuexecUserGroup

UPD:只需启用 userdir 模块

并添加到主虚拟主机配置

用户目录 /home/*/public_html

<Directory /home/*/public_html/ >
      AllowOverride All
      Options +ExecCGI
      AddHandler cgi-script .cgi .pl  .py .rb
</Directory>

答案4

您需要从 suexec.c 重新编译它,理想情况下您可以安装 virtualmin,这样它将通过 install.sh 自动执行此操作,并且还将创建帐户、域等。

相关内容