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运行。其他域名需要设置,按照以上步骤操作一遍即可。
- scrapy爬取免费代理IP存储到数据库构建自有IP池
- 每天一个Linux命令:netstat
- Hadoop - MapReduce
- 进击的爬虫:用Python搭建匿名代理池
- 计算机程序的思维逻辑 (5) - 小数计算为什么会出错?
- QQ空间爬虫最新分享,一天 400 万条数据
- 计算机程序的思维逻辑 (4) - 整数的二进制表示与位运算
- Python中典型内建函数的用法
- 软件开发接力赛的最后一棒:上线发布
- 计算机程序的思维逻辑 (3) - 基本运算
- 突破反爬虫的利器——开源IP代理池
- VUE中的v-if与v-show
- 基于Redis的Bloomfilter去重
- 使用Python分析nginx日志
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 0005 Java 包扫描实现和应用(Jar篇)
- python基础 -- acm
- 十四、深入核心,详解事件循环机制
- python基本 -- threading多线程模块的使用
- python基本 -- mysql 的使用
- python爬虫----(6. scrapy框架,抓取亚马逊数据)
- 十五、这一次,彻底弄懂Promise的使用
- python爬虫----(5. scrapy框架,综合应用及其他)
- 十六、半小时掌握ES6常用知识,覆盖80%实践场景
- python爬虫----(4. scrapy框架,官方文档以及例子)
- python爬虫----(3. scrapy框架,简单应用)
- python爬虫----(2. scrapy框架)
- python爬虫----(1. 基本模块)
- 七日Python之路--第十二天(Django Web 开发指南)
- 三日php之路 -- 第一天(php语言参考)