网站首页linux

编译安装PHP7.2及yaf,swoole,redis等扩展

发布时间:2016-05-11 06:04:37编辑:slayer.hover阅读(3588)

           

    基于阿里云vps, 安装php7.2.1到/usr/local/php/72目录下。

    首先编译安装openResty.

    #yum -y install pcre-devel openssl openssl-devel
    #wget https://openresty.org/download/openresty-1.13.6.2.tar.gz 
    #tar -zxvf openresty-1.13.6.2.tar.gz
    #cd openresty-1.13.6.2
    #./configure --prefix=/opt/openresty --with-luajit
    #make && make install


    一、下载编译安装php7.2:

    1.添加www用户组
        groupadd www
    2.添加www用户
        useradd -g www www    
    3.预先安装所有可能会用到的包.
        yum -y install pcre pcre-devel gcc gcc-c++ openssl openssl-devel libicu-devel autoconf libjpeg \
        libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel \
        glibc glibc-devel glib2 glib2-devel ncurses ncurses-devel curl curl-devel krb5-devel libidn \
        libidn-devel openldap openldap-devel nss_ldap jemalloc-devel cmake boost-devel bison automake \
        libevent libevent-devel gd gd-devel libtool* libmcrypt libmcrypt-devel mcrypt mhash libxslt \
        libxslt-devel readline readline-devel gmp gmp-devel libcurl libcurl-devel openjpeg-devel    
        
    在./configure时可能会出现的报错,如:configure: error: Cannot find ldap libraries in /usr/lib 
    解决方法执行拷贝文件:
    #cp -frp /usr/lib64/libldap* /usr/lib/    
        
    4.下载php7.2源码,编译&&安装
    a>#wget http://am1.php.net/distributions/php-7.2.1.tar.gz
    b>#tar -zxvf php-7.2.1.tar.gz
    c>#cd php-7.2.1
    d>#./configure --prefix=/usr/local/php/72 \
    --with-config-file-path=/usr/local/php/72/etc \
    --enable-fpm \
    --with-fpm-user=www \
    --with-fpm-group=www \
    --enable-mysqlnd \
    --with-mysqli=mysqlnd \
    --with-pdo-mysql=mysqlnd \
    --enable-mysqlnd-compression-support \
    --with-iconv-dir \
    --with-freetype-dir \
    --with-jpeg-dir \
    --with-png-dir \
    --with-zlib \
    --with-libxml-dir \
    --enable-xml \
    --disable-rpath \
    --enable-bcmath \
    --enable-shmop \
    --enable-sysvsem \
    --enable-inline-optimization \
    --with-curl \
    --enable-mbregex \
    --enable-mbstring \
    --enable-intl \
    --enable-ftp \
    --with-gd \
    --enable-gd-jis-conv \
    --with-openssl \
    --with-mhash \
    --enable-pcntl \
    --enable-sockets \
    --with-xmlrpc \
    --enable-zip \
    --enable-soap \
    --with-gettext \
    --disable-fileinfo \
    --enable-opcache \
    --with-pear \
    --enable-maintainer-zts \
    --with-ldap=shared \
    --without-gdbm

    其它的未找到库文件之类的报错,按错误提示挨个安装:(如果有的话)

    yum install -y libxslt libxslt-devel libxml2 libxml2-devel pcre-devel bzip2 bzip2-devel

    最终不在报错,则继续编译安装:

    e>#make

    超长时间的等待.......

    f>#make install

    完工, 拷贝配置文件:

      #cp ./php.ini-production /usr/local/php/72/etc/php.ini

      #cp /usr/local/php/72/etc/php-fpm.conf.default    /usr/local/php/72/etc/php-fpm.conf

      #cp /usr/local/php/72/etc/php-fpm.d/www.conf.default    /usr/local/php/72/etc/php-fpm.d/www.conf

    至此,php7已经成功安装到/usr/local/php/72目录下。


    二、配置php7.2的php-fpm与php5.6的php-fpm共存:

    a>复制php7源文件夹中的init.d.php-fpm到/etc/init.d目录:
    #cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php7-fpm
    
    编辑php7-fpm文件, 并对照更新下面几行,主要是php-fpm的运行文件、配置文件、pid的路径要一一对应。
    #vim /etc/init.d/php7-fpm
    
    prefix=/usr/local/php/72
    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/php7-fpm.pid
    b>#chmod 777 /etc/init.d/php-fpm7
    c>复制一份新的php-fpm.conf:
    #cp /usr/local/php/72/etc/php-fpm.conf.default /usr/local/php/72/etc/php-fpm.conf
    d>编辑php-fpm.conf文件, pid文件名与上面的/etc/init.d/php7-fpm里的pid一致;
    修改/tmp/php7-cgi.sock使之与原来的php5的/tmp/php-cgi.sock共存。
    #vim /usr/local/php/72/etc/php-fpm.conf
    [global]
    pid = /usr/local/php/72/var/run/php7-fpm.pid
    error_log = /usr/local/php/72/var/log/php7-fpm.log
    log_level = notice
    [www]
    listen = /tmp/php7-cgi.sock
    listen.backlog = -1
    listen.allowed_clients = 127.0.0.1
    listen.owner = www
    listen.group = www
    listen.mode = 0666
    user = www
    group = www
    pm = dynamic
    pm.max_children = 10
    pm.start_servers = 2
    pm.min_spare_servers = 1
    pm.max_spare_servers = 6
    request_terminate_timeout = 100
    request_slowlog_timeout = 0
    slowlog = var/log/slow.php7.log
    e>启动php7-fpm
    #service php7-fpm start


    三、配置更新nginx,使用php7-fpm解析php文件。

    a>#vim /usr/local/nginx/conf/nginx.conf

    修改此段,fastcgi_pass unit:/tmp/php7-cgi.sock;  使php7解析器工作:


            location ~ [^/]\.php(/|$)
            {
                try_files $uri =404;
                fastcgi_pass  unix:/tmp/php7-cgi.sock;
                fastcgi_index index.php;
                include fastcgi.conf;
            }


    b>重新启动nginx
    #service nginx restart


    四、安装redis

    a>安装redis服务器

    #yum install redis

    b>安装redis的php扩展

    #wget -c https://pecl.php.net/get/redis-4.2.0.tgz 
    #tar zxvf redis-4.2.0.tgz
    #cd redis-4.2.0
    #/usr/local/php/72/bin/phpize
    #./configure --with-php-config=/usr/local/php/72/bin/php-config
    #make
    #make install

    此编译过程中,出了点意外,报个library.lo不是合法的libtool库文件什么什么的, 

    网上找了一圈,解决方法是清除之前编译的可执行文件及配置文件, 重新编译:

    #make clean
    #make && make install

    在php.ini中添加redis.so

    #vim /usr/local/php/72/etc/php.ini
    extension=redis.so



    五、安装PHP的yaf扩展

    a>下载

    #wget http://pecl.php.net/get/yaf-3.0.7.tgz

    b>解压、编译、安装,步骤同上面的redis扩展

    #tar -zxvf yaf-3.0.7.tgz
    #cd yaf-3.0.7
    #/usr/local/php/72/bin/phpize
    #./configure --with-php-config=/usr/local/php/72/bin/php-config
    #make && make install

    在php.ini中添加yaf.so

    #vim /usr/local/php/72/etc/php.ini
    extension=yaf.so



    六、安装PHP的swoole扩展

    a>下载

    #git clone https://gitee.com/swoole/swoole.git

    b>解压、编译、安装,步骤同上:

    #cd swoole
    #/usr/local/php/72/bin/phpize
    #./configure --with-php-config=/usr/local/php/72/bin/php-config
    #make && make install

    在php.ini中添加swoole.so

    #vim /usr/local/php/72/etc/php.ini
    extension=swoole.so



    七、安装PHP的msgpack扩展

    a>下载

    #wget http://pecl.php.net/get/msgpack-2.0.1.tgz

    b>解压、编译、安装,步骤同上:

    #tar -zxvf msgpack-2.0.1.tgz
    #cd msgpack-2.0.1
    #/usr/local/php/72/bin/phpize
    #./configure --with-php-config=/usr/local/php/72/bin/php-config
    #make && make install

    在php.ini中添加msgpack.so

    #vim /usr/local/php/72/etc/php.ini
    extension=msgpack.so


    八、安装mysql数据库(MariaDB)

    a>#yum install mariadb-server mariadb #安装MariaDB
    
    b>#systemctl start mariadb  #启动MariaDB
    
    c>#systemctl stop mariadb  #停止MariaDB
    
    d>#systemctl restart mariadb  #重启MariaDB
    
    e>#systemctl enable mariadb  #设置开机启动


    九、最后重启一下php7-fpm, 启动redis server, 上面安装的就全部生效了。

    a>service php7-fpm restart
    b>service redis start

    完工。


评论