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

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

通过phpinfo查看PHP信息如下:

apache运行php

可以看出来,PHP目前是作为Apache的一部分在运行,而不会为每个脚本运行一个独立进程。如果希望PHP脚本运行时是以当前用户的身份而不是Apache,可以通过部署suPHP来实现。接下来介绍如何在CentOS 7上安装suPHP。

先配置安装suphp所需的环境:

yum -y groupinstall 'Development Tools'
yum -y install apr-devel
yum -y install httpd-devel

下载suphp安装包:

mkdir temp
cd temp
wget http://suphp.org/download/suphp-0.7.2.tar.gz
tar zxvf suphp-0.7.2.tar.gz

下载并安装suphp补丁:

wget -O patchingsuphp.patch https://www.webhostinghero.com/downloads/php/suphp.patch
patch -Np1 -d suphp-0.7.2 < patchingsuphp.patch
cd suphp-0.7.2
autoreconf -if

运行./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

编译并安装:

make
make install

在Apache配置目录下创建suphp.conf

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

并写入:

LoadModule suphp_module modules/mod_suphp.so

/etc目录下创建suphp.conf配置文件:

vi /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"

如果希望domainname这个目录以用户user身份运行,那么修改目录所有者属性为user,如下:

chown -R [user].[user] /var/www/html/[domainname]

最后在Apache配置文件中找到相应域名,并开启suphp:

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

最后重启Apache文件。通过info.php测试可以发现运行该域名的Server API已经由Apache变成CGI/FastCGI了,如下图所示:

到这里我们即完成了CentOS为某个域名访问设置通过suphp的方式来运行,而不用默认的Apache Handler运行。其他域名需要设置,按照以上步骤操作一遍即可。

(0)

相关推荐

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

  • 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 VPS上通过SSH安装 MySQL的方法图解

    输入yum install mysql-server 按Y继续 安装完成,设置开机启动Mysql,输入 chkconfig --levels 235 mysqld on 然后启动tomcat,输入service mysqld start 启动完毕,然后登录MYsql设置密码 输入set password for 'root'@'localhost' = password('12345678');来设置密码 至此,mysql安装完毕!然后创建数据库,首先用show databases;查看数据库

  • 在CentOS 7上进行 Nginx安装教程

    一.安装准备 首先由于nginx的一些模块依赖一些lib库,所以在安装nginx之前,必须先安装这些lib库,这些依赖库主要有g++.gcc.openssl-devel.pcre-devel和zlib-devel 所以执行如下命令安装 yum install gcc-c++ yum install pcre pcre-devel yum install zlib zlib-devel yum install openssl openssl--devel 二.安装Nginx 安装之前,最好检查一下

  • 在Mac上删除自己安装的Python方法

    推荐使用 Homebrew 来安装第三方工具.自己安装的python散落在电脑各处,删除起来比较麻烦.今天在此记录一下删除的过程(本人以Python3.6为例). 删除Python 3.6 framework sudo rm -rf /Library/Frameworks/Python.framework/Versions/3.6 删除Python 3.6 应用目录 sudo rm -rf "/Applications/Python 3.6" 删除/usr/local/bin 目录下指

  • centos 5 手动分区来安装系统的方法

    对于centos.fedora和redhat的关系这里无需赘述.redhat我用不起,它的防盗版工作做的又相当好,所以我从来没有用过redhat.fedora是我刚接触linux就用的一个系统,我觉得它很好用,只是它版本更新太快了,相信很多像我这样的菜鸟都曾在新版本出来时犹豫过要不要更新.centos据说与redhat如出一辙,有人说除了logo不同外,两者完全一致,不过也有人说两者其实并不完全相同,编译的不同导致两者在应用上有着细微的差别:它是否好用,有待于考察. 在安装时我采用的是手动分区,

  • CentOS 7中利用yum安装Nginx的方法教程

    前言 因为最近在筹备Docker系列课程,其中涉及到在CentOS 7中安装Nginx.遇到一些问题,所以想着将过程总结分享出来供大家参考学习,下面来看看详细的介绍: 当使用以下命令安装Nginx时,发现无法安装成功. yum install -y nginx 需要做一点处理. 安装Nginx源 执行以下命令: rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noar

  • CentOS6.4上使用yum安装mysql

    做软件开发时基本都会涉及到数据的使用,比如最简单用户登录注册,这用户信息则需要使用数据库做存储管理.而在项目开发测试过程最常使用的数据库则是mysql. 下面由小河给大家分享:如何在CentOS系统上使用yum安装mysql数据库,以CentOS6.4系统为例. 工具/原料 yum库 Mysql数据库 CentOS6.4_64bit 方法/步骤 查看CentOS自带mysql是否已安装. 输入:yumlistinstalled|grepmysql 若有自带安装的mysql,如何卸载CentOS系

  • CentOS 7.2.1511 编译安装Nginx1.10.1+MySQL5.6.33+PHP5.6.26运行环境

    准备篇 一.防火墙配置 CentOS 7.x默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewall开机启动 2.安装iptables防火墙 yum install iptables-services #安装 vi /etc/sysconfig/iptables #编辑

  • 详解如何在 CentOS 7 上安装和安全配置 MariaDB 10

    MariaDB 是 MySQL 数据库的自由开源分支,与 MySQL 在设计思想上同出一源,在未来仍将是自由且开源的. 在这篇博文中,我将会介绍如何在当前使用最广的 RHEL/CentOS 和 Fedora 发行版上安装 MariaDB 10.1 稳定版. 目前了解到的情况是:Red Hat Enterprise Linux/CentOS 7.0 发行版已将默认的数据库从 MySQL 切换到 MariaDB. 在本文中需要注意的是,我们假定您能够在服务器中使用 root 帐号工作,或者可以使用

随机推荐