如何在Debian Sarge基础的ISPConfig服务器上设置suPHP

如何在基于Debian Sarge的ISPConfig服务器上设置suPHP

版本1.3
作者:<hans> [at] bb-hosting [dot] org>

有了这个我如何解释如何在基于Debian的ISPConfig服务器上使用php4设置suPHP。 主要是基于Falko的howto https://www.youcl.com/info/4394 。 在Howtoforge论坛上,可以找到很多关于“设置suphp”的信息。
然而,这些信息遍布各个论坛,所以不太清楚如何在ISPConfig服务器上设置suphp。 这是我写这个howto的原因。 当您在ISPConfig服务器上安装suPHP时,您可以在网站的管理员用户(而不是www数据)下运行PHP脚本。

重要提示:我已经在Debian Sarge服务器上测试了这个howto,这个服务器具有针对Apache2的ISPConfig 2.2.11和4.3.10-19,但是我不会保证这将为您工作!

首先制作一个/etc/apache2/vhosts/Vhosts_ispconfig.conf的副本。 例如将其复制到/etc/apache2/vhosts/Vhosts_ispconfig-backup.conf

在默认的ISPConfig服务器上,php4作为模块运行。 使用命令禁用它:

a2dismod php4

现在删除原始Vhosts_ispconfig.conf文件中的所有phpadmin条目。 重新启动Apache:

/etc/init.d/apache2 restart

当我们删除所有phpadmin条目时,Apache2重新启动时不应该有任何错误。

安装suPHP作为DSO,因此我们必须安装apxs (在Debian Sarge上是apxs2 ):

apt-get install apache2-prefork-dev

安装PHP4-CGI:

apt-get install php4-cgi
cd /tmp

安装suPHP,版本0.6.2是目前最新的稳定版本:

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
vi src/apache2/mod_suphp.c

用以下两行替换324/325行( 如果使用不同版本的suPHP,则可以不同 ):

AP_INIT_ITERATE("suPHP_AddHandler", suphp_handle_cmd_add_handler, NULL, RSRC_CONF | ACCESS_CONF, "Tells mod_suphp to handle these MIME-types"),
AP_INIT_ITERATE("suPHP_RemoveHandler", suphp_handle_cmd_remove_handler, NULL, RSRC_CONF | ACCESS_CONF, "Tells mod_suphp not to handle these MIME-types"),

然后我们编译并安装suPHP:

./configure --prefix=/usr --sysconfdir=/etc --with-apache-user=www-data --with-setid-mode=paranoid --with-apxs=/usr/bin/apxs2
make
make install

复制suphp.conf文件:

cp /tmp/suphp-0.6.2/doc/suphp.conf-example /etc/suphp.conf

使用以下命令更改/etc/suphp.conf的内容:

vi /etc/suphp.conf

它应该是这样的:

[global]
;Path to logfile
logfile=/var/log/suphp.log

;Loglevel
loglevel=info

;User Apache is running as
webserver_user=www-data

;Path all scripts have to be in
docroot=/

;Path to chroot() to before executing script
;chroot=/mychroot

; Security options
allow_file_group_writeable=true
allow_file_others_writeable=false
allow_directory_group_writeable=true
allow_directory_others_writeable=false

;Check wheter script is within DOCUMENT_ROOT
check_vhost_docroot=true

;Send minor error messages to browser
errors_to_browser=false

;PATH environment variable
env_path=/bin:/usr/bin

;Umask to set, specify in octal notation
umask=0077

; Minimum UID
min_uid=100

; Minimum GID
min_gid=100

[handlers]
;Handler for php-scripts
x-httpd-php=php:/usr/bin/php4-cgi

;Handler for CGI-scripts
x-suphp-cgi=execute:!self

使用以下命令将以下行添加到/etc/apache2/httpd.conf

vi /etc/apache2/httpd.conf
LoadModule suphp_module       /usr/lib/apache2/modules/mod_suphp.so

重新启动Apache,使用命令:

/etc/init.d/apache2 restart

编辑/home/admispconfig/ispconfig/lib/config.inc.php查找行:

$go_info["server"]["apache2_php"] = 'both';

并更改为:

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

现在,在ISPConfig中,对您的一个Web进行一个小的修改,以便ISPConfig写入一个新的vhost文件。 例如,为您的某个网站启用cgi-scrips。

/etc/apache2/vhosts/Vhosts_ispconfig.conf中 ,您将看到ISPConfig已重新写入该文件,因为下列行为每个单个Web都添加:

suPHP_Engine on
suPHP_UserGroup username groupname
AddHandler x-httpd-php .php .php3 .php4 .php5
suPHP_AddHandler x-httpd-php
</VirtualHost>

重要提示:请勿在/etc/apache2/vhosts/Vhosts_ispconfig.conf文件中进行任何手动更改!

通过FTP建立连接时,您将看到您可以在Web中设置任何权限:

您还可以在网站的管理员用户(而不是系统用户www-data)下运行php脚本。 这给了网站的管理员用户更多的舒适。 当您在Joomla的网络中运行CMS时,suPHP也非常有用。 使用suPHP启用Joomla将具有足够的权限正常运行,而网站的管理员用户可以完全控制! 最后但并非最不重要的是,使用suPHP是比您的网站使用chmod 777更安全和更专业的解决方案!

如果您不想在ISPConfig服务器上的特定网站使用php4-cgi + suPHP,则有一个解决方案。 以root身份登录到您的服务器,并启用Apache2的php4模块:

a2enmod php4

重新启动Apache2与:

/etc/init.d/apache2 force-reload

在ISPConfig中,禁用php并在您的站点的Apache指令字段中添加以下内容:

<Directory /var/www/webX/web>
AddType application/x-httpd-php .php .php3 .php4
php_admin_flag safe_mode Off
</Directory>

现在您的ISPConfig与Debian Sarge,使用PHP4-mod和PHP4-CGI + suPHP。 在大多数情况下,您只需要PHP4-CGI + suPHP。 但是,如果由于某些原因您不能使用suphp机制,您仍然可以使用php4作为该特定网站的模块。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏