千家信息网

在CentOS 7.2上怎么安装SuPHP

发表于:2025-12-04 作者:千家信息网编辑
千家信息网最后更新 2025年12月04日,这篇文章将为大家详细讲解有关在CentOS 7.2上怎么安装SuPHP,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。CentOS 7上PHP默认是以apache或者
千家信息网最后更新 2025年12月04日在CentOS 7.2上怎么安装SuPHP

这篇文章将为大家详细讲解有关在CentOS 7.2上怎么安装SuPHP,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

CentOS 7上PHP默认是以apache或者nobody的身份运行的,这种方式下由于PHP运行需要的权限比较大,会有安全隐患,还可能会受到服务器其他用户影响。

SuPHP是一个apache模块,允许PHP在与Apache用户不同的Linux用户之下。 这可以提高托管网站的安全性,因为您可以在其他用户下运行每个网站的PHP脚本。 本教程介绍了从源代码安装的CentOS 7.2上的SuPHP,因为CentOS 7.2没有可用的SuPHP软件包。

先决条件

您将安装CentOS 7.2或更高版本的服务器,我将使用本教程作为我的设置的基础。 在第一章中,我将安装Apache Web服务器。 如果您已经安装了apache,请立即从第2章开始。

我的服务器将使用hostname server1.example.com和IP地址192.168.1.100。 在以下教程中将这些值替换为服务器的主机名和IP地址。

为安全起见,建议安装防火墙,如果您还没有安装防火墙,可以使用以下命令进行安装:

yum -y install firewalld

启动防火墙并使其在启动时启动。

systemctl start firewalld.service
systemctl enable firewalld.service

接下来,打开您的SSH端口,以确保您能够通过SSH连接到服务器。

firewall-cmd --permanent --zone=public --add-service=ssh
firewall-cmd --reload

1、安装Apache 2.4和PHP 5

Apache和PHP在CentOS基础存储库中可用,因此我们可以使用yum安装这两个软件包。

安装Apache和Aapache开发包,其中包含以后的SuPHP编译所需的文件。

yum -y install httpd httpd-devel

PHP安装(我添加了一些常用的PHP模块):

yum -y install php php-mysql php-gd php-pear php-xml php-xmlrpc php-mbstring curl

我们必须使Apache能够在引导时启动并启动服务。

systemctl start httpd.service
systemctl enable httpd.service

我们必须打开HTTP(80)和HTTPS(443)端口,使得Web服务器可以从其他计算机访问。 执行以下命令配置防火墙。

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

2、安装SuPHP

在此步骤中,我们将从源代码编译SuPHP。 安装开发工具来设置所需的构建链。

yum -y groupinstall 'Development Tools'

并且wget可以下载源文件和nano编辑器。

yum -y install wget nano

下载SuPHP源tar.gz存档并解压缩它。

cd /usr/local/src
wget http://suphp.org/download/suphp-0.7.2.tar.gz
tar zxvf suphp-0.7.2.tar.gz

CentOS 7使用Apache 2.4,所以我们必须补丁suphp,然后我们可以编译它aganst Apache。 补丁应用如下:

wget -O suphp.patch https://lists.marsching.com/pipermail/suphp/attachments/20130520/74f3ac02/attachment.patch
patch -Np1 -d suphp-0.7.2 < suphp.patch
cd suphp-0.7.2
autoreconf -if

[root @ server1 suphp-0.7.2]#autoreconf -if
libtoolize:将辅助文件放在AC_CONFIG_AUX_DIR,`config'中。
libtoolize:复制文件`config / ltmain.sh'
libtoolize:考虑将`AC_CONFIG_MACRO_DIR([m4])'添加到configure.ac和
libtoolize:重新运行libtoolize,以保持正确的libtool宏in-tree。
libtoolize:考虑在Makefile.am中的ACLOCAL_AMFLAGS中添加`-I m4'。
configure.ac:9:warning:AM_INIT_AUTOMAKE:不支持双参数和三参数形式。 有关更多信息,请参阅:
configure.ac:9:http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_005fINIT_005fAUTOMAKE-invocation
configure.ac:24:安装'config / config.guess'
configure.ac:24:安装'config / config.sub'
configure.ac:9:安装'config / install-sh'
configure.ac:9:安装'config / missing'
src / Makefile.am:安装'config / depcomp'
[root @ server1 suphp-0.7.2]#

autoreconf命令应用补丁,现在我们可以如下配置新的源。 注意: configure命令是一行!

./configure --prefix=/usr/ --sysconfdir=/etc/ --with-apr=/usr/bin/apr-1-config --with-apache-user=apache --with-setid-mode=owner --with-logfile=/var/log/httpd/suphp_log

然后编译并安装SuPHP。

make
make install

然后通过添加一个新的suphp.conf文件将suPHP模块添加到Apache配置中。

nano /etc/httpd/conf.d/suphp.conf

具有以下内容。

LoadModule suphp_module modules/mod_suphp.so

...并创建文件/etc/suphp.conf如下:

nano /etc/suphp.conf

[global]
;Path to logfile
logfile=/var/log/httpd/suphp.log
;Loglevel
loglevel=info
;User Apache is running as
webserver_user=apache
;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-suphp="php:/usr/bin/php-cgi"
;Handler for CGI-scripts
x-suphp-cgi="execute:!self"

最后,我们重新启动Apache:

systemctl restart httpd.service

3、使用SuPHP配置Apache Vhost

在本章中,我将介绍如何在单独的用户下运行PHP的apache中添加虚拟主机。 我将使用域名www.example.com作为网站,PHP将作为用户和组" web1 "运行,网站的文档根目录是/var/www/example.com

首先,添加一个新的用户和组"web1"。

useradd web1

添加网站根目录。

mkdir /var/www/example.com
chown web1:web1 /var/www/example.com

现在在apache conf.d目录中添加虚拟主机配置文件。

nano /etc/httpd/conf.d/example.com.conf

为此内容:

 DocumentRoot /var/www/example.com ServerName example.com ServerAdmin webmaster@example.com   SetHandler None    suPHP_Engine on  SetHandler x-httpd-suphp  suPHP_AddHandler x-httpd-suphp 

在ServerName和ServerAdmin行中用自己的域替换域名。

然后重新启动apache来应用配置更改。

systemctl restart httpd.service

4、测试SuPHP设置

在本章中,我将向您展示在本网站测试PHP的几种方法。 首先,我将创建一个使用phpinfo()函数来显示PHP是否正常工作的文件,并且现在是否以CGI模式运行。

用nano创建一个info.php文件:

nano /var/www/example.com/info.php

并将以下行添加到新文件中:

phpinfo();

然后将文件的所有者更改为web1用户和组。

chown web1:web1 /var/www/example.com/info.php

在网络浏览器中打开文件http://example.com/info.php的URL,它将显示以下页面。

重要的是显示CGI / FastCGI的ServerAPI行。 这表明PHP是通过SuPHP而不是mod_php运行的。

现在我将测试PHP是否运行在正确的用户(web1)下。 SuPHP如何知道使用哪个用户? SuPHP将PHP切换到拥有PHP脚本的用户,因此我们的Web根文件夹/var/www/example.com中的所有PHP文件都由web1用户和组拥有非常重要。

那么,如何测试PHP是否使用正确的用户? 一种方法是执行返回用户名的"whoami"命令。

我将在网站root中创建一个新脚本testuser.php:

nano /var/www/example.com/testuser.php

与此内容:

system('whoami');

然后将文件的所有者更改为web1用户和组。

chown web1:web1 /var/www/example.com/testuser.php

在web浏览器中打开http://example.com/testuser.php,结果应该是: web1

SuPHP被配置并作为本网站的用户执行PHP文件。 从网站目录中删除测试文件,并开始添加您的网站脚本。

5、将此CentOS 7.2服务器下载为虚拟机

此设置可用于以ova / ovf格式(与VMWare和Virtualbox兼容)的虚拟机下载,以了解用户的身份。

VM的登录详细信息

root密码是:howtoing
"管理员"用户的密码是:howtoing
请在第一次登录时更改两个密码。

虚拟机的IP地址为192.168.1.100

关于"在CentOS 7.2上怎么安装SuPHP"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

用户 文件 网站 服务 运行 服务器 配置 命令 测试 内容 脚本 防火墙 编译 防火 安全 主机 地址 密码 教程 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中国网络安全协会敖挺 网络安全警示语顺口溜 九游海岛奇兵数据库 众图互联网科技有限公司招聘 南京邢天网络技术 官网 软件开发最好选什么笔记本 xcode 创建本地数据库 仁王2服务器 南京毕马威软件开发怎么样 涡阳县公安局网络安全 日本质谱数据库的使用方法 利用互联网等科技手段 网络技术选择题要做对一半 pg数据库导出数据方法 以wps为基础的数据库 滨湖区互联网智能科技产品要求 潜渊症连接不上服务器 软件开发类企业收入确认 序列数据库和基因文库的区别 唔哩网络技术 酒席餐饮类管理软件开发公司 高速收费办公室网络安全制度 查文献免费的数据库 心理培训软件开发 淘宝上的云服务器可以直接上外网 苹果音乐数据库 数据库两个表之间的字段关系 成都卡斯柯软件开发工程师 山西网络安全知识竞赛颁奖 中国平安金融网络技术有限公司
0