centos 7 编译安装 php-7.2.11的步骤
在官网下载php-7.2.11的php压缩包,centos 7 安装 php-7.2.11的步骤,http://cn2.php.net/distributions/php-7.2.11.tar.gz
-
cd /usr/local/src -
wget -c http://cn2.php.net/distributions/php-7.2.11.tar.gz
下载好后解压 php-7.2.11.tar.gz 压缩包,并进入解压后的目录
-
tar -xzvf php-7.2.11.tar.gz -
cd php-7.2.11
安装php7需要的一些依赖库包 libxml2和一些其他依赖的扩展库
-
yum -y install libxml2 -
yum -y install libxml2-devel -
yum -y install openssl -
yum -y install openssl-devel -
yum -y install curl-devel -
yum -y install libjpeg-devel -
yum -y install libpng-devel -
yum -y install freetype-devel -
yum -y install bzip2-devel -
yum -y install libmcrypt libmcrypt-devel -
yum -y install postgresql-devel -
yum -y install aspell-devel -
yum -y install readline-devel -
yum -y install libxslt-devel -
yum -y install net-snmp-devel -
yum -y install unixODBC-devel -
yum -y install libicu-devel -
yum -y install libc-client-devel -
yum -y install libXpm-devel -
yum -y install libvpx-devel -
yum -y install enchant-devel -
yum -y install openldap -
yum -y install openldap-devel -
yum -y install db4-devel -
yum -y install gmp-devel -
yum -y install sqlite-devel -
yum -y install mysql-devel
安装前的环境配置检查,php7的一些依赖包的检查和php扩展的启动,这个过程如果缺少php依赖的库包会有报错提示。
添加用户和组: (此处用户和组为 nginx, 我 nginx 用的用户名 ) groupadd -r nginx && useradd -r -g nginx -s /sbin/nologin
php 安装配置
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-soap --with-xmlrpc --with-openssl --with-mcrypt --with-pcre-regex --with-sqlite3 --with-zlib --enable-bcmath --with-iconv --with-bz2 --enable-calendar --with-curl --with-cdb --enable-dom --enable-exif --enable-fileinfo --enable-filter --with-pcre-dir --enable-ftp --with-gd --with-openssl-dir --with-jpeg-dir --with-png-dir --with-freetype-dir --enable-gd-native-ttf --enable-gd-jis-conv --with-gettext --with-gmp --with-mhash --enable-json --enable-mbstring --enable-mbregex --enable-mbregex-backtrack --with-libmbfl --with-onig --enable-pdo --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-zlib-dir --with-pdo-sqlite --with-readline --enable-session --enable-shmop --enable-simplexml --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --with-libxml-dir --with-xsl --enable-zip --enable-mysqlnd-compression-support --with-pear --enable-opcache
对php7进行编译和安装的操作
make && make install
( 如果出现 make: *** [sapi/cli/php] Error 1 的错误,通过继续执行 make ZEND_EXTRA_LIBS='-liconv' 命令解决
编译成功,查看php版本
/usr/local/php/bin/php -v
运行php-fpm
/usr/local/php/sbin/php-fpm
启动php-fpm可能会遇到的错误,基本都是配置文件配置和重命名的问题:
错误一:缺少www.conf配置文件(WARNING: Nothing matches the include pattern /usr/local/php/etc/php-fpm.d/*.conf),需要把/usr/local/php/etc/php-fpm.d/*.conf目录中的www.conf.default重命名为www.conf。
错误二:缺少php-fpm.conf配置文件 需要在/usr/local/php/etc/php-fpm.conf 把默认的配置文件php-fpm.conf.default改成php-fpm.conf
错误三:缺少php.ini配置文件 php7编译安装好后会发现没有php.ini配置文件,需要在解压包的根目录中复制php.ini-production或php.ini-development并重命名为php.ini到php编译好的安装目录中的/usr/local/php/etc文件夹即可。
在centos7中编译安装好php后,系统重启后并不会对php进行开机启动,所以需要对centos7添加开机启动脚本对php进行开机启动服务。
php7编译安装方法:http://zixuephp.net/article-207.html
手动启动:
- /usr/local/php/sbin/php-fpm
开机自动启动:
开启配置php-fpm pid
- #找到php-fpm.conf配置文件
- /usr/local/php/etc/php-fpm.conf
- #开启pid ,去掉分号注释
- pid = run/php-fpm.pid
创建开机启动脚本
在Linux中将php-fpm配置成服务的方法
PHP 源文件路径: /usr/local/src/php-7.2.11/
PHP 安装后路径: /usr/local/php/
1. 配置 php-fpm.conf
vim /usr/local/php/etc/php-fpm.conf
php-fpm.pid 目录必须指向:/usr/local/php/var/run/php-fpm.pid
2. 拷贝php-fpm脚本至/etc/init.d目录
cp /usr/local/src/php-7.2.11/sapi/fpm/init.d.php-fpm /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 -
prefix=/usr/local/php -
exec_prefix=${prefix} -
php_fpm_BIN=${exec_prefix}/sbin/php-fpm -
php_fpm_CONF=${prefix}/etc/php-fpm.conf -
php_fpm_PID=${prefix}/var/run/php-fpm.pid -
php_opts="--fpm-config $php_fpm_CONF --pid $php_fpm_PID" -
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 --daemonize $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 -
;; -
status) -
if [ ! -r $php_fpm_PID ] ; then -
echo "php-fpm is stopped" -
exit 0 -
fi -
PID=`cat $php_fpm_PID` -
if ps -p $PID | grep -q $PID; then -
echo "php-fpm (pid $PID) is running..." -
else -
echo "php-fpm dead but pid file exists" -
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" -
;; -
configtest) -
$php_fpm_BIN -t -
;; -
*) -
echo "Usage: $0 {start|stop|force-quit|restart|reload|status|configtest}" -
exit 1 -
;; -
esac
3.设置权限并启动php-fpm:
chmod 755 /etc/init.d/php-fpm
/etc/init.d/php-fpm start
chkconfig –add php-fpm
最后,给出php-fpm以服务的方式启动、停止和重启:
service php-fpm start
service php-fpm stop
service php-fpm reload
PHP-FPM 自启动配置服务:
vim /etc/rc.d/rc.local
查看开机启动的所有服务
chkconfig --list