yum install -y gcc gcc-c++ make cmake bison autoconf wget lrzsz
yum install -y libtool libtool-ltdl-devel
yum install -y freetype-devel libjpeg.x86_64 libjpeg-devel libpng-devel gd-devel
yum install -y python-devel patch sudo
yum install -y openssl* openssl openssl-devel ncurses-devel
yum install -y bzip* bzip2 unzip zlib-devel
yum install -y libevent*
yum install -y libxml* libxml2-devel
yum install -y libcurl* curl-devel
yum install -y readline-devel
yum install -y libmcrypt libmcrypt-devel mcrypt mhash
如果无法安装libiconv,请手动下载安装
http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar xf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure --prefix=/usr/local/libiconv
make && make install
如果出现如下问题,说明你系统版本较高。
./stdio.h:1010:1: 错误:‘ gets ’未声明(不在函数内)
cd srclib/
sed -i -e '/gets is a security/d' ./stdio.in.h
cd ../
make && make install
如果安装libmcrypt-devel、mhash、mcrypt出错,则重新配置yum源。
http://mirrors.aliyun.com/help/centos
http://php.net/downloads.php
如:php-7.0.17.tar.gz
wget http://cn2.php.net/distributions/php-7.0.17.tar.gz
创建账号
useradd -s /sbin/nologin -M www
tar xf php-7.0.17.tar.gz
cd php-7.0.17
./configure \
--prefix=/usr/local/php7 \
--with-config-file-path=/usr/local/php7/etc \
--with-config-file-scan-dir=/usr/local/php7/etc/php.d \
--with-mcrypt=/usr/include \
--enable-mysqlnd \
--with-mysqli \
--with-pdo-mysql \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--with-gd \
--with-iconv \
--with-zlib \
--enable-xml \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--enable-mbregex \
--enable-mbstring \
--enable-ftp \
--enable-gd-native-ttf \
--with-openssl \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--without-pear \
--with-gettext \
--enable-session \
--with-curl \
--with-jpeg-dir \
--with-freetype-dir \
--enable-opcache
make && make install
ln -s /usr/local/php7/ /usr/local/php
cd php-7.0.17/
cp php.ini-production /usr/local/php7/etc/php.ini
php.ini中文手册:
http://www.jinbuguo.com/php/php52-ini.html
vim /usr/local/php7/etc/php.ini
[php]
expose_php=Off
max_file_uploads=30
post_max_size=30M
[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
[date]
date.timezone=Asia/Shanghai
[session]
session.sid_length=40
cd /usr/local/php7/etc/
cp php-fpm.conf.default php-fpm.conf
vim /usr/local/php7/etc/php-fpm.conf
[global]
pid = run/php-fpm.pid
error_log = log/php-fpm.log
daemonize = yes
include=/usr/local/php7/etc/php-fpm.d/*.conf
cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf
vim /usr/local/php7/etc/php-fpm.d/www.conf
[www]
user = www
group = www
listen = /dev/shm/php-cgi.sock
listen.owner = www
listen.group = www
listen.mode = 0660
listen.allowed_clients = 127.0.0.1
pm = static
pm.max_children = 120 # 根据服务器内存配置 40/1GB
pm.start_servers = 30
pm.min_spare_servers = 20
pm.max_spare_servers = 40
pm.max_requests = 500
request_terminate_timeout = 300
echo 'export PATH=/usr/local/php7/bin:/usr/local/php7/sbin:$PATH' >> /etc/profile
source /etc/profile
cp sapi/fpm/init.d.php-fpm.in /etc/init.d/php7-fpm
chmod +x /etc/init.d/php7-fpm
###########################################################
vim /etc/init.d/php-fpm7
#! /bin/sh
# Comments to support chkconfig on CentOS
# chkconfig: 2345 65 37
#
set -e
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="php-fpm7 daemon"
NAME=php-fpm
DAEMON=/usr/local/php7/sbin/$NAME
CONFIGFILE=/usr/local/php7/etc/php-fpm.conf
PIDFILE=/usr/local/php7/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
d_start() {
$DAEMON -y $CONFIGFILE || echo -n " already running"
}
d_stop() {
kill -QUIT `cat $PIDFILE` || echo -n " not running"
}
d_reload() {
kill -HUP `cat $PIDFILE` || echo -n " can't reload"
}
case "$1" in
start)
echo -n "Starting $DESC is success"
d_start
echo "."
;;
stop)
echo -n "Stopping $DESC is success"
d_stop
echo "."
;;
reload)
echo -n "Reloading $DESC configuration..."
d_reload
echo "reloaded."
;;
restart)
echo -n "Restarting $DESC is success"
d_stop
sleep 1
d_start
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
exit 3
;;
esac
chmod 755 /etc/init.d/php-fpm7
chkconfig --add php-fpm7
chkconfig php-fpm7 on
chkconfig --list php-fpm7
使用service php-fpm7 start启动服务了
关闭
kill -INT `cat /usr/local/php7/var/run/php-fpm.pid`
重启
kill -USR2 `cat /usr/local/php7/var/run/php-fpm.pid`