您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > php

CentOS7下编译安装PHP8.0.7

时间:2021-06-25 09:28:21  来源:今日头条  作者:IT运维笔记
CentOS7下编译安装PHP8.0.7

 

一、环境说明

本文中使用本地VM虚机部署测试。

OS:centos linux release 7.8.2003 (Core)

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

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

②oniguruma5php依赖包:开启mbstring扩展,需要的正则处理库。

http://rpms.remirepo.net/enterprise/7/remi/x86_64/

 

 

二、基础依赖环境

1.基础编译工具

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

cd /data/tools
wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.71.tar.gz
tar xf autoconf-2.71.tar.gz
cd autoconf-2.71
./configure --prefix=/usr/
make
make install

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

cd /data/tools
wget http://ftp.gnu.org/gnu/automake/automake-1.16.3.tar.gz
tar xf automake-1.16.3.tar.gz
cd automake-1.16.3
./configure --prefix=/usr/
make
make install

## libtool——一个通用库支持脚本,将使用动态库的复杂性隐藏在统一、可移植的接口中。主要的一个作用是在编译大型软件的过程中解决了库的依赖问题。

cd /data/tools
wget ftp://ftp.gnu.org/gnu/libtool/libtool-2.4.6.tar.gz
tar xf libtool-2.4.6.tar.gz
cd libtool-2.4.6
./configure --prefix=/usr/
make
make install

 

2.安装依赖

## 基础依赖

rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum -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.rpm
rpm -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以上。

CentOS7下编译安装PHP8.0.7

 

yum -y remove libzip libzip-devel
cd /data/tools
wget https://libzip.org/download/libzip-1.3.2.tar.gz
tar xf libzip-1.3.2.tar.gz
cd libzip-1.3.2
./configure
make && make install
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/"
ldconfig /usr/local/lib

 

 

三、PHP安装及配置

1.添加组及用户

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

 

2.安装PHP

cd /data/tools/
wget https://www.php.net/distributions/php-8.0.7.tar.gz
tar xf php-8.0.7.tar.gz
cd 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-gdbm
make -j 2
//make -j 这里指定的是CPU内核数量,加快编译速度(根据实际情况修改)
make install
CentOS7下编译安装PHP8.0.7

 

## 说明:相较于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
//在文件最后添加如下内容
######PHP
PATH=$PATH:/usr/local/php8/bin

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

source /etc/profile

## 查看PHP版本

php -v
CentOS7下编译安装PHP8.0.7

 

 

4.配置php-fpm.conf文件

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

vi /usr/local/php8/etc/php-fpm.conf
//输入以下内容
[global]
pid = /usr/local/php8/var/run/php-fpm.pid
error_log = /usr/local/php8/var/log/php-fpm.log
log_level = notice

[www]
listen = 127.0.0.1:9000
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
listen.owner = www
listen.group = www
listen.mode = 0666
user = nginx
group = nginx
pm = dynamic
pm.max_children = 20
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers = 15
pm.max_requests = 100
request_terminate_timeout = 50
request_slowlog_timeout = 15
slowlog = 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=forking
PIDFILE=/usr/local/php8/var/run/php-fpm.pid
ExecStart=/usr/local/php8/sbin/php-fpm -y /usr/local/php8/etc/php-fpm.conf -c /etc/php.ini
ExecRestart=/bin/kill -USR2 $MAINPID
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=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.7
cp php.ini-production /etc/php.ini

## 基础配置

sed -i 's/post_max_size = 8M/post_max_size = 20M/g' /etc/php.ini
sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 20M/g' /etc/php.ini
sed -i 's/;date.timezone =/date.timezone = Asia/Shanghai/g' /etc/php.ini
sed -i 's/short_open_tag = Off/short_open_tag = On/g' /etc/php.ini
sed -i 's/max_execution_time = 30/max_execution_time = 300/g' /etc/php.ini
sed -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.so
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=64
opcache.max_accelerated_files=5000
opcache.save_comments=1
opcache.file_cache=/tmp
;jit配置
opcache.jit=1235
opcache.jit_buffer_size=64M
CentOS7下编译安装PHP8.0.7

 

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

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

php -m | grep OPcache
CentOS7下编译安装PHP8.0.7

 

 

 

四、服务管理

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


Tags:PHP8.0.7   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
一、环境说明本文中使用本地VM虚机部署测试。OS:CentOS Linux release 7.8.2003 (Core)虚机配置:2核CPU、4G内存①系统为CentOS 7.8 x64最小化安装,部署前已完成系统初始化、...【详细内容】
2021-06-25  Tags: PHP8.0.7  点击:(141)  评论:(0)  加入收藏
▌简易百科推荐
序言:前段时间织梦因为版权的问题在网上闹得沸沸扬扬,也提醒了众多开发者选择cms上应该谨慎使用,今天给大家展示一款自己搭建的内容管理系统,不用担心版权的问题,而且非常容易维...【详细内容】
2021-11-30  小程序软件开发    Tags:管理系统   点击:(31)  评论:(0)  加入收藏
准备安装包(PHP: Hypertext Preprocessor)下载安装包以及组件wget https://www.php.net/distributions/php-8.0.0.tar.bz2wget https://github.com/phpredis/phpredis/archive...【详细内容】
2021-11-09  mimic96    Tags:PHP   点击:(40)  评论:(0)  加入收藏
golang context 很好用,就使用php实现了github地址 : https://github.com/qq1060656096/php-go-context context使用闭坑指南1. 将一个Context参数作为第一个参数传递给传入和...【详细内容】
2021-11-05  1060656096    Tags:PHP   点击:(40)  评论:(0)  加入收藏
一段数组为例:$list = array:4 [ 0 => array:7 [ "id" => 56 "mer_id" => 7 "order_id" => "wx163265961408769974" "is_postage" => 0 "store_name" => "奇...【详细内容】
2021-09-29  七七小影视    Tags:PHP   点击:(64)  评论:(0)  加入收藏
利用JS的CryptoJS 3.x和PHP的openssl_encrypt,openssl_decrypt实现AES对称加密解密,由于需要两种语言对同一字符串的操作,而CryptoJS 的默认加密方式为“aes-256-cbc”,PHP端也...【详细内容】
2021-09-16  李老师tome    Tags:对称加密   点击:(79)  评论:(0)  加入收藏
1、checkdate()验证格利高里日期即:日期是否存在。checkdate(month,day,year);month必需。一个从 1 到 12 的数字,规定月。day必需。一个从 1 到 31 的数字,规定日。year必需。...【详细内容】
2021-08-31  七七小影视    Tags:时间函数   点击:(80)  评论:(0)  加入收藏
对于各类开发语言来说,整数都有一个最大的位数,如果超过位数就无法显示或者操作了。其实,这也是一种精度越界之后产生的精度丢失问题。在我们的 PHP 代码中,最大的整数非常大,我...【详细内容】
2021-08-26  硬核项目经理    Tags:PHP   点击:(83)  评论:(0)  加入收藏
遵从所有教材以及各类数据结构相关的书书籍,我们先从线性表开始入门。今天这篇文章更偏概念,是关于有线性表的一个知识点的汇总。上文说过,物理结构是用于确定数据以何种方式存...【详细内容】
2021-07-19  硬核项目经理    Tags:线性表   点击:(94)  评论:(0)  加入收藏
一、开启IIS全部功能。二、部署PHP1.官网下载并解压PHP: https://windows.php.net/downloads/releases/2.将php.ini-development文件改为php.ini3.修改php.ini(1)去掉注释,并修...【详细内容】
2021-07-15  炘蓝火诗  今日头条  Tags:PHP环境   点击:(128)  评论:(0)  加入收藏
一、环境说明本文中使用本地VM虚机部署测试。OS:CentOS Linux release 7.8.2003 (Core)虚机配置:2核CPU、4G内存①系统为CentOS 7.8 x64最小化安装,部署前已完成系统初始化、...【详细内容】
2021-06-25  IT运维笔记  今日头条  Tags:PHP8.0.7   点击:(141)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条