Rocky Linux 9 源碼包安裝php8
大家好,我是星哥!今天咱們不聊yum一鍵安裝的“快餐式”部署,來點兒硬核的——源碼編譯安裝PHP 8.3。為什么要折騰源碼?因為它能讓你深度定制PHP功能、啟用最新特性,還能避開系統默認源的版本限制。
話不多說,跟著星哥一步步把PHP 8.3.3 在Rocky Linux 9上從0到1跑起來,順便把性能榨干!
![]()
快速安裝
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.sh1.新建用戶和用戶組groupadd www useradd -g www www2.安裝EPEL倉庫dnf install -y epel-release3.安裝依賴# 清理緩存并更新軟件包列表 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" -y4.安裝oniguruma-devel和libzip-develwget 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.rpm5.下載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 install6.安裝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 install7.安裝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 install8.安裝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 install9.安裝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 install10.配置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 amqp11.配置環境變量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 -v12.開機啟動腳本配置cat > /etc/systemd/system/php8.3-fpm.service << EOF [Unit] Description=PHP8.3FastCGI ProcessManager 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.service13.配置防火墻 firewall-cmd --zone=public --add-port=8300/tcp --permanent firewall-cmd --reload firewall-cmd --zone=public --list-ports最后折騰了這么久,可能有同學會問:“yum install php不香嗎?”星哥想說,源碼編譯的“爽”在于“掌控感”——你可以精確控制PHP的每一個功能,啟用最新特性,甚至針對服務器硬件優化編譯參數。當然,代價是需要手動處理依賴和升級,但對于追求極致性能和定制化的場景(如生產環境、高性能API服務)
寫文不易,如果你都看到了這里,請點個贊和在看,分享給更多的朋友;也別忘了關注星哥玩云!這里有滿滿的干貨分享,還有輕松有趣的技術交流~點個贊、分享給身邊的小伙伴,一起成長,一起玩轉技術世界吧!
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.