首页 » PHP教程 » centos65编译php技巧_CentOS7下编译安装PHP807

centos65编译php技巧_CentOS7下编译安装PHP807

duote123 2024-11-04 0

扫一扫用手机浏览

文章目录 [+]

一、环境解释

本文中利用本地VM虚机支配测试。

centos65编译php技巧_CentOS7下编译安装PHP807

OS:CentOS Linux release 7.8.2003 (Core)

centos65编译php技巧_CentOS7下编译安装PHP807
(图片来自网络侵删)

虚机配置:2核CPU、4G内存

①系统为CentOS 7.8 x64最小化安装,支配前已完成系统初始化、内核及安全优化。

②oniguruma5php依赖包:开启mbstring扩展,须要的正则处理库。
http://rpms.remirepo.net/enterprise/7/remi/x86_64/

二、根本依赖环境

1.根本编译工具

## autoconf——一个用于天生shell脚本的工具,可以自动配置软件源代码以适应多种类似POSIX的系统。
让软件包在所有的不同系统上都可以进行编译。

cd /data/toolswget http://ftp.gnu.org/gnu/autoconf/autoconf-2.71.tar.gztar xf autoconf-2.71.tar.gzcd autoconf-2.71./configure --prefix=/usr/makemake install

## automake——一种用于从名为Makefile.am的文件中自动天生Makefile.ins的工具。
每个Makefile.am基本上都是一系列的make变量定义1,有时会抛出规则。
使天生的Makefile.ins符合GNU Makefile标准。

cd /data/toolswget http://ftp.gnu.org/gnu/automake/automake-1.16.3.tar.gztar xf automake-1.16.3.tar.gzcd automake-1.16.3./configure --prefix=/usr/makemake install

## libtool——一个通用库支持脚本,将利用动态库的繁芜性隐蔽在统一、可移植的接口中。
紧张的一个浸染是在编译大型软件的过程中办理了库的依赖问题。

cd /data/toolswget ftp://ftp.gnu.org/gnu/libtool/libtool-2.4.6.tar.gztar xf libtool-2.4.6.tar.gzcd libtool-2.4.6./configure --prefix=/usr/makemake install

2.安装依赖

## 根本依赖

rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpmyum -y install bzip2 bzip2-devel curl curl-devel fontconfig fontconfig-devel \freetype freetype-devel gd gd-devel gmp gmp-devel icu libicu libicu-devel \libxslt libxslt-devel libmcrypt libmcrypt-devel libevent libevent-devel libjpeg libjpeg-devel \libpng libpng-devel libwebp libwebp-devel libXpm libXpm-devel libxml2 libxml2-devel \openssl openssl-devel pcre-devel perl readline readline-devel zlib zlib-devel sqlite-devel

## oniguruma5php依赖

rpm -ivh https://rpms.remirepo.net/enterprise/7/remi/x86_64/oniguruma5php-6.9.7.1-1.el7.remi.x86_64.rpmrpm -ivh https://rpms.remirepo.net/enterprise/7/remi/x86_64/oniguruma5php-devel-6.9.7.1-1.el7.remi.x86_64.rpm

## 升级libzip(https://libzip.org/)

YUM安装的libzip版本为0.10,达不到哀求,需升级,卸载掉yum安装的libzip然夹帐动安装新版。
另1.4.0版本后的libzip须要用cmake编译,而且cmake版本需3.0.2以上。

yum -y remove libzip libzip-develcd /data/toolswget https://libzip.org/download/libzip-1.3.2.tar.gztar xf libzip-1.3.2.tar.gzcd libzip-1.3.2./configuremake && make installexport PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/"ldconfig /usr/local/lib

三、PHP安装及配置

1.添加组及用户

groupadd -g 1000 wwwuseradd -s /bin/bash -u 1000 -g www www

2.安装PHP

cd /data/tools/wget https://www.php.net/distributions/php-8.0.7.tar.gztar xf php-8.0.7.tar.gzcd php-8.0.7./configure --prefix=/usr/local/php8 --with-config-file-path=/etc \--enable-fpm --with-fpm-user=www --with-fpm-group=www \--disable-debug --disable-rpath --enable-bcmath --enable-mbstring \--enable-shared --enable-soap --enable-session --enable-shmop --enable-simplexml \--enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm \--enable-mbregex --enable-pdo --enable-calendar --enable-dom --enable-exif \--enable-fileinfo --enable-filter --enable-ftp --enable-gd --enable-intl \--enable-mysqlnd --enable-opcache --enable-pcntl --enable-fast-install \--with-curl --with-cdb --with-jpeg --with-freetype --with-webp --with-xpm \--with-gettext --with-gmp --with-mhash --with-openssl --with-iconv \--with-bz2 --with-zlib --with-zip --with-pear --with-mysqli=mysqlnd \--with-pdo-mysql=mysqlnd --enable-mysqlnd-compression-support \--with-readline --with-libxml --with-xsl --without-gdbmmake -j 2//make -j 这里指定的是CPU内核数量,加快编译速率(根据实际情形修正)make install

## 解释:相较于7.4版本,有些配置项发生了变革,不支持“--enable-inline-optimization、--enable-json、--with-xmlrpc、--with-mcrypt、--enable-wddx”等配置项参数。

## configure配置参数解释

--prefix=/usr/local/php8:指定 php8 安装目录 --with-config-file-path=/etc:指定php.ini目录位置--enable-fpm:开启php-fpm功能,此参数适宜nginx平台--with-fpm-user=www:设置FPM运行的用户--with-fpm-group=www:设置FPM运行的用户组--disable-debug:禁用调试模式--disable-rpath:禁用在搜索路径中通报其他运行库。
--enable-bcmath:精度打算,办理数字运算精度问题(支持用字符串的形式表示任意大小和精度的数字)--enable-mbstring:开启多字节、字符串的支持(国际化与字符编码支持) --enable-shared:编译共享库--enable-soap:该扩展可用于编写 SOAP 做事器和客户端--enable-session:开启会话支持。
该模块在PHP中是在并发访问时由一个方法来保存某些数据.从而使你能够构建更多的定制程序,从而提高你的 web 网站的吸引力--enable-shmop:许可PHP读取、写入、创建和删除Unix共享内存段的函数集--enable-simplexml:该扩展供应了一个非常大略和易于利用的工具集,能将XML转换成一个带有一样平常属性选择器和数组迭代器的工具。
此扩展依赖libxml--enable-sockets:开启sockets支持。
该扩展实现了和socket通讯功能的底层接口,它可以和客户端一样当做一个socket做事器--enable-sysvmsg:该扩展用于完成进程间通信的行列步队--enable-sysvsem:利用 SysV 的旗子暗记 (semaphores) 机制,该扩展用于实现进程间旗子暗记量的操作--enable-sysvshm:该扩展用于完成进程间通信共享内存的操作--enable-mbregex:开启正则表达式函数中多字节字符的支持--enable-pdo:为PHP访问数据库定义了一个轻量级的同等接口。
该扩展实现PDO接口的每个数据库驱动可以公开详细数据库的特性作为标准扩展功能。
把稳利用PDO扩展自身并不能实现任何数据库功能;必须利用一个 详细数据库的PDO驱动来访问数据库做事--enable-calendar:开启日历扩展功能,用于在不同历法间进行转换--enable-dom:许可通过DOM API对XML文档进行操作--enable-exif:开启对图片的元数据支持(常日JPEG和TIFF格式的图像文件都包含元数据)--enable-fileinfo:该模块中的函数通过在文件的特定位置查找特定的魔术字节序列来预测文件的内容类型以及编码。
虽然不是百分百的精确,但是常日情形下能够很好的事情--enable-filter:该模块通过验证或清理数据来过滤数据。
当数据源包含未知(或外部)数据(如用户供应的输入)时,这尤其有用。
例如,此数据可能来自HTML表单--enable-ftp:开启ftp的支持,实现通过FTP协议访问文件做事器的客户端--enable-gd:开启gd库的支持,用于创建和处理各种不同图像格式的图像文件,包括 GIF、PNG、JPEG、WBMP 和 XPM--enable-intl:启用国际化支持--enable-mysqlnd:启用mysqlnd来支持连接MySQL--enable-opcache:启用 opcache,默认为 ZendOptimizer+(ZendOpcache)。
OPcache通过将PHP脚本预编译的字节码存储到共享内存中来提升PHP的性能,存储预编译字节码的好处便是省去了每次加载和解析PHP 脚本的开销。
--enable-pcntl:实现Unix办法的进程创建、程序实行、旗子暗记处理以及进程的中断。
进程掌握不能被运用在Web做事器环境,当其被用于Web做事环境时可能会带来意外的结果--enable-fast-install:为快速安装优化--with-curl:开启curl模块,连接通讯各种做事器、利用各种协议--with-cdb:一个用于创建和读取常量数据库的快速、可靠、轻量级的包。
--with-jpeg:开启对jpeg图像的支持,Debian/Ubuntu系统下下需安装libjpeg-dev依赖包;Redhat/CentOS系统下需安装libjpeg、libjpeg-devel依赖包--with-freetype:开启对freetype字体库的支持,Debian/Ubuntu系统下需安装libfreetype6-dev依赖包;Redhat/CentOS系统下需安装freetype、freetype-devel依赖包--with-webp: 开启对webp图像的支持,Debian/Ubuntu系统下需安装libwebp-dev依赖包;Redhat/CentOS系统下需安装libwebp、libwebp-devel依赖包。
--with-xpm:开启对xpm图像的支持,Debian/Ubuntu系统下需安装libxpm-dev依赖包;Redhat/CentOS系统下需安装libXpm、libXpm-devel依赖包。
--with-gettext:实现一个NLS(本机措辞支持)API,用于将PHP运用程序国际化--with-gmp:许可利用GNU MP库处理任意长度的整数--with-mhash:用于创建校验和、择要、验证代码等。
Mhash 支持多种散列算法,例如 MD5、SHA1、GOST 等。
自PHP 7.0.0起,Mash扩展已完备集成到Hash扩展中。
因此,不再可能利用extension_loaded()检测 Mhash 支持;改用function_exists()。
--with-openssl:开启openssl的支持,加密传输时用到的,须要openssl库--with-iconv:此模块包含了iconv字符集转换功能的接口。
利用此模块,可以将一个本地字符集表达的字符串转换成另一种字符集--with-bz2:用于透明地读取和写入 bzip2 (.bz2) 压缩文件--with-zlib:开启zlib库的支持,该模块使您能够通过大多数文件系统函数的版本透明地读取和写入gzip (.gz)压缩文件,这些文件系统函数适用于gzip压缩文件(也包括未压缩文件,但不适用于套接字)--with-zip:开启zip的支持,此扩展可以让你透明地读写ZIP压缩文档以及它们里面的文件--with-pear:安装pear及pecl。
PEAR是一个可重用的PHP组件的框架和分发系统。
;PECL(PHP 扩展社区库)是 PHP 扩展的存储库,供应所有已知扩展的目录和用于下载和开拓 PHP 扩展的托管举动步伐--with-mysqli=mysqlnd:由PHP源码供应的mysql驱动连接代码,它的目的是代替旧的libmysql驱动--with-pdo-mysql=mysqlnd:由PHP源码供应的mysql驱动连接代码,它的目的是代替旧的libmysql驱动--enable-mysqlnd-compression-support:在 mysqlnd 中启用对 MySQL 压缩协议的支持--with-readline:实现访问GNU Readline库的接口。
Debian/Ubuntu系统下需安装libreadline-dev依赖包;Redhat/CentOS系统下需安装readline、readline-devel依赖包。
readline扩展并非线程安全的!
因此,在任何真线程安全的SAPI(例如Apache的mod_winnt)中利用这个扩展是非常不推举的!
--with-libxml:某些核心扩展的依赖,如:DOM、libxml、SimpleXML、SOAP、WDDX、XSL、XML、XMLReader、XMLRPC和XMLWriter--with-xsl:该扩展实现了XSL标准,利用libxslt库实行XSLT转换--without-gdbm:禁用GNU 数据库管理器

3.设置全局的php命令

## 编辑/etc/profile文件,添加环境变量

vi /etc/profile//在文件末了添加如下内容######PHPPATH=$PATH:/usr/local/php8/bin

## 在当前终端生效环境变量

source /etc/profile

## 查看PHP版本

php -v

4.配置php-fpm.conf文件

## 创建php-fpm.conf配置文件

vi /usr/local/php8/etc/php-fpm.conf//输入以下内容[global]pid = /usr/local/php8/var/run/php-fpm.piderror_log = /usr/local/php8/var/log/php-fpm.loglog_level = notice[www]listen = 127.0.0.1:9000listen.backlog = -1listen.allowed_clients = 127.0.0.1listen.owner = wwwlisten.group = wwwlisten.mode = 0666user = nginxgroup = nginxpm = dynamicpm.max_children = 20pm.start_servers = 10pm.min_spare_servers = 10pm.max_spare_servers = 15pm.max_requests = 100request_terminate_timeout = 50request_slowlog_timeout = 15slowlog = var/log/slow.log

注:①配置文件中所有参数的设置可根据实际环境需求进行修正,此处配置仅供参考。
pm.max_spare_servers选项的值要小于或即是pm.max_children选项的值;

②pm.max_requests:指的是每个子进程在处理了多少个要求数量之后就重启。

5.配置做事管理脚本

## 创建做事管理脚本

vi /usr/lib/systemd/system/php-fpm.service//输入以下内容[Unit]Description=The PHP FastCGI Process Manager Documentation=http://php-fpm.org/After=network.target remote-fs.target nss-lookup.target[Service]Type=forkingPIDFILE=/usr/local/php8/var/run/php-fpm.pidExecStart=/usr/local/php8/sbin/php-fpm -y /usr/local/php8/etc/php-fpm.conf -c /etc/php.iniExecRestart=/bin/kill -USR2 $MAINPIDExecReload=/bin/kill -USR2 $MAINPIDExecStop=/bin/kill -s QUIT $MAINPIDPrivateTmp=true[Install]WantedBy=multi-user.target

注:脚本中的 "-c /etc/php.ini" 参数是为理解决某些第三方扩展已安装无法加载的问题,即在phpinfo页面中查看不到的情形。

## 添加实行权限

chmod a+x /usr/lib/systemd/system/php-fpm.service

## 重新加载做事配置文件

systemctl daemon-reload

6.配置php.ini文件

注:本文中的参数配置仅供参考,实际利用环境中请根据需求进行修正。

## 创建php.ini配置文件

cd /data/tools/php-8.0.7cpphp.ini-production/etc/php.ini

## 根本配置

sed -i 's/post_max_size = 8M/post_max_size = 20M/g' /etc/php.inised -i 's/upload_max_filesize = 2M/upload_max_filesize = 20M/g' /etc/php.inised -i 's/;date.timezone =/date.timezone = Asia\/Shanghai/g' /etc/php.inised -i 's/short_open_tag = Off/short_open_tag = On/g' /etc/php.inised -i 's/max_execution_time = 30/max_execution_time = 300/g' /etc/php.inised -i 's/disable_functions =./disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server/g' /etc/php.ini

## 开启opcache 和 JIT

vi /etc/php.ini//在配置文件中找到 [opcache]位置,添加如下参数配置:zend_extension=/usr/local/php8/lib/php/extensions/no-debug-non-zts-20200930/opcache.soopcache.enable=1opcache.enable_cli=1opcache.memory_consumption=256opcache.interned_strings_buffer=64opcache.max_accelerated_files=5000opcache.save_comments=1opcache.file_cache=/tmp;jit配置opcache.jit=1235opcache.jit_buffer_size=64M

解释:JIT是在Opcache优化的根本上结合Runtime信息将字节码编译为机器码缓存起来。
现有的Opcache优化不受任何影响,并且PHP的JIT是在Opcache中供应的。
JIT不是对Opcache替代,而是增强,在启用JIT的情形下,如果Zend底层创造特定字节码已经编译为机器码,则可以绕过Zend VM直接让CPU实行机器码,从而提高代码性能。

## 确认opcache默认是否启用成功

php -m | grep OPcache

四、做事管理

启动:systemctl start php-fpm.service关闭:systemctl stop php-fpm.service重启:systemctl restart php-fpm.service查看状态:systemctl status php-fpm.service开机启动:systemctlenablephp-fpm.service关闭开机启动:systemctldisablephp-fpm.service

标签:

相关文章

Java代码虚拟化保护技术与应用前景

软件应用的需求日益增长,软件开发过程中对代码的保护成为了一个重要议题。Java作为一种广泛应用于企业级应用的编程语言,其代码虚拟化...

PHP教程 2025-03-02 阅读1 评论0

CAD插件错误代码与应对步骤

CAD(计算机辅助设计)软件在工程设计领域得到了广泛应用。CAD插件作为提升设计效率的重要工具,在提高设计师工作效率的也带来了一定...

PHP教程 2025-03-02 阅读1 评论0

上古卷轴代码规则大全游戏背后的编程奥秘

《上古卷轴》作为一款深受玩家喜爱的角色扮演游戏,自问世以来便以其丰富的世界观、独特的游戏体验和深厚的文化底蕴吸引了无数玩家。在这款...

PHP教程 2025-03-02 阅读1 评论0