在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

为此内容:

<VirtualHost *>
 DocumentRoot /var/www/example.com
 ServerName example.com
 ServerAdmin webmaster@example.com

 <FilesMatch ".+\.ph(p[345]?|t|tml)$">
 SetHandler None
 </FilesMatch>

 <IfModule mod_suphp.c>
 suPHP_Engine on
 <FilesMatch "\.php[345]?$">
 SetHandler x-httpd-suphp
 </FilesMatch>
 suPHP_AddHandler x-httpd-suphp
 </IfModule>
</VirtualHost>

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

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

systemctl restart httpd.service

4、测试SuPHP设置

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

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

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

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

<?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

与此内容:

<?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

6、链接

CentOS

Apache Web服务器

SuPHP

(0)

相关推荐

  • CentOS 7上为PHP5安装suPHP的方法(彭哥)

    CentOS 7上PHP默认是以apache或者nobody的身份运行的,这种方式下由于PHP运行需要的权限比较大,会有安全隐患,还可能会受到服务器其他用户影响. 通过phpinfo查看PHP信息如下: apache运行php 可以看出来,PHP目前是作为Apache的一部分在运行,而不会为每个脚本运行一个独立进程.如果希望PHP脚本运行时是以当前用户的身份而不是Apache,可以通过部署suPHP来实现.接下来介绍如何在CentOS 7上安装suPHP. 先配置安装suphp所需的环境: yu

  • 在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或更高版本的

  • 在VMware上 安装 centos8的详细教程

    centos官网地址 https://www.centos.org/ 首先下载好自己需要的文件 开始安装 安装过程比较多,很多都是直接点击下一步即可,这里只说一些需要注意的地方 首先第一步这里要选择自定义安装,典型安装暂时不支持centos8 这里选择稍后安装操作系统 由于VMware Workstation 现在还没有直支持安装centos8,所以这里选择red hat enterprise linux 8 64位 选择自己的安装位置 后面的很多这里根据自己的需求选择,大部分可以直接下一步就行

  • Ubuntu上安装yaf扩展的方法

    一.下载 yaf扩展下载地址 http://pecl.php.net/package/yaf 选择你想要下载的包 wget http://pecl.PHP.net/get/yaf-2.3.5.tgz tar zxvf yaf-2.3.5.tgz cd yaf-2.3.5 二.安装 #whereis phpize /data/yaf-2.3.5# /usr/bin/phpize #whereis php-config php-config: /usr/bin/php-config /usr/sha

  • Ubuntu 18.04上安装 phpMyAdmin的详细教程

    我们将安装 phpMyAdmin 在 Ubuntu18.04 上配合 Apache 一起工作. 在安装 phpMyAdmin 之前需要已经安装了LAMP栈并提供了web页面. 如果没有安装可以参照 Ubuntu 18.04上安装Apache,MySQL,PHP 来先安装. 1. 安装 phpMyAdmin 让我们从更新包列表开始,并在Ubuntu 18.04上安装phpMyAdmin.下面我们有两个用&&分隔的命令.第一个命令将更新包列表,以确保您获得phpMyAdmin的最新版本和依赖项

  • 在 Fedora 上安装 MongoDB 服务器的方法教程

    Mongo(来自 "humongous" -- 巨大的)是一个高性能.开源.无模式的.面向文档的数据库,它是最受欢迎的 NoSQL 数据库之一.它使用 JSON 作为文档格式,并且可以在多个服务器节点之间进行扩展和复制. 有关许可证更改的故事 MongoDB 上游决定更改服务器代码的许可证已经一年多了.先前的许可证是 GNU Affero General Public License v3(AGPLv3).但是,上游公司写了一个新许可证,旨在使运行 MongoDB 即服务的公司可以回馈

  • Ubuntu16.04上安装CUDA9.0 详细教程

    前言: 本篇文章是基于安装CUDA 9.0的经验写,CUDA9.0目前支持Ubuntu16.04和Ubuntu17.04两个版本,如下图所示(最下面的安装方式我们选择第一个,即runfile方式): 大家可以先将CUDA文件下载下来,但是最好不要急于安装,一定要先将NVIDIA给出官方指导手册仔细看一下,然后再找几篇好的博客看一下,大致了解一下CUDA的安装过程,对安装过程中可能出现的问题要大致有一个了解,不到万不得已不要重装系统. 安装建议: 1)去官网下载CUDA的同时,一定要找份相应官方的

  • minconda安装pytorch的详细方法

    conda安装pytorch百分百成功方法! 本人的电脑是Windows 10系统,conda的环境变量也已经配置完毕,经过多台电脑的测试,在安装且配置完成conda的环境后,百分百成功安装pytorch! 1.打开Anaconda Prompt,输入命令: conda create -n "conda环境名" python=3.8 我是用3.8的python环境,这些框架最好都是单独的conda虚拟环境,每次安装别的框架都新建个环境. 2.激活子环境,输入命令: conda acti

  • 在CentOS 7上安装Docker环境的方法与注意事项

    官网文档:https://docs.docker.com/engine/installation/linux/centos/ ,本文大部分是照搬官方文档写的,如果你英文还不错,那么就直接移步官方文档吧,如果你英文实在是不行,那就勉强看一下本人这生涩的翻译~ 以下操作均在root用户下完成 docker的安装要求64位系统且内核版本大于3.10.所以如果是centos的话,必须安装CentOS7.0或以上版本. 我们这里使用的是CentOS7.2 mininul. uname -r 3.10.0-

  • CentOS7上安装Docker的详细步骤

    目录 一.安装Docker 二.一些命令 总结 一.安装Docker 1.安装依赖. yum -y install yum-utils device-mapper-persistent-data lvm2 2.配置安装 Docker 的仓库为阿里云. yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum clean all && yum makeca

  • 在Debian 9系统上安装Mysql数据库的方法教程

    前言 看到题目大家应都会想,在 Debian 9 上安装 Mysql?那不是很简单的事儿吗?直接 sudo apt install mysql-server 不就行了吗? 没想到遇到了几个之前没遇到的问题,耽误了不少时间. 原来在 Debian 9 中,Mysql 已经被替换成了 MariaDB,所以和传统的安装 Mysql 有一些不一样的地方. 安装方法 首先我们还是可以用 sudo apt install mysql-server 这样安装上的,但是安装上的还是 MariaDB,所以最好还是

随机推荐