Rocky Linux 9 源码包安装php7

大家好!我是星哥。尽管现在 PHP 版本已迭代至 8.x,但有时为了兼容遗留系统或特定应用需求,我们仍需部署特定版本的 PHP。最主要的是之前的项目采用的PHP7.3,未来兼容旧的项目, 今天,星哥将手把手带大家在 Rocky Linux 9 环境下,从源码编译安装 PHP 7.3.7。

你可能会问,为何不直接使用 dnf 或 yum 安装呢?原因有三:

  1. 版本精确控制: 仓库中通常提供的是最新或LTS版本,而源码编译能让你安装到任何你需要的精确版本,例如本次的 PHP 7.3.7。

  2. 性能优化: 编译时可以根据你的硬件和特定需求,开启或关闭特定的扩展和优化选项,从而获得更优的性能。

  3. 环境纯净: 避免了包管理器可能带来的不必要的依赖包,保持系统环境的精简。

img

快速安装

Rocky Linux 9系统中源码包安装php7.3 phpfpm,shell脚本

安装目录为:/data/app/php7.3 、用户为 www 、端口自定义为 7300 。

安装扩展

需要安装:

openssl

phpredis

pcntl

amqp

rabbitmq

swoole

开机启动配置文件: /etc/systemd/system/php7.3-fpm.service

启动命令: systemctl start php7.3-fpm.service

停止命令: systemctl stop php7.3-fpm.service

重启命令: systemctl restart php7.3-fpm.service

# 使用:
# gitee:
# wget https://gitee.com/funet8/Rocky-Linux-Shell/raw/main/shell/Rocky_Linux_9_Install_PHP7_3_PHPFPM.sh
# sh Rocky_Linux_9_Install_PHP7_3_PHPFPM.sh
# github:
# wget https://raw.githubusercontent.com/funet8/Rocky-Linux-Shell/refs/heads/main/shell/Rocky_Linux_9_Install_PHP7_3_PHPFPM.sh
# sh Rocky_Linux_9_Install_PHP7_3_PHPFPM.sh

1.新建用户和用户组

groupadd $USER
useradd -g $USER $USER

2.安装编译 PHP 依赖包

# 清理缓存并更新软件包列表dnf clean alldnf makecachednf groupinstall "Development Tools" -ydnf install -y wget gcc gcc-c++ make \autoconf automake libtool \bison re2c \libxml2-devel \sqlite-devel \bzip2-devel \libcurl-devel curl-devel \libffi-devel \libpng-devel \libwebp-devel \libjpeg-devel \oniguruma \libzip \libicu-devel \openssl-devel \libuuid-devel \systemd-devel \libxslt-devel \readline-develdnf install -y perl perl-core perl-FindBindnf install -y c-ares-develdnf install -y compat-openssl11dnf install -y freetype-develdnf install -y gmp-develwget http://js.funet8.com/rocky-linux/php/oniguruma-devel-6.9.6-1.el9.6.x86_64.rpmdnf -y install oniguruma-devel-6.9.6-1.el9.6.x86_64.rpm
​#wget https://dl.rockylinux.org/pub/rocky/9/devel/x86_64/os/Packages/l/libzip-devel-1.7.3-8.el9.x86_64.rpmwget http://js.funet8.com/rocky-linux/php/libzip-devel-1.7.3-8.el9.x86_64.rpmdnf -y install libzip-devel-1.7.3-8.el9.x86_64.rpm

3.安装低版本的openssl

这一块采坑了很久

在 Rocky Linux 9 上安装 OpenSSL 1.1.x(用于编译 PHP 7.3.x)是可行的,不会影响系统自带的 OpenSSL 3.x,只需将其安装到指定路径并在 PHP 编译时引用。

cd /usr/local/srcwget http://js.funet8.com/rocky-linux/php/openssl-1.1.1u.tar.gztar -zxf openssl-1.1.1u.tar.gzcd openssl-1.1.1u./config --prefix=/usr/local/openssl-1.1.1 --openssldir=/usr/local/openssl-1.1.1 shared zlibmake -j$(nproc)make installexport LD_LIBRARY_PATH=/usr/local/openssl-1.1.1/lib:$LD_LIBRARY_PATH# 验证/usr/local/openssl-1.1.1/bin/openssl version# 系统永久生效echo 'export LD_LIBRARY_PATH=/usr/local/openssl-1.1.1/lib:$LD_LIBRARY_PATH' > /etc/profile.d/openssl1.1.shchmod +x /etc/profile.d/openssl1.1.shsource /etc/profile.d/openssl1.1.sh

4.编译安装php7.3

mkdir -p /data/app/php7.3
mkdir -p /data/software/php7.3 && cd /data/software/php7.3
​
cd /data/software/php7.3# wget https://www.php.net/distributions/php-7.3.7.tar.gzwget http://js.funet8.com/rocky-linux/php/php-7.3.7.tar.gztar -zxf php-7.3.7.tar.gzcd php-7.3.7export PKG_CONFIG_PATH=/usr/local/openssl-1.1.1/lib/pkgconfigexport CFLAGS="-I/usr/local/openssl-1.1.1/include"export LDFLAGS="-L/usr/local/openssl-1.1.1/lib"     ./configure \--prefix=/data/app/php7.3 \--with-config-file-path=/data/app/php7.3/etc \--with-fpm-user=www \--with-fpm-group=www \--enable-fpm \--enable-inline-optimization \--disable-debug \--disable-rpath \--enable-shared \--enable-soap \--with-libxml-dir \--with-xmlrpc \--with-openssl=/usr/local/openssl-1.1.1 \--with-openssl-dir \--with-mhash \--with-pcre-regex \--with-sqlite3 \--with-zlib \--enable-bcmath \--with-iconv \--with-bz2 \--enable-calendar \--with-curl \--with-cdb \--enable-dom \--enable-exif \--enable-fileinfo \--enable-filter \--with-pcre-dir \--enable-ftp \--with-gd \--with-jpeg-dir \--with-png-dir \--with-zlib-dir \--with-freetype-dir \--enable-gd-jis-conv \--with-gettext \--with-gmp \--with-mhash \--enable-json \--enable-mbstring \--enable-mbregex \--enable-mbregex-backtrack \--with-onig \--enable-pdo \--with-mysqli=mysqlnd \--with-pdo-mysql=mysqlnd \--with-zlib-dir \--with-pdo-sqlite \--with-readline \--enable-session \--enable-shmop \--enable-simplexml \--enable-sockets \--enable-sysvmsg \--enable-sysvsem \--enable-sysvshm \--enable-wddx \--with-libxml-dir \--with-xsl \--enable-zip \--enable-mysqlnd-compression-support \--with-pear \--enable-opcache
​
make && make install

5.配置环境变量

cp -a /data/app/php7.3/bin/php /data/app/php7.3/bin/php7.3echo "export PATH=$PATH:/data/app/php7.3/bin">>/etc/profile source /etc/profilephp7.3 -v

6.修改php7.3配置文件

cp /data/software/php7.3/php-7.3.7/php.ini-production /data/app/php7.3/etc/php.inicp /data/software/php7.3/php-7.3.7/sapi/fpm/php-fpm.conf /data/app/php7.3/etc/php-fpm.confcp /data/app/php7.3/etc/php-fpm.d/www.conf.default /data/app/php7.3/etc/php-fpm.d/www.conf
​# 修改 PHP-FPM 配置sed -i "s|^listen = 127.0.0.1:9000|listen = 127.0.0.1:7300|" "/data/app/php7.3/etc/php-fpm.d/www.conf"sed -i "s|^;listen.allowed_clients|listen.allowed_clients|" "/data/app/php7.3/etc/php-fpm.d/www.conf"sed -i "s|^;pid = run/php-fpm.pid|pid = run/php-fpm.pid|" "/data/app/php7.3/etc/php-fpm.conf"# 修改php进程数sed -i "s/pm\.max\_children \= 5/pm\.max\_children \= 20/g" "/data/app/php7.3/etc/php-fpm.d/www.conf"# 修改 request_terminate_timeout = 30 (请求终止超时)sed -i "s/\;request\_terminate\_timeout \= 0/request\_terminate\_timeout \= 30/g" "/data/app/php7.3/etc/php-fpm.d/www.conf"
​
​# 修改 PHP.ini 配置sed -i "s|^;date.timezone =|date.timezone = Asia/Shanghai|" "/data/app/php7.3/etc/php.ini"sed -i "s|^memory_limit = 128M|memory_limit = 256M|" "/data/app/php7.3/etc/php.ini"sed -i "s|^;cgi.fix_pathinfo=1|cgi.fix_pathinfo=0|" "/data/app/php7.3/etc/php.ini"sed -i "s|^upload_max_filesize = 2M|upload_max_filesize = 32M|" "/data/app/php7.3/etc/php.ini"sed -i "s|^post_max_size = 8M|post_max_size = 32M|" "/data/app/php7.3/etc/php.ini"

7.安装php扩展

安装phpredis扩展

cd /data/software/php7.3wget http://js.funet8.com/rocky-linux/php/phpredis.tar.gztar -zxvf phpredis.tar.gzcd phpredis/data/app/php7.3/bin/phpize./configure --with-php-config=/data/app/php7.3/bin/php-configmake && make installecho "extension=/data/app/php7.3/lib/php/extensions/no-debug-non-zts-20180731/redis.so" >> /data/app/php7.3/etc/php.ini /data/app/php7.3/bin/php -m|grep redis

安装pcntl扩展

cd /data/software/php7.3/php-7.3.7/ext/pcntl/data/app/php7.3/bin/phpize./configure --with-php-config=/data/app/php7.3/bin/php-configmake && make installecho "extension=/data/app/php7.3/lib/php/extensions/no-debug-non-zts-20180731/pcntl.so" >> /data/app/php7.3/etc/php.ini /data/app/php7.3/bin/php -m|grep pcntl

安装 rabbitmq

cd /data/software/php7.3# wget -c https://github.com/alanxz/rabbitmq-c/releases/download/v0.8.0/rabbitmq-c-0.8.0.tar.gzwget -c http://js.funet8.com/centos_software/rabbitmq-php/rabbitmq-c-0.8.0.tar.gztar zxf rabbitmq-c-0.8.0.tar.gzcd rabbitmq-c-0.8.0./configure --prefix=/usr/local/rabbitmq-c-0.8.0-bmake && make install

安装 amqp-1.11.0 扩展

cd /data/software/php7.3#wget -c http://pecl.php.net/get/amqp-1.11.0.tgzwget -c http://js.funet8.com/centos_software/rabbitmq-php/amqp-1.11.0.tgztar -zxvf amqp-1.11.0.tgz cd  amqp-1.11.0/data/app/php7.3/bin/phpize./configure --with-php-config=/data/app/php7.3/bin/php-config --with-amqp --with-librabbitmq-dir=/usr/local/rabbitmq-c-0.8.0-bmake && make installecho '[amqp]'>> /data/app/php7.3/etc/php.ini echo "extension=/data/app/php7.3/lib/php/extensions/no-debug-non-zts-20180731/amqp.so" >> /data/app/php7.3/etc/php.ini /data/app/php7.3/bin/php -m|grep amqp

安装 swoole 扩展

dnf install -y c-ares-develcd /data/software/php7.3wget http://js.funet8.com/centos_software/swoole-src-4.8.13.tar.gztar -zxvf swoole-src-4.8.13.tar.gzcd swoole-src-4.8.13/data/app/php7.3/bin/phpize./configure --enable-openssl --enable-sockets --enable-mysqlnd --enable-swoole-curl --enable-cares  --with-php-config=/data/app/php7.3/bin/php-configmake && make installecho "extension=/data/app/php7.3/lib/php/extensions/no-debug-non-zts-20180731/swoole.so" >> /data/app/php7.3/etc/php.ini echo 'swoole.use_shortname = off' >> /data/app/php7.3/etc/php.ini /data/app/php7.3/bin/php -m|grep swoole

8.创建开机启动脚本

cat > /etc/systemd/system/php7.3-fpm.service << EOF
[Unit]
Description=PHP 7.3 FastCGI Process Manager
After=network.target
​
[Service]
Type=simple
PIDFile=/data/app/php7.3/var/run/php-fpm.pid
ExecStart=/data/app/php7.3/sbin/php-fpm --nodaemonize --fpm-config /data/app/php7.3/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 \$MAINPID
ExecStop=/bin/kill -SIGINT \$MAINPID
PrivateTmp=true
RestartSec=5s
Restart=on-failure
​
[Install]
WantedBy=multi-user.target
EOF
​
systemctl daemon-reload
systemctl enable php7.3-fpm.service
systemctl start php7.3-fpm.service
echo "systemctl restart php7.3-fpm.service" > /root/restart_php7.3.sh

9.配置防火墙

firewall-cmd --zone=public --add-port=7300/tcp --permanentfirewall-cmd --reloadfirewall-cmd --zone=public --list-ports

至此Rocky Linux 9 源码包安装php7完成。

最后

希望本篇教程对你有所帮助。如果你在操作过程中遇到任何问题,欢迎在评论区留言交流。我是星哥,我们下期见!

写文不易,如果你都看到了这里,请点个赞和在看,分享给更多的朋友;也别忘了关注星哥玩云!这里有满满的干货分享,还有轻松有趣的技术交流~点个赞、分享给身边的小伙伴,一起成长,一起玩转技术世界吧! 😊

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/89357.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/89357.shtml
英文地址,请注明出处:http://en.pswp.cn/web/89357.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp+vue3+鸿蒙系统的开发

前言&#xff1a; uniappvue3鸿蒙系统的开发。 实现效果&#xff1a; 鸿蒙pad端真机测试效果-下面是正常的日志效果 实现步骤&#xff1a; 1、安装鸿蒙的开发工具&#xff0c;点击安装&#xff0c;注意版本不能太旧了 deveco-studio 2、下载下来是个压缩包&#xff0c;解压后…

【C++类和对象解密】面向对象编程的核心概念(下)

之前我们了解到构造函数是在对象实例化之时对对象完成初始化工作的一个函数。在我们不写时&#xff0c;编译器会自动生成构造函数。构造函数有一些特点&#xff0c;比如&#xff0c;他对内置类型不做处理&#xff0c;对自定义类型的成员会去调用其自身的构造。我们上篇文章还提…

Flutter基础(前端教程①②-序列帧动画)

&#x1f9e0; 核心思路总结​​彻底绕过 Image组件重建带来的性能瓶颈​​&#xff1a;不再让 setState重建包含 Image的 Widget 树&#xff08;这是开销大、可能导致闪烁的根源&#xff09;&#xff0c;改为使用底层画布 (Canvas) 直接绘制预先处理好的图像帧数据。好的&…

Qt添加dmp文件生成及pdb文件

1.Pdb文件生成 下图先通过构建生成Pdb文件&#xff0c;然后运行程序&#xff0c;通过提前准备的崩溃按钮使得程序崩溃&#xff0c;生成“dump文件”的演示。 # #添加dmp文件生成及pdb文件生成DEFINES QT_MESSAGELOGCONTEXT DEFINES QT_DEPRECATED_WARNINGS# # 添加DUMP文件…

opencv、torch、torchvision、tensorflow的区别

一、框架定位与核心差异PyTorch动态计算图&#xff1a;实时构建计算图支持Python原生控制流&#xff08;如循环/条件&#xff09;&#xff0c;调试便捷。学术主导&#xff1a;2025年工业部署份额24%&#xff0c;适合快速原型开发&#xff08;如无人机自动驾驶、情绪识别&#x…

离散与组合数学 杂记

生成函数 概念 又称母函数把一个无穷数列 {an}\{a_n\}{an​}&#xff08;默认从 000 项起&#xff09;表示成 G(x)∑i≥0aixiG(x)\displaystyle\sum_{i\ge0} a_ix^iG(x)i≥0∑​ai​xi 的函数形式。例如&#xff1a; ai2ia_i2^iai​2i&#xff1a;G(x)∑i≥02ixiG(x)\display…

学习OpenCV---显示图片

学习OpenCV—显示图片 最近在学习OpenCV入门&#xff0c;于是记录一下自己的学习过程。 一、配置环境 第一步 从官方网站中下载OpenCV开源库。官方下载网站 打开官网后&#xff0c;能看到有很多的版本。我个人下载的是4.11.0版本。点击图中的下载 下载完成后&#xff0c;解…

第一次接触自动化监测,需要付费厂家安装服务吗?比人工测量主要区别是啥?

人工检测是依靠目测检查或借助于便携式仪器测量得到的信息&#xff0c;但是随着整个行业的发展&#xff0c;传统的人工检测方法已经不能满足检测需求&#xff0c;从人工检测到自动化监测已是必然趋势。 a. 从检测方式看 人工检测需要耗费大量的精力&#xff0c;从摆放检测工具到…

VMware Workstation Pro 17下载安装

注册账号 进入下载地址&#xff1a;Free Downloads - Support Portal - Broadcom support portal - https://support.broadcom.com/ 会让注册账号&#xff0c;注册一个就行 在右上角 下载 地址&#xff1a;Free Downloads - Support Portal - Broadcom support portal - ht…

SpringBoot 3.x集成阿里云OSS:文件上传 断点续传 权限控制

SpringBoot 3.x集成阿里云OSS&#xff1a;文件上传&#xff0f;断点续传&#xff0f;权限控制Spring Boot 3.x 集成阿里云 OSS 终极指南一、环境准备与依赖配置1. 添加阿里云 OSS SDK 依赖2. 配置 OSS 连接参数二、基础文件上传服务1. OSS 客户端配置2. 文件上传服务三、断点续…

牛客周赛 Round 100

A小红的双排列没什么好说的 直接 1 1 2 2 3 3 4 4……#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<iostream> #include<bits/stdc.h> #define ll long long using namespace std; int n; int main(){ios::sync_with_stdio(false); …

【Dv3Admin】菜单管理集成阿里巴巴自定义矢量图标库

图标选择是后台管理系统中高频功能。相比用 Element UI、Ant Design 等自带的 icon 集&#xff0c;阿里巴巴 iconfont.cn 支持上传和管理自定义图标&#xff0c;并生成矢量字体&#xff0c;便于统一维护和扩展。 本文目标是支持自定义 iconfont 图标的展示和选择&#xff0c;并…

NO.7数据结构树|线索二叉树|树森林二叉树转化|树森林遍历|并查集|二叉排序树|平衡二叉树|哈夫曼树|哈夫曼编码

线索二叉树 线索二叉树的基本概念 为了解决无法直接找到该结点在某种遍历序列中的前驱和后继结点的问题&#xff0c; 出现了线索二叉树。 一个二叉树通过如下的方法“穿起来” &#xff1a; 所有原本为空的右(孩子)指针改为指向该节点在某种遍历序列中的后继&#xff0c; 所有原…

R语言基础| 基本图形绘制(条形图、堆积图、分组图、填充条形图、均值条形图)

目录 一、前言 二、条形图 1. 简单的条形图 2.堆积、分组和填充条形图(柱状图) &#xff08;1&#xff09;堆积图&#xff0c;对Improved进行堆积&#xff0c;注意position“stack” &#xff08;2&#xff09;分组图&#xff0c;对Improved进行分组&#xff0c;注意posit…

SegNet:一种用于图像分割的深度卷积编码器解码器架构

教程/讲解视频点击文末名片1、什么是语义分割&#xff0c;什么是FCN 我们提出了一种新颖且实用的深度全卷积神经网络架构&#xff0c;用于语义像素级分割&#xff0c;命名为SegNet。 语义分割是指为图像中的每个像素分配一个类别标签&#xff08;如道路、天空、汽车&#xff09…

PyTorch 数据加载全攻略:从自定义数据集到模型训练

目录 一、为什么需要数据加载器&#xff1f; 二、自定义 Dataset 类 1. 核心方法解析 2. 代码实现 三、快速上手&#xff1a;TensorDataset 1. 代码示例 2. 适用场景 四、DataLoader&#xff1a;批量加载数据的利器 1. 核心参数说明 2. 代码示例 五、实战&#xff1…

Python--plist文件的读取

Python练习&#xff1a;读取Apple Plist文件 Plist文件简介 ​​定义​​&#xff1a;Apple公司创建的基于XML结构的文件格式​​特点​​&#xff1a;采用XML语法组织数据&#xff0c;可存储键值对、数组等结构化信息文件扩展名​​&#xff1a;.plist应用场景: ​​iOS系统:​…

JAVA几个注解记录

在Java中&#xff0c;Data、AllArgsConstructor和NoArgsConstructor是Lombok库提供的注解&#xff0c;用于自动生成Java类中的样板代码&#xff08;如getter、setter、构造函数等&#xff09;&#xff0c;从而减少冗余代码&#xff0c;提高开发效率。以下是它们的详细功能和使用…

js对象简介、内置对象

对象、内置对象 jarringslee 对象 对象&#xff08;object&#xff09;是js的一种引用数据类型&#xff0c;是一种无序的数据集合“ul”&#xff08;类比于数组&#xff0c;有序的数据集合“ol”&#xff09;。 基本上等于结构体。 对象的声明 //基本方法 let 对象名 {声…

【工程篇】07:如何打包conda环境并拷贝到另一台服务器上

这是一份以名为 qwen2.5-vl 的 Conda 环境为例的详细操作手册&#xff0c;指导您如何将其打包并迁移至另一台服务器。操作手册&#xff1a;迁移 Conda 环境 qwen2.5-vl 至新服务器 本文档将提供两种有效的方法来迁移您的 qwen2.5-vl 环境。请根据您的具体需求和服务器条件选择最…