MrZyb

安装流程

  • 准备好编译源码需要的环境
  • 先到PHP官网下载要安装的源码压缩包
  • 解压并设置运行时配置
  • 编译 && 安装

具体安装步骤

  • 准备编译环境,以及PHP可能会需要的依赖
apt install gcc autoconf make
apt install libxml2-dev build-essential openssl libssl-dev libcurl4-gnutls-dev libjpeg-dev libpng-dev libtool-bin bison libxslt1-dev  libfreetype6-dev libssl1.0
cd ~
wget https://www.php.net/distributions/php-7.2.25.tar.gz  # 下载资源包
tar zxvf php-7.2.25.tar.gz
cd php-7.2.25
  • cd 进入到源码目录之后可以看到当前目录下有 configurebuildconfbuildconf 在需要重新生成 configure文件的时候会用到,什么情况下会需要重新生成呢?比如我们要新增静态编译一个我们需要的PHP扩展。
    # --prefix 设置安装目录
    # --with-config-file-path 设置php.ini配置文件的目录
    # 可通过 configure --help 查看有哪些可用的指令
    # 一个包含大部分需要的拓展的编译指令
    ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/conf --with-fpm-user=www-data --with-fpm-group=www-data --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-fpm --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-pcntl --enable-pdo --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-xml --enable-zip --enable-ftp --enable-exif --with-curl=/usr/local/php --with-freetype-dir=/usr/local/php/lib --with-gd --with-gettext --with-iconv-dir --with-jpeg-dir=/usr/local/php/lib --with-png-dir=/usr/local/php/lib --with-libxml-dir=/usr/local/php --with-mhash --with-openssl --with-pcre-regex --with-pear --with-xmlrpc --with-zlib --enable-bcmath --disable-rpath --with-xsl --enable-opcache --enable-fileinfo
    
    • 如果在编译安装的时候我们要直接把我们需要的扩展编译好,就需要到 pecl PHP扩展包 这里下载我们需要的扩展源码包,然后将拓展源码放到 php-7.2.25/ext 这个目录下,然后执行 buildconf 重新生成 buildconf文件。然后再执行编译,并在编译的时候设置开启这个扩展。比如我们要静态编译安装redis
    cd ~
    wget https://pecl.php.net/get/redis-5.2.2.tgz # 下载redis扩展源码
    tar zxvf redis-5.2.2.tgz # 下载redis扩展源码
    cp -r redis-5.2.2 ~/php-7.2.25/ext/redis # 将扩展源码放到PHP源码的ext目录下
    cd php-7.2.25 # 回到PHP源码根目录
    buildconf --force # 然后执行 buildconf 重新生成 configure 文件
    # 最后在 configure 配置中加入 --enable-redis 即可
    ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/conf --with-fpm-user=www-data --with-fpm-group=www-data --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-fpm --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-pcntl --enable-pdo --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-xml --enable-zip --enable-ftp --enable-exif --with-curl=/usr/local/php --with-freetype-dir=/usr/local/php/lib --with-gd --with-gettext --with-iconv-dir --with-jpeg-dir=/usr/local/php/lib --with-png-dir=/usr/local/php/lib --with-libxml-dir=/usr/local/php --with-mhash --with-openssl --with-pcre-regex --with-pear --with-xmlrpc --with-zlib --enable-bcmath --disable-rpath --with-xsl --enable-opcache --enable-fileinfo --enable-redis
    
  • 然后等待完成安装,顺利安装成功的话可以在我们设置的 --prefix 的这个路径看到最终编译安装好的PHP相关文件,我们需要设置php.iniphp-fpm.conf等相关配置。我们指定的php.ini配置文件路径是/usr/local/php/conf,可能会没有这个目录,我们自己创建TA,然后将PHP源码目录下的 php.ini-development 或者 php.ini-production 复制一份到 conf 目录下, cp ~/php-7.2.25/php.ini-production /usr/local/php/conf/php.ini。然后是php-fpm的配置,php7默认是是在/usr/local/php/etc这个目录下,里面会有一个pear的配置文件和一个php-fpm以default为后缀的默认配置文件,我们复制一个文件把default后缀去掉即可,cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf。还有一个www的目录,www目录下也是一个默认文件(在php-fpm.conf中会引入),我们也是复制一个去掉default后缀即可。
  • 执行至此PHP开发环境安装完毕
    • 执行 /usr/local/php/sbin/php-fpm 即可开启fpm
    • 如果我们再编译安装的时候没有安装我们需要的扩展,那我们也通过 phpize 编译安装或者简单的 pecl 安装方式来安装我们需要的扩展。这里简单介绍pecl的使用,编译安装的方法请自行搜索查找。
    # 安装seaslog扩展
    /usr/local/php/bin/pecl install seaslog # 执行这个指令,然后按照提示在php.ini文件中加入extension=seaslog.so即可
    # 指定seaslog版本安装
    /usr/local/php/bin/pecl install seaslog-2.0.2
    

PHP7 使用opcache优化fpm,展示PHP7真正的实力!

  • 安装后开启php-fpm,接入到生成环境负载上(),相同负载压力下,PHP5.4(开启APC的情况下)单个进程的CPU占用情况如下
    PHP5.4开启APC
    而PHP7的单个fpm进程CPU占用非常高
    PHP7未开启opcache
    在php.ini中打开opcache配置的注释符开启opcache

    opcache.enable=1
    opcache.memory_consumption=128
    opcache.interned_strings_buffer=8
    opcache.max_accelerated_files=10000
    opcache.validate_timestamps=0
    opcache.revalidate_freq=0
    opcache.save_comments=0
    opcache.file_cache=/tmp
    opcache.huge_code_pages=1
    

    有一个配置opcache.fast_shutdown=1php7.2.0以后废弃了,fast_shutdown 快速停止的续发事件的处理已经集成到 PHP 中,只要有可能,PHP会自动处理这些续发事件。
    这时候fpm的CPU占用会得到很大幅度的改善,但是表现还是不如PHP5+APC环境下的fpm。
    PHP7开启opcache
    要达到最好的效果是要在php.ini中加上 zend_extension=opcache.so 这个配置。这个配置是ini文件中没有的,所以要我们手动加上。opcache既是PHP扩展,也是zend扩展,关于这两个的区别请移步PHP扩展与Zend扩展区别。设置这个之后fpm就得到了最好的性能提升了。
    PHP7开启zend OPcache

  • 参考链接

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2021-07-24
  • 2022-12-23
  • 2022-12-23
  • 2021-12-12
  • 2021-12-31
  • 2022-12-23
  • 2021-07-21
猜你喜欢
  • 2021-12-10
  • 2022-01-20
  • 2021-11-22
  • 2022-02-15
  • 2022-12-23
  • 2022-12-23
  • 2021-11-08
相关资源
相似解决方案