Rocky Linux 9 源码包安装php8

Rocky Linux 9 源码包安装php8

大家好,我是星哥!今天咱们不聊yum一键安装的“快餐式”部署,来点儿硬核的——源码编译安装PHP 8.3。为什么要折腾源码?因为它能让你深度定制PHP功能、启用最新特性,还能避开系统默认源的版本限制。

话不多说,跟着星哥一步步把PHP 8.3.3 在Rocky Linux 9上从0到1跑起来,顺便把性能榨干!

img

快速安装

Rocky Linux 9系统中源码包安装php8.3.3 并且使用phpfpm

安装目录为:/data/app/php8.3

用户为 www

端口自定义为 8300

需要PHP安装扩展

zip

openssl

libmemcached

phpredis

pcntl

amqp

rabbitmq

swoole

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

1.新建用户和用户组

groupadd www
useradd -g www www

2.安装EPEL仓库

dnf install -y epel-release

3.安装依赖

# 清理缓存并更新软件包列表
dnf clean all
dnf makecache
dnf install -y  wget libxml2-devel sqlite-devel bzip2-devel libcurl-devel libffi-devel libpng-devel libwebp-devel libjpeg-devel oniguruma libzip
dnf install -y gcc make autoconf automake libtool bison gcc  libicu-devel openssl-devel
dnf install -y gcc gcc-c++ make autoconf automake libtool bison re2c  openssl-devel libxml2-devel libpng-devel  libjpeg-devel  libicu-devel curl-devel   sqlite-devel libuuid-devel systemd-devel libxslt-devel readline-devel
​
dnf groupinstall "Development Tools" -y

4.安装oniguruma-devel和libzip-devel

wget https://dl.rockylinux.org/pub/rocky/9/devel/x86_64/os/Packages/o/oniguruma-devel-6.9.6-1.el9.6.x86_64.rpm
dnf -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.rpm
dnf -y install libzip-devel-1.7.3-8.el9.x86_64.rpm

5.下载php8解压安装

mkdir -p /data/app/php8.3 /data/software/php8.3
mkdir -p /data/software && cd /data/software
cd /data/softwarewget https://www.php.net/distributions/php-8.3.3.tar.gztar -zxf php-8.3.3.tar.gzcd /data/software/php-8.3.3./configure \--with-fpm-user=www \--with-fpm-group=www \--prefix=/data/app/php8.3 \--with-config-file-path=/data/app/php8.3/etc \--with-openssl \--with-zlib \--with-bz2 \--with-curl \--enable-bcmath \--enable-gd \--with-webp \--with-jpeg \--with-mhash \--enable-mbstring \--with-imap-ssl \--with-mysqli \--enable-exif \--with-ffi \--with-zip \--enable-sockets \--with-pcre-jit \--enable-fpm \--with-pdo-mysql \--enable-pcntl
​make && make install

6.安装phpredis扩展

cd /data/software/php8.3wget  http://js.funet8.com/centos_software/php8/phpredis-6.0.2.tar.gztar xzf phpredis-6.0.2.tar.gzcd /data/software/php8.3/phpredis-6.0.2/data/app/php8.3/bin/phpize./configure --with-php-config=/data/app/php8.3/bin/php-configmake && make install

7.安装swoole扩展

cd /data/software/php8.3wget  http://js.funet8.com/centos_software/php8/swoole-src-5.1.2.tar.gztar -zxf swoole-src-5.1.2.tar.gzcd /data/software/php8.3/swoole-src-5.1.2/data/app/php8.3/bin/phpize./configure --with-php-config=/data/app/php8.3/bin/php-configmake && make install

8.安装rabbitmq扩展

cd /data/software/php8.3
wget -c http://js.funet8.com/centos_software/rabbitmq-php/rabbitmq-c-0.8.0.tar.gz
tar zxf rabbitmq-c-0.8.0.tar.gzcd rabbitmq-c-0.8.0./configure --prefix=/usr/local/rabbitmq-c-0.8.0make && make install

9.安装amqp扩展

cd /data/software/php8.3wget  http://js.funet8.com/centos_software/php8/amqp-2.1.2.tgztar -zxf amqp-2.1.2.tgzcd /data/software/php8.3/amqp-2.1.2/data/app/php8.3/bin/phpize./configure --with-php-config=/data/app/php8.3/bin/php-config --with-amqp --with-librabbitmq-dir=/usr/local/rabbitmq-c-0.8.0make && make install

10.配置php配置

cp /data/software/php-8.3.3/php.ini-production /data/app/php8.3/etc/php.inicp /data/software/php-8.3.3/sapi/fpm/php-fpm.conf /data/app/php8.3/etc/php-fpm.confcp /data/app/php8.3/etc/php-fpm.d/www.conf.default /data/app/php8.3/etc/php-fpm.d/www.conf
​# 修改 PHP-FPM 配置sed -i "s|^listen = 127.0.0.1:9000|listen = 127.0.0.1:8300|" "/data/app/php8.3/etc/php-fpm.d/www.conf"sed -i "s|^;listen.allowed_clients|listen.allowed_clients|" "/data/app/php8.3/etc/php-fpm.d/www.conf"sed -i "s|^;pid = run/php-fpm.pid|pid = run/php-fpm.pid|" "/data/app/php8.3/etc/php-fpm.conf"# 修改php进程数sed -i "s/pm\.max\_children \= 5/pm\.max\_children \= 20/g" /data/app/php8.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/php8.3/etc/php-fpm.d/www.conf
​
​# 修改 PHP.ini 配置sed -i "s|^;date.timezone =|date.timezone = Asia/Shanghai|" "/data/app/php8.3/etc/php.ini"sed -i "s|^memory_limit = 128M|memory_limit = 256M|" "/data/app/php8.3/etc/php.ini"sed -i "s|^;cgi.fix_pathinfo=1|cgi.fix_pathinfo=0|" "/data/app/php8.3/etc/php.ini"sed -i "s|^upload_max_filesize = 2M|upload_max_filesize = 32M|" "/data/app/php8.3/etc/php.ini"sed -i "s|^post_max_size = 8M|post_max_size = 32M|" "/data/app/php8.3/etc/php.ini"#sed -i "s|^max_execution_time = 30|max_execution_time = 300|" "/data/app/php8.3/etc/php.ini"
​
​#添加扩展echo 'extension=redis.so'>> /data/app/php8.3/etc/php.ini#echo 'extension=zip.so'>> /data/app/php8.3/etc/php.iniecho 'extension=swoole.so'>> /data/app/php8.3/etc/php.iniecho 'extension=amqp.so'>> /data/app/php8.3/etc/php.ini# 显示扩展/data/app/php8.3/bin/php -m|grep redis/data/app/php8.3/bin/php -m|grep zip/data/app/php8.3/bin/php -m|grep swoole/data/app/php8.3/bin/php -m|grep amqp

11.配置环境变量

cp -a /data/app/php8.3/bin/php /data/app/php8.3/bin/php8.3echo "export PATH=$PATH:/data/app/php8.3/bin">>/etc/profilesource /etc/profilephp8.3 -v

12.开机启动脚本配置

cat > /etc/systemd/system/php8.3-fpm.service << EOF
[Unit]
Description=PHP 8.3 FastCGI Process Manager
After=network.target
​
[Service]
Type=simple
PIDFile=/data/app/php8.3/var/run/php-fpm.pid
ExecStart=/data/app/php8.3/sbin/php-fpm --nodaemonize --fpm-config /data/app/php8.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 php8.3-fpm.service
systemctl start php8.3-fpm.service

13.配置防火墙

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

最后

折腾了这么久,可能有同学会问:“yum install php不香吗?”星哥想说,源码编译的“爽”在于“掌控感”——你可以精确控制PHP的每一个功能,启用最新特性,甚至针对服务器硬件优化编译参数。当然,代价是需要手动处理依赖和升级,但对于追求极致性能和定制化的场景(如生产环境、高性能API服务)

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

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

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

相关文章

Django母婴商城项目实践(四)

4、路由规划与设计 1、概述 介绍 路由称为 URL(Uniform Resource Locator,统一资源定位符),也称为 URLconf,对互联网上得到的资源位置和访问方式的一种简洁表示,是互联网上标准梓源的地址。互联网上的每个文件都有一个唯一的路由,用于指出网站文件的路由位置,也可以理…

论文阅读:arxiv 2025 A Survey of Large Language Model Agents for Question Answering

https://arxiv.org/pdf/2503.19213 https://www.doubao.com/chat/12038636966213122 A Survey of Large Language Model Agents for Question Answering 文章目录速览论文翻译面向问答的大型语言模型代理综述摘要一、引言速览 这篇文档主要是对基于大型语言模型&#xff08;…

ONNX 是什么

ONNX 是什么&#xff1f; ONNX&#xff0c;全称 Open Neural Network Exchange&#xff0c;是微软和 Facebook&#xff08;现在的 Meta&#xff09;联合发起的一个开放的神经网络模型交换格式。简单理解&#xff1a;ONNX 是一个通用的「AI 模型存档格式」。用 PyTorch、TensorF…

【Python3】掌握DRF核心装饰器:提升API开发效率

在 Django REST Framework (DRF) 中&#xff0c;装饰器&#xff08;Decorators&#xff09;通常用于视图函数或类视图&#xff0c;以控制访问权限、请求方法、认证等行为。以下是 DRF 中常用的装饰器及其功能说明&#xff1a; 1. api_view 用途: 用于基于函数的视图&#xff0c…

Datawhale AI 夏令营第一期(机器学习方向)Task2 笔记:用户新增预测挑战赛 —— 从业务理解到技术实现

Datawhale AI夏令营第一期&#xff08;机器学习方向&#xff09;Task2笔记&#xff1a;用户新增预测挑战赛——从业务理解到技术实现 一、任务核心&#xff1a;业务与技术的“翻译” 本次Task聚焦“用户新增预测挑战赛”的核心逻辑&#xff0c;核心目标是锻炼“将业务问题转化为…

【人工智能】华为昇腾NPU-MindIE镜像制作

本文通过不使用官方镜像,自己在910b 进行华为mindie的镜像制作,可离线安装部署。 硬件:cann 8.0 1. 部署参考文档: 安装依赖-安装开发环境-MindIE安装指南-MindIE1.0.0开发文档-昇腾社区 2. 参数说明文档:https://www.hiascend.com/document/detail/zh/mindie/100/min…

关于我用AI编写了一个聊天机器人……(番外1)

极大地精简了1.3.6版本的逻辑。 不会作为正式版发布。 未填充数据。核心结构代码包含两个主要部分&#xff1a;数据结构&#xff1a;使用map<string, string>存储问答对&#xff0c;其中键是问题&#xff0c;值是答案主程序流程&#xff1a;初始化预定义的问答对进入无限…

全球钠离子电池市场研究,市场占有率及市场规模

钠离子电池是一种新兴的储能技术&#xff0c;利用钠离子&#xff08;Na⁺&#xff09;代替锂离子作为电荷载体&#xff0c;为锂离子电池提供了一种经济高效且可持续的替代品。它们的工作原理类似&#xff0c;在充电和放电循环过程中&#xff0c;钠离子在阳极和阴极之间移动。关…

SwiftUI 全面介绍与使用指南

目录一、SwiftUI 核心优势二、基础组件与布局2.1、基本视图组件2.2、布局系统2.3、列表与导航三、状态管理与数据流3.1、状态管理基础3.2、数据绑定与共享四、高级功能与技巧4.1、动画效果4.2、绘图与自定义形状4.3、网络请求与异步数据五、SwiftUI 最佳实践六、SwiftUI 开发环…

ADC采集、缓存

FPGA学习笔记_李敏儿oc的博客-CSDN博客 TLV5618.v&#xff1a;实现DAC数模转换&#xff0c;产生模拟信号&#xff0c;输出指定电压值 时序图 FPGA学习笔记&#xff1a;数据采集传输系统设计&#xff08;二&#xff09;&#xff1a;TLV5618型DAC驱动-CSDN博客 ADC128S052.v&…

(C++)STL:stack、queue简单使用解析

stack 栈 简介 stack 栈——容器适配器 container adapter 与前面学的容器vector、list的底层实现不同&#xff0c;stack功能的实现是要借助其他容器的功能的&#xff0c;所以看stack的第二个模板参数是容器。 最大特点&#xff1a;LIFO&#xff1a;Last In, First Out&#xf…

在Adobe Substance 3D Painter中,已经有基础图层,如何新建一个图层A,clone基础图层的纹理和内容到A图层

在Adobe Substance 3D Painter中&#xff0c;已经有基础图层&#xff0c;如何新建一个图层A&#xff0c;clone基础图层的纹理和内容到A图层 在 Substance 3D Painter 中克隆底层纹理到新图层的最快做法 操作步骤 添加空白 Paint Layer 在 Layer Stack 顶部点击 → Paint La…

视频编码中熵编码之基于上下文的变长编码(Huffman霍夫曼编码和指数哥伦布)

视频编码中熵编码之基于上下文的变长编码&#xff08;Huffman霍夫曼编码和指数哥伦布&#xff09; 视频编码中熵编码之基于上下文的变长编码Huffman霍夫曼编码和指数哥伦布&#xff09;视频编码中熵编码之基于上下文的变长编码&#xff08;Huffman霍夫曼编码和指数哥伦布&#…

游戏玩法的专利博弈

首席数据官高鹏律师数字经济团队创作 AI辅助一、数字战场的护城河&#xff1a;游戏玩法的专利价值觉醒在数字经济的浪潮中&#xff0c;游戏行业正以每年超15%的增速重塑全球娱乐版图。2024年中国游戏市场规模突破3257亿元&#xff0c;用户规模达6.74亿&#xff08;数据来源&…

小架构step系列11:单元测试引入

1 概述 在还没有写什么代码之前&#xff0c;就引入单元测试&#xff0c;是要强调单元测试的重要性。当一套代码的生命周期比较长的时候&#xff0c;单元测试更加重要。生命周期长的代码&#xff0c;不管是产品人员还是开发人员&#xff0c;可能都会换了一批又一批&#xff0c;…

Linux 文件共享之 HGFS 共享配置全解析

一、前言在使用 VMware 虚拟机搭建 Linux&#xff08;以 Ubuntu 为例&#xff09;环境时&#xff0c;常常需要实现主机与虚拟机之间的文件共享&#xff0c;HGFS&#xff08;VMware Host-Guest File System&#xff09;就是一种常用的文件共享方式。通过它&#xff0c;我们可以方…

模块化设计赋能:定制组装锂电池设备的柔性生产解决方案

在锂电池行业快速迭代的背景下&#xff0c;定制化需求与规模化生产之间的矛盾日益凸显。传统锂电池组装设备采用固定式架构&#xff0c;功能模块高度耦合&#xff0c;导致设备换型周期长、兼容性差&#xff0c;难以适应电芯规格频繁变化、工艺路线持续升级的市场需求。模块化设…

Kubernetes 架构原理与集群环境部署

一&#xff1a;为什么需要 Kubernetes在业务开始进行容器化时&#xff0c;前期需要容器化的项目可能并不多&#xff0c;涉及的容器也并不多&#xff0c;此时基于 Docker 容器直接部署至宿主机也能实现基本的需求。但是随着项目越来越多&#xff0c;管理的容器也会越来越多&…

JavaScript中关于环境对象的拓展

1.环境对象的定义环境对象指的是函数内的特殊变量this&#xff0c;this指向函数的调用者它代表当前函数的运行环境在平常我们判断this经常用口诀谁调用它&#xff0c;它就指向谁&#xff0c;以下是几种常见情况1. 在全局作用域中&#xff0c;this指向window2.在函数中&#xff…

202507中央城市工作会议

国家终于要给城市"升级系统"了&#xff01;未来城市不再拼命盖新楼&#xff0c;而是让现有城区更安全、舒适、智能&#xff0c;且每个城市都要找到自己的特色发展路径 2025年7月北京“中央城市工作会议”。领导人聚在一起&#xff0c;讨论“怎么把中国城市搞得更好”…