Rocky Linux 9 源码包安装php7

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. 环境纯净: 避免了包管理器可能带来的不必要的依赖包,保持系统环境的精简。

快速安装

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 all
    dnf makecache
    dnf groupinstall "Development Tools" -y
    dnf 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-devel
    dnf install -y perl perl-core perl-FindBin
    dnf install -y c-ares-devel
    dnf install -y compat-openssl11
    dnf install -y freetype-devel
    dnf install -y gmp-devel
    
    wget http://js.funet8.com/rocky-linux/php/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
    wget http://js.funet8.com/rocky-linux/php/libzip-devel-1.7.3-8.el9.x86_64.rpm
    dnf -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/src
    wget http://js.funet8.com/rocky-linux/php/openssl-1.1.1u.tar.gz
    tar -zxf openssl-1.1.1u.tar.gz
    cd openssl-1.1.1u
    ./config --prefix=/usr/local/openssl-1.1.1 --openssldir=/usr/local/openssl-1.1.1 shared zlib
    make -j$(nproc)
    make install
    export 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.sh
    chmod +x /etc/profile.d/openssl1.1.sh
    source /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.gz
        wget http://js.funet8.com/rocky-linux/php/php-7.3.7.tar.gz
        tar -zxf php-7.3.7.tar.gz
        cd php-7.3.7
        export PKG_CONFIG_PATH=/usr/local/openssl-1.1.1/lib/pkgconfig
        export 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.3
    echo "export PATH=$PATH:/data/app/php7.3/bin">>/etc/profile 
    source /etc/profile
    php7.3 -v

6.修改php7.3配置文件

复制代码
cp /data/software/php7.3/php-7.3.7/php.ini-production /data/app/php7.3/etc/php.ini
    cp /data/software/php7.3/php-7.3.7/sapi/fpm/php-fpm.conf /data/app/php7.3/etc/php-fpm.conf
    cp /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.3
    wget http://js.funet8.com/rocky-linux/php/phpredis.tar.gz
    tar -zxvf phpredis.tar.gz
    cd phpredis
    /data/app/php7.3/bin/phpize
    ./configure --with-php-config=/data/app/php7.3/bin/php-config
    make && make install
    echo "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-config
    make && make install
    echo "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.gz
    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-b
    make && make install

安装 amqp-1.11.0 扩展

复制代码
cd /data/software/php7.3
    #wget -c http://pecl.php.net/get/amqp-1.11.0.tgz
    wget -c http://js.funet8.com/centos_software/rabbitmq-php/amqp-1.11.0.tgz
    tar -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-b
    make && make install
    echo '[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-devel
    cd /data/software/php7.3
    wget http://js.funet8.com/centos_software/swoole-src-4.8.13.tar.gz
    tar -zxvf swoole-src-4.8.13.tar.gz
    cd 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-config
    make && make install
    echo "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 --permanent
    firewall-cmd --reload
    firewall-cmd --zone=public --list-ports

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

最后

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

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

相关推荐
2201_7534369522 分钟前
ubuntu基础搭建
linux·运维·ubuntu
莫到空离1 小时前
LVS三种模式实战
linux·服务器·网络
Azxcc02 小时前
Linux内存系统简介
linux·性能优化·内存子系统
CIAS3 小时前
clonezilla 导出自动化恢复iso
linux·windows·clonezilla
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ3 小时前
linux端口监听命令
linux·服务器
iHero4 小时前
【Nextcloud】在 Ubuntu 22.04.3 LTS 上的 Nextcloud Hub 10 (31.0.2) 后台任务cron 的优化
android·linux·ubuntu·nextcloud
二向箔reverse4 小时前
Linux 文件操作命令大全:从入门到精通的实用指南
java·linux·服务器
witton4 小时前
x86版Ubuntu的容器中运行ARM版Ubuntu
linux·arm开发·ubuntu·docker·容器·arm·qemu
星哥说事4 小时前
Rocky Linux 9 安装FTP服务器搭建实战:一文学会,高效文件传输!
linux
落魄程序员在线炒饼5 小时前
CentOS在线安装docker教程
linux·docker·centos