Rocky Linux 9 源码包安装php8(rocky linux怎么样)
mhr18 2025-07-21 16:12 5 浏览 0 评论
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/software
wget https://www.php.net/distributions/php-8.3.3.tar.gz
tar -zxf php-8.3.3.tar.gz
cd /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.3
wget http://js.funet8.com/centos_software/php8/phpredis-6.0.2.tar.gz
tar xzf phpredis-6.0.2.tar.gz
cd /data/software/php8.3/phpredis-6.0.2
/data/app/php8.3/bin/phpize
./configure --with-php-config=/data/app/php8.3/bin/php-config
make && make install
7.安装swoole扩展
cd /data/software/php8.3
wget http://js.funet8.com/centos_software/php8/swoole-src-5.1.2.tar.gz
tar -zxf swoole-src-5.1.2.tar.gz
cd /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-config
make && 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.gz
cd rabbitmq-c-0.8.0
./configure --prefix=/usr/local/rabbitmq-c-0.8.0
make && make install
9.安装amqp扩展
cd /data/software/php8.3
wget http://js.funet8.com/centos_software/php8/amqp-2.1.2.tgz
tar -zxf amqp-2.1.2.tgz
cd /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.0
make && make install
10.配置php配置
cp /data/software/php-8.3.3/php.ini-production /data/app/php8.3/etc/php.ini
cp /data/software/php-8.3.3/sapi/fpm/php-fpm.conf /data/app/php8.3/etc/php-fpm.conf
cp /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.ini
echo 'extension=swoole.so'>> /data/app/php8.3/etc/php.ini
echo '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.3
echo "export PATH=$PATH:/data/app/php8.3/bin">>/etc/profile
source /etc/profile
php8.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 --permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-ports
最后
折腾了这么久,可能有同学会问:“yum install php不香吗?”星哥想说,源码编译的“爽”在于“掌控感”——你可以精确控制PHP的每一个功能,启用最新特性,甚至针对服务器硬件优化编译参数。当然,代价是需要手动处理依赖和升级,但对于追求极致性能和定制化的场景(如生产环境、高性能API服务)
写文不易,如果你都看到了这里,请点个赞和在看,分享给更多的朋友;也别忘了关注星哥玩云!这里有满满的干货分享,还有轻松有趣的技术交流~点个赞、分享给身边的小伙伴,一起成长,一起玩转技术世界吧!
相关推荐
- 如何通过 Redis 日志排查连接超时问题
-
Redis是一种高性能的内存数据存储服务,但在高并发或误配置情况下,可能会出现连接超时问题。借助Redis日志,可以快速定位并解决连接超时的根本原因。以下是具体的排查和解决步骤:1.什么是R...
- 给你1亿的Redis key,如何高效统计?
-
前言有些小伙伴在工作中,可能遇到过这样的场景:老板突然要求统计Redis中所有key的数量,你随手执行了KEYS*命令,下一秒监控告警疯狂闪烁——整个Redis集群彻底卡死,线上服务大面积瘫痪。今天...
- Redis分布式锁的安全性分析与实践指南
-
一、Redis分布式锁的核心原理Redis分布式锁通过SETNX(SetifNotExists)和EXPIRE(Expire)指令实现原子性操作,结合UUID生成唯一标识符,确保锁的互斥性和安全...
- 高可用Redis分布式锁:秒杀系统中的锁战
-
引言在分布式系统中,“程序猿的终极武器是并发控制”。当多个服务实例同时访问共享资源时,如何避免数据不一致和重复操作?答案是分布式锁。Redis凭借其高性能和原子性操作,成为实现分布式锁的首选方案。...
- Redis分布式锁(redis分布式锁解决超卖)
-
场景描述简单模拟一个高并发库存扣减场景,商品库存加载到Redis缓存,如:127.0.0.1:6379>setproduct:stock:101200无锁状态操作从缓存中获取对应商品的库存...
- Redis 分布式锁和 ZooKeeper分布式锁
-
Redis分布式锁和ZooKeeper(简称zk)分布式锁都是用来解决在分布式系统中多个节点之间竞争资源的问题。它们各自有不同的特点和适用场景。Redis分布式锁Redis实现分布式锁主要是...
- Redis vs ZooKeeper锁:高并发下的生死对决,谁才是最终赢家?
-
在分布式系统中,锁是控制资源访问的重要机制。Redis和ZooKeeper作为两种主流的分布式锁实现方案,各有优劣。本文将从原理、性能、代码实现三个维度进行硬核对比,助你做出最佳技术选型。一、原理对比...
- 说说Redis的大key(redis key大小限制)
-
一句话总结Redis大key指存储超大值(如字符串过大、集合元素过多)的键。主要成因包括:1.设计不合理,未拆分数据结构;2.业务需求(如缓存整页数据);3.数据持续积累未清理;4.使用不当的集合类型...
- PHP Laravel框架底层机制(php框架的底层原理)
-
当然可以,Laravel是最受欢迎的PHP框架之一,以优雅的语法和丰富的生态而闻名。尽管开发体验非常“高端”,它的底层其实是由一系列结构清晰、职责分明的组件构成的。下面我从整体架构、核心流程、...
- PHP性能全面优化-值得收藏(php优化网站性能)
-
PHP项目卡顿频发,老技巧失灵?隐藏漏洞竟在代码循环里。上周公司服务器突然开始卡顿,测试发现用户请求响应时间翻倍。我们先按以前学的方法做了基准测试,用AB工具压测时发现2000并发就有5%错误,换成S...
- PHP+UniApp:低成本打造外卖系统横扫App+小程序+H5全平台
-
在餐饮行业数字化转型中,外卖系统开发常面临两大痛点:高昂的开发成本(需独立开发App、小程序、H5)和多端维护的复杂性。PHP+UniApp的组合通过技术复用与跨平台能力,为中小商家和开发者提供了“降...
- 从需求到上线:PHP+Uniapp校园圈子系统源码的架构设计与性能优化
-
一、需求分析与架构设计1.核心功能需求用户体系:支持手机号/微信登录、多角色权限(学生、教师、管理员)。圈子管理:支持创建/加入兴趣圈子(如学术、电竞)、标签分类、动态发布与审核。实时互动:点赞、评...
- PHP 8.0性能翻3倍?四年亲测:这些项目升了哭晕!
-
2020年那个感恩节,当PHP8.0带着“性能翻倍”的豪言横空出世时,无数程序员连夜备份代码准备升级。四年过去了,那些宣称“性能提升3倍”的项目,真的跑出火箭速度了吗?还记得当时铺天盖地的宣传吗?“...
- 我把 Mac mini 托管到机房了:一套打败云服务器的终极方案
-
本内容来源于@什么值得买APP,观点仅代表作者本人|作者:薯仔不爱吃薯仔我把我积灰的Macmini托管到机房了,有图有真相。虽然画质又渣又昏暗,但是!这就是实锤。作为开发者,谁不想拥有个自己的服...
- 从phpstudy到Docker:我用一个下午让开发效率翻倍的实战指南
-
一、为什么放弃phpstudy?上周三下午,我花了3小时将本地开发环境从phpstudy迁移到Docker,没想到第二天团队反馈:环境部署时间从2小时压缩到5分钟,跨设备协作bug减少70%。作为一个...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle位图索引 (74)
- oracle批量插入数据 (65)
- oracle事务隔离级别 (59)
- oracle 空为0 (51)
- oracle主从同步 (56)
- oracle 乐观锁 (53)
- redis 命令 (83)
- php redis (97)
- redis 存储 (67)
- redis 锁 (74)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)