编译 php7.2

添加用户

useradd -r -s /sbin/nologin php-fpm
# -r 创建一个系统用户
# -s 指定登录的脚本 /sbin/nologin 不可登录的用户
# php-fpm 用户名,如果没有指定用户组会同时创建一个相同名字的用户组

下载解压安装包

cd ~
wget https://www.php.net/distributions/php-7.2.24.tar.gz
tar zxvf php-7.2.24.tar.gz
cd php-7.2.24

安装依赖

centos 安装依赖

yum -y install libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel libxslt libicu-devel libxslt-devel

ubuntu 安装依赖

apt -y install gcc make openssl curl libbz2-dev libfreetype6-dev libzip-dev build-essential libexpat1-dev libgeoip-dev libpng-dev libpcre3-dev libssl-dev libxml2-dev rcs zlib1g-dev libmcrypt-dev libcurl4-openssl-dev libjpeg-dev libwebp-dev pkg-config

编译安装

./configure \
--prefix=/usr/local/php \
--with-mhash \
--with-openssl \
--with-config-file-path=/usr/local/php/etc \
--enable-short-tags \
--enable-fpm \
--with-fpm-user=php-fpm --with-fpm-group=php-fpm \
--enable-xml \
--with-libxml-dir \
--enable-bcmath \
--enable-calendar \
--enable-intl \
--enable-mbstring \
--enable-pcntl \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-zip \
--enable-mbregex \
--enable-mysqlnd \
--enable-mysqlnd-compression-support \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-gd \
--enable-ftp \
--with-curl \
--with-xsl \
--with-iconv \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--enable-sysvsem \
--enable-inline-optimization \
--with-xmlrpc \
--with-gettext

编译错误

如果编译发生错误,一般都是缺少相应的依赖或依赖的版本比较低,根据错误提示安装或升级相应的依赖

编辑配置文件

# 将安装包中的配置文件复制到 /usr/local/etc 目录中
cp ./php.ini-development ./php.ini-production /usr/local/php/etc
# 复制一份配置文件并命名为 php.ini
cp /usr/local/php/etc/php.ini-development /usr/local/php/etc/php.ini
# 复制 php-fpm 配置文件并重命名
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
# 复制 www.conf 配置文件并重命名
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

配置环境变量

vim /etc/profile
# 添加以下
export PATH=$PATH:/usr/local/php/bin

创建 php-fpm 启动脚本

如果找不到安装包中的 init.d.php-fpm 可以参考文章最后附上的代码,进行修改

 cd ~/php-7.2.24/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

配置开机自启

# centos 方式
chkconfig add php-fpm

# 通过方式
vim /etc/rc.local
# 最后一行添加启动命令
/etc/init.d/php-fpm start

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
发布了48 篇原创文章 · 获赞 13 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_37825371/article/details/103032865