下载
wget http://php.net/distributions/php-5.6.15.tar.gz
解压
tar zxvf php-5.6.15
安装依赖
yum install -y gcc gcc-c++ make automake autoconf libtool pcre pcre-devel openssl openssll-devel libxslt-devel libmcrypt-devel mhash-devel libxslt-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel
编译安装
./configure --prefix=/home/server/php \
--enable-fpm \
--enable-mbstring \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd
make && make install && make clean
创建配置文件,并复制到正确位置
cp 解压包路径/php.ini-development /home/server/php/php.ini
cp /home/server/php/etc/php-fpm.conf.default /home/server/php/etc/php-fpm.conf
cp /home/server/php/sbin/php-fpm /usr/local/bin
添加用户组和用户www
groupadd www
useradd -r -g www -s /bin/false www
将php.ini文件中的配置项cgi.fix_pathinfo 设置为 0 。
vi /home/server/php/php.ini
定位到 cgi.fix_pathinfo= 并将其修改为如下所示
cgi.fix_pathinfo=0
在启动服务之前,需要修改 php-fpm.conf 配置文件,确保 php-fpm 模块使用 www 用户和 www用户组的身份运行。
vi /home/server/php/etc/php-fpm.conf
# 找到以下内容并修改:
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
user = www
group = www
# 保存修改,并退出编辑
:wq
# 然后启动php-fpm服务
/usr/local/bin/php-fpm
在/etc/init.d编写php-fpm脚本
vi /etc/init.d/php-fpm
复制如下内容
#! /bin/sh
### BEGIN INIT INFO
# Provides: php-fpm
# Required-Start: $remote_fs $network
# Required-Stop: $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts php-fpm
# Description: starts the PHP FastCGI Process Manager daemon
### END INIT INFO
# php程序根目录
PHP_PATH=/home/server/php
php_fpm_BIN=/usr/local/bin/php-fpm
php_fpm_CONF=$PHP_PATH/etc/php-fpm.conf
php_fpm_PID=$PHP_PATH/etc/run/php-fpm.pid
php_opts="--fpm-config $php_fpm_CONF"
wait_for_pid () {
try=0
while test $try -lt 35 ; do
case "$1" in
'created')
if [ -f "$2" ] ; then
try=''
break
fi
;;
'removed')
if [ ! -f "$2" ] ; then
try=''
break
fi
;;
esac
echo -n .
try=`expr $try + 1`
sleep 1
done
}
case "$1" in
start)
echo -n "Starting php-fpm "
$php_fpm_BIN $php_opts
if [ "$?" != 0 ] ; then
echo " failed"
exit 1
fi
wait_for_pid created $php_fpm_PID
if [ -n "$try" ] ; then
echo " failed"
exit 1
else
echo " done"
fi
;;
stop)
echo -n "Gracefully shutting down php-fpm "
if [ ! -r $php_fpm_PID ] ; then
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi
kill -QUIT `cat $php_fpm_PID`
wait_for_pid removed $php_fpm_PID
if [ -n "$try" ] ; then
echo " failed. Use force-quit"
exit 1
else
echo " done"
fi
;;
force-quit)
echo -n "Terminating php-fpm "
if [ ! -r $php_fpm_PID ] ; then
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi
kill -TERM `cat $php_fpm_PID`
wait_for_pid removed $php_fpm_PID
if [ -n "$try" ] ; then
echo " failed"
exit 1
else
echo " done"
fi
;;
restart)
$0 stop
$0 start
;;
reload)
echo -n "Reload service php-fpm "
if [ ! -r $php_fpm_PID ] ; then
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi
kill -USR2 `cat $php_fpm_PID`
echo " done"
;;
*)
echo "Usage: $0 {start|stop|force-quit|restart|reload}"
exit 1
;;
esac
添加执行权限
chmod +x /etc/init.d/php-fpm
添加php-fpm到服务
chkconfig --add php-fpm
开启服务
/etc/init.d/php-fpm start
开机自启
chkconfig php-fpm on
配置nginx以支持php应用
# 修改nginx配置文件,因为之前已经创建独立的网站配置文件localhost.conf
vi /home/server/nginx/conf/vhosts/localhost.conf
location / {
# 网站根目录
root /home/webroot/localhost;
# 默认文档
index index.php index.html index.htm;
}
# 添加对php文档的支持
location ~ \.php$ {
root /home/webroot/localhost;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}