如何在各种Linux分发版上安装suPHP用于ISPConfig(2.2.20及以上版本)

如何在各种Linux分发版上安装suPHP用于ISPConfig(2.2.20及以上版本) 从版本2.2.20开始,ISPConfig已改进...

如何在各种Linux发行版上安装suPHP以使用ISPConfig(2.2.20及以上)

版本1.0
作者:Falko Timme

从版本2.2.20开始, ISPConfig已经改进了对suPHP的支持。 本文介绍如何在ISPConfig支持的各种发行版上安装suPHP。 (如果您已将suPHP与以前的ISPConfig版本一起使用,则安装仍然可以正常工作。)

我不会保证这将为您工作!

1 Debian Etch / Ubuntu 7.10

对于Debian和Ubuntu, libapache2-mod-suphp软件包存在,但是该软件包的问题是它不支持suPHP_UserGroup指令(由ISPConfig使用),因为它没有使用--with-setid进行编译-mode =偏执开关。 因此,我们必须手动构建mod_suphp。

首先我们禁用正常的PHP5模块(以root用户身份):

a2dismod php5
/etc/init.d/apache2 restart

然后我们安装构建mod_suphp所需的先决条件:

apt-get install php5-cgi apache2-prefork-dev

现在我们可以下载和构建suPHP如下:

cd /tmp
wget http://www.suphp.org/download/suphp-0.6.2.tar.gz
tar xvfz suphp-0.6.2.tar.gz
cd suphp-0.6.2
./configure --prefix=/usr --sysconfdir=/etc --with-apache-user=www-data --with-setid-mode=paranoid --with-apxs=/usr/bin/apxs2
make
make install

最后,我们将suPHP模块添加到我们的Apache配置...

vi /etc/apache2/httpd.conf

LoadModule suphp_module       /usr/lib/apache2/modules/mod_suphp.so

...并重新启动Apache:

/etc/init.d/apache2 restart

2 Fedora 8 / CentOS 5.1

在Fedora 8和CentOS 5.1上,由于与Debian和Ubuntu( suPHP_UserGroup )相同的原因,我们必须手动构建mod_suphp。

首先我们禁用正常的PHP5模块:

vi /etc/httpd/conf.d/php.conf

注释掉LoadModule行:

[...]
#LoadModule php5_module modules/libphp5.so
[...]

然后我们安装构建mod_suphp所需的先决条件:

yum install php-cli httpd-devel

现在我们可以下载和构建suPHP如下:

cd /tmp
wget http://www.suphp.org/download/suphp-0.6.2.tar.gz
tar xvfz suphp-0.6.2.tar.gz
cd suphp-0.6.2/
./configure --prefix=/usr --sysconfdir=/etc --with-apr=/usr/bin/apr-1-config --with-apxs=/usr/sbin/apxs --with-apache-user=apache --with-setid-mode=paranoid --with-php=/usr/bin/php-cgi --with-logfile=/var/log/httpd/suphp_log --enable-SUPHP_USE_USERGROUP=yes
make
make install

最后,我们将suPHP模块添加到我们的Apache配置...

vi /etc/httpd/conf.d/suphp.conf

LoadModule suphp_module modules/mod_suphp.so

...并重新启动Apache:

/etc/init.d/httpd restart

3 Mandriva 2008.0

在Mandriva 2008.0中,由于与Debian和Ubuntu( suPHP_UserGroup )相同的原因,我们必须手动构建mod_suphp。

首先我们禁用正常的PHP5模块:

vi /etc/httpd/modules.d/70_mod_php.conf

注释掉LoadModule行:

<IfDefine HAVE_PHP5>
    <IfModule !mod_php5.c>
        #LoadModule php5_module    extramodules/mod_php5.so
    </IfModule>
</IfDefine>
[...]

然后我们安装构建mod_suphp所需的先决条件:

urpmi php-cgi apache-devel

现在我们可以下载和构建suPHP如下:

cd /tmp
wget http://www.suphp.org/download/suphp-0.6.2.tar.gz
tar xvfz suphp-0.6.2.tar.gz
cd suphp-0.6.2/
./configure --prefix=/usr --sysconfdir=/etc --with-apr=/usr/bin/apr-1-config --with-apxs=/usr/sbin/apxs --with-apache-user=apache --with-setid-mode=paranoid --with-php=/usr/bin/php-cgi --with-logfile=/var/log/httpd/suphp_log --enable-SUPHP_USE_USERGROUP=yes
make
make install

最后,我们将suPHP模块添加到我们的Apache配置...

vi /etc/httpd/modules.d/A36_mod_suphp.conf

LoadModule suphp_module modules/mod_suphp.so

...并重新启动Apache:

/etc/init.d/httpd restart

4 OpenSUSE 10.3

OpenSUSE 10.3附带了一个可以理解suPHP_UserGroup指令的suPHP包,所以我们不必自己构建它。

首先我们禁用正常的PHP5模块。 打开/ etc / sysconfig / apache2并从APACHE_MODULES行删除php5 (这样它看起来类似于这一行 - 你的模块可能会有所不同,但是php5不能被列出):

vi /etc/sysconfig/apache2

[...]
APACHE_MODULES="actions alias auth_basic authn_file authz_host authz_groupfile authz_default authz_user authn_dbm autoindex cgi dir env expires include log_config mime negotiation setenvif ssl suexec userdir rewrite ruby"
[...]

SuSEconfig

之后。

现在我们安装suPHP如下:

yast -i suphp

接下来我们在/ etc / sysconfig / apache2中的APACHE_MODULES行添加suphp ,例如:

vi /etc/sysconfig/apache2

[...]
APACHE_MODULES="actions alias auth_basic authn_file authz_host authz_groupfile authz_default authz_user authn_dbm autoindex cgi dir env expires include log_config mime negotiation setenvif ssl suexec userdir rewrite ruby suphp"
[...]

OpenSUSE的suPHP软件包带有suPHP配置,可以在全局启用suPHP。 因此,我们现在必须禁用此配置,以便我们可以在每个网站的基础上在ISPConfig中启用或禁用suPHP:

vi /etc/apache2/conf.d/mod_suphp.conf

在该文件中,我们会注释掉所有内容:

#<IfModule mod_suphp.c>
#    suPHP_Engine on
#
#    AddType application/x-httpd-php .php
#    AddType application/x-httpd-php .php3
#    AddType application/x-httpd-php .php4
#    AddType application/x-httpd-php .php5
#    AddHandler application/x-httpd-php .php
#
#    DirectoryIndex index.php index.php3 index.php4 index.php5
#
#    <Location />
#        suPHP_AddHandler application/x-httpd-php
#    </Location>
#</IfModule>

# in your vhost you need:
#<Virtualhost *>
#  suPHP_UserGroup someuser somegroup
#</Virtualhost>

最后我们运行:

SuSEconfig
/etc/init.d/apache2 restart

5配置ISPConfig

最后,我们必须告诉ISPConfig它应该写一个suPHP配置到Apache vhosts而不是通常的PHP配置。 为此,我们打开ISPConfig的配置文件/home/admispconfig/ispconfig/lib/config.inc.php ,并将$ go_info [“server”] [“apache2_php”]设置为suphp

vi /home/admispconfig/ispconfig/lib/config.inc.php

[...]
$go_info["server"]["apache2_php"] = 'suphp';
[...]

现在,只要您在ISPConfig中为网站启用PHP,ISPConfig将向该网站的vhost配置写入一个suPHP配置。