诸多从事PHPer工作多年之人,对于源码编译安装却是仅仅一知半解而已,此情形在实际的运维以及性能优化当中,乃是一个极大的隐患所在。能够掌握从源码来构建PHP以及其核心扩展的能力,将会令你在环境定制、问题排查以及深度优化之际,能够做到游刃有余 。
于开始编译以前,务必要搞清楚你的服务器系统。就拿CentOS 7来说,你得运用yum命令去安装基础开发工具包:yum groupinstall "Development Tools"。除此之外,特定的依赖库也就需要安装不可,不妨以libxml2-devel、openssl-devel、curl-devel等等为例,要是缺了它们,后续配置就会失败。
区别各异的Linux发行版,其命令存在些许不同,Ubuntu系统需运用apt-get install build-essential。在准备时期,还应该创建一个专门用于安装的目录,就像/usr/local/php7这样,以此来防止和系统自身携带的PHP发生冲突。与此同时,要对磁盘空间进行检查,保证有起码2GB的可用空间以供编译流程使用。
给到的建议是,从PHP官方网站的镜像站点那儿去下载最新的稳定版源码,像PHP 7.4.33这种版本。运用wget命令直接进行获取,命令为:wget https://www.php.net/distributions/php-7.4.33.tar.gz。在下载完成之后,借助tar命令来解压,解压命令是:tar -zxvf php-7.4.33.tar.gz。
对其进行解压操作之后,进入到源码所对应的目录之中:cd php - 7.4.33。在这个特定的目录范围里面,你会看到诸如configure、Makefile等一系列关键的文件。在这个时候,不要过于急切地去执行配置相关的操作,而是应该首先去查阅README以及INSTALL这两个文件,从而了解当下这个版本里特殊编译的时候需要注意的事项或者是已知存在的问题。
这属于编译安装里头的关键步骤 ,它会直接对PHP的功能以及性能起到决定性作用 。要执行./configure --prefix=/usr/local/php7以此来明确安装路径 。你得按照项目的具体需求去启用或者禁用扩展哦 ,比如说 ,添加--with-pdo-mysql用以支持MySQL数据库的操作 。
‘–enable-fpm’是另外一个关键参数,要是你打算运用PHP – FPM运行模式,那就必须得将其显式启用。对于生产环境而言,建议把诸如加上’–disable-debug’这样不必要的调试功能给禁用掉。在配置完毕之后,系统会产生最终的Makefile,要是看到“Thank you for using PHP.”这个提示,那就表明配置成功了。
在确保配置没有差错之后,去执行名为make的命令进而用以启动源码编译的操作。这一过程一般来讲是需要花费10至30分钟不等的时间长度的,其具体时长是由服务器CPU的性能状况来决定的。在进行编译的时候务必要维持网络处于稳定的状态,以此防止出现中断的情况。要是出现了错误的状况,那就需要依据报错所给出的信息去安装缺失的库,之后再从configure这个步骤开始重新来过。
编成成功以后,去执行make install把编成完备的文件安置到先前指定的目录,安置完毕之后,/usr/local/php7/bin这个目录里面就会呈现出php、phpize等能够执行的文件,在这个时刻能够运行/usr/local/php7/bin/php -v去查验安置是不是成功,并且查看版本方面的信息。
需把PHP执行文件关联到系统路径,以此来便利使用。请执行ln -s /usr/local/php7/bin/php /usr/bin/php7,随后在终端直接键入php7便可进行调用。紧接着配置PHP-FPM,要从源码目录复制配置文件:cp php.ini-development /usr/local/php7/lib/php.ini, 。
而后对FPM服务文件展开配置,将/usr/local/php7/etc/php-fpm.conf.default复制成为php-fpm.conf,并且把www.conf.default复制成www.conf。依据服务器内存状况对pm.max_children诸如此类的进程管理参数实施调整。最终借助/usr/local/php7/sbin/php-fpm启动该服务。
编译的时候,常常会碰到“configure: error”这样的提示,表示多半的情况是以欠缺开发库为缘由。比如说,如果出现了类似“libpng 未被找见”这样的报错,那么就必须要去安装 libpng-devel。一定要依据错误提示精准地安装对应的包,万不可盲目地进行搜索。安装之后,有时候会碰到扩展没有成功加载的状况,此时需要仔细核查 php.ini 里extension_dir这个路径是不是正确无误。
为了让服务稳定性得以提升,给出的建议是把PHP – FPM配置成系统服务,在/etc/systemd/system/这个路径之下创建php – fpm.service文件,设定好正确的启动命令以及运行用户,如此一来便能够运用systemctl去进行启停操作以及状态监控,定期对FPM的slowlog日志予以查看,这有助于对性能瓶颈进行定位。
于源码编译安装进程里,所碰到的最为棘手艰难的依赖或者配置方面的问题究竟是什么,又是怎样去解决处理的呢,欢迎于评论区域分享你的实际操作经历经验,要是此文对你存有帮助作用,请点赞予以支持。



