如何将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”来为networking上的用户提供内容而不是“/ var / www”。我如何将根目录更改为“/ home”?

你正在使用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更改为您de.archive.ubuntu.com的任何国家。然后更新您的存储库。

 apt-get update 

更改目录并下载源代码:

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

它将下载并提取apache源代码并安装所有的依赖关系,因此你将能够build立apache。 但是你需要修复AP_DOC_ROOT。 所以cd到dir与apache源代码,并在debian/rules文件中的--with-suexec-docroot选项更改目录path。 所以现在你需要构build包。 你可以做到

 debuild -us -uc 

而已。 现在你有固定path的Apache deb包。 只需使用sudo dpkg -i安装即可。 但注意更新。 更新将消除你所有的努力。 所以运行aptitude hold apache2禁止更新,不要忘记每次手动重新编译(或者写脚本)。

祝你好运。

或者你可以

 apt-get install apache2-suexec-custom 

安装后去

 cd /etc/apache2/suexec 

编辑文件vi www-data

你可以看到前两行,进行更改:用/homereplace/var/www

 esc :wq 

之后,重启apache

 /etc/init.d/apache2 restart 

你需要从suexec.c重新编译它,理想的情况是你可以安装virtualmin,所以它会通过install.sh自动完成,它也会创build帐户,域等。

我正在利用“/ home / user / public_html”来为networking上的用户提供内容而不是“/ var / www”。我如何将根目录更改为“/ home”?

其实你可以使用mod_userdir

在这种情况下,suexec会从/ home / user的所有者产生脚本 – 在这个例子中,“user”

所以你不需要在apacheconfiguration中定义SuexecUserGroup

UPD:只需启用userdir模块

并添加到主vhostconfiguration

UserDir / home / * / public_html

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