0

0

步骤详解Centos中编译安装php8与配置方法

藏色散人

藏色散人

发布时间:2023-02-03 14:59:05

|

7769人浏览过

|

来源于codeover

转载

本篇文章给大家带来了关于php的相关知识,其中主要介绍了在centos系统中是如何编译安装php,以及如何正确配置的,步骤很详细!感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。

步骤详解Centos中编译安装php8与配置方法

PHP(全称:PHP:Hypertext Preprocessor,即“PHP:超文本预处理器”)是一种开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入HTML中使用。PHP的语法借鉴吸收C语言、Java和Perl等流行计算机语言的特点,易于一般程序员学习。PHP的主要目标是允许网络开发人员快速编写动态页面。

准备工作

下载安装文件

保险起见使用 php 官网下载:https://www.php.net/downloads
使用官网下载速度较慢,但是安全性有保障,如对安全性没有要求也可百度搜索相关镜像,本文选择最新稳定版本 PHP 8.1.6

立即学习PHP免费学习笔记(深入)”;

wget https://www.php.net/distributions/php-8.1.6.tar.gz
tar -zxvf php-8.1.6.tar.gz
cd php-8.1.6

安装依赖

yum install libxml2 libxml2-devel libsqlite3x-devel openssl bzip2 libcurl-devel libcurl libjpeg libpng freetype gmp libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel zlib zlib-devel glibc glib2 ncurses curl gdbm-devel db4-devel libXpm-devel libX11-devel gd-devel gmp-devel expat-devel xmlrpc-c xmlrpc-c-devel libicu-devel libmcrypt-devel libmemcached-devel -y
注意:当前 Centos 官方镜像已停止服务,yum install 安装 devel 软件时,如报错无法安装可尝试将 /etc/yum.repos.d/ 目录下的 CentOS-Base.repo.rpmsave 中的文件内容覆盖至 CentOS-Linux-BaseOS.repo ,CentOS-AppStream.repo.rpmsave 覆盖至 CentOS-Linux-AppStream.repo,操作前请注意备份

因 yum 源中没有 oniguruma 包,这里使用 github 源码编译安装,项目地址:https://github.com/kkos/oniguruma

wget https://github.com/kkos/oniguruma/releases/download/v6.9.8/onig-6.9.8.tar.gz
tar -zxvf onig-6.9.8.tar.gz
cd onig-6.9.8
./configure --prefix=/usr
make && make install

创建用户

安全起见,我们需要创建一个用户用于运行 php,一般这个用户是禁止登陆的,本文创建用户名与用户组均为 www,这个名称可以自定义

# 创建用户组
groupadd www
# 创建用户
useradd -g www www -M -s /sbin/nologin
  • -g www 指定用户组
  • -M 不创建家目录(程序运行不需要家目录)
  • -s /sbin/nologin 不允许登录,更加安全

编译并安装

# 生成编译文件
./configure --prefix=/www/server/php81 --with-config-file-path=/www/server/php81/etc --enable-fpm --with-fpm-group=www --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir --with-freetype --with-mcrypt --with-jpeg --with-png -with-zlib --with-libxml-dir --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl -enable-mbstring --enable-gd --with-openssl --with-mhash --enable-pcntl --with-xmlrpc --enable-zip --enable-soap --with-gettext --enable-opcache --with-xsl --enable-sockets --enable-mbregex --enable-ftp --with-webp
# 编译并安装
make && make install
# 复制配置文件
cp php.ini-production /www/server/php81/etc/php.ini
# 或者使用 development
cp php.ini-development /www/server/php81/etc/php.ini

如果使用 apache 的话,需要在编译参数中新增 --with-apxs2=/www/server/apache/bin/apxs,同时 --enable-fpm 参数可去除,其中 /www/server/apacheapache 安装目录,编译完成后在 apache 的配置文件中解注释对 php_module 的注释即可,本文不细讲 apache 配置。

配置

配置环境变量

/etc/profile 下新增 PATH=$PATH:/www/server/php81/bin && export PATH,使用 source /etc/profile 使配置立即生效。

创建 php-fpm 软链接:

ln -s /www/server/php81/sbin/php-fpm /www/server/php81/bin/php-fpm

nginx 配置 php

复制配置文件,如果之前已经复制过请跳过此步骤:

cp /www/server/php81/etc/php-fpm.conf.default /www/server/php81/etc/php-fpm.conf
cp /www/server/php81/etc/php-fpm.d/www.conf.default /www/server/php81/etc/php-fpm.d/www.conf

启动 php-fpm:

Lessie AI
Lessie AI

一款定位为「People Search AI Agent」的AI搜索智能体

下载
/www/server/php81/sbin/php-fpm

修改 nginx 配置文件

编辑 nginx.conf 文件,在对应的 server 下新增如下内容:

location ~ [^/]\.php(/|$) {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    include        fastcgi.conf;
}

重启 nginx ,nginx -s reload,在网站根目录新建 phpinfo.php 文件:

1a48a3a4f40a9acadd582fd72044e1c.jpg

nginx php 多版本共存

在日常的开发中,不同项目可能需要不同版本的 php 来运行,这就需要通过一些配置来实现 php 的共存。多个 php 版本共存时,需要在编译时将不同版本的 php 安装到不同的目录。

打开 php 安装路径,编辑文件 etc/php-fpm.d/www.confetc/php-fpm.conf,在文件中新增或修改以下项:

[www]
; 根据版本配置,比如 php8.1 配置为 php-cgi-81.sock
listen = /tmp/php-cgi-81.sock
listen.backlog = 8192
listen.allowed_clients = 127.0.0.1
; 运行 master 进程用户名,一定要设置!!并且 listen 中设置的文件 nginx 必须有读权限,否则会报错
listen.owner = www
; 运行 master 进程用户名,参考上一个
listen.group = www
listen.mode = 0666
; worker 进程运行的用户,该用户需要有运行的 PHP 文件的读权限,如涉及文件上传还需要对应目录的写权限
user = www
; worker 进程的用户组,参考上一项
group = www
; 动态调整 worker 数
pm = dynamic
; 依据版本设置 如 php8.1 配置为 phpfpm_81_status
pm.status_path = /phpfpm_81_status
; 最大 worker 进程数 一般设置为 内存/50M
pm.max_children = 50
; 启动时的 worker 进程数
pm.start_servers = 5
; 限制时的最小 worder 进程数
pm.min_spare_servers = 5
; 限制时的最大 worder 进程数
pm.max_spare_servers = 10
; 请求超时时间
request_terminate_timeout = 100
; 慢日志记录时间,请求事件超出此时间会记录日志
request_slowlog_timeout = 30
; 慢日志目录,目录一定要存在且上面设置的 user 用户要有写权限
slowlog = /www/wwwlogs/php/slow.log

随后在 nginx 配置文件,对应的 server 中修改 fastcgi_pass 为刚才设置中的 listen 对应的路径,注意此文件 nginx 运行用户必须有读权限,否则会报错:

 location ~ [^/]\.php(/|$) {
-    fastcgi_pass   127.0.0.1:9000;
+    fastcgi_pass   unix:/tmp/php81.sock;
     fastcgi_index  index.php;
     include        fastcgi.conf;
 }

php-fpmphp-Fastcgi Process Managerphp-fpmFastCGI 的实现,并提供了进程管理的功能。php-fpm 进程包含 master 进程与 worker 进程,一般情况下,master 进程只有一个,负责监听端口、调度请求,而 worder 进程则有多个,每个进程内部都嵌入了一个 PHP 解释器,是 PHP 代码真正运行的地方。前文设置中的 workerphp-fpmworker 进程数量。

开机自启

编辑文件 /etc/init.d/php-fpm81,如需多版本兼容文件名后加上当前版本,如这里使用 php-fpm81,写入如下内容:

#!/bin/bash

# chkconfig: - 51 64

. /etc/init.d/functions

# php-fpm 路径
exec=/www/server/php81/sbin/php-fpm
# 锁文件 用于识别当前软件是否在运行
lock=/var/lock/subsys/php-fpm81
# 标识 输出信息用 可随意修改
proc=php-fpm81

function start() {
    pidofproc $exec > /dev/null
    [ $? = 0 ] && echo "${proc} 正在运行中" && exit
    daemon $exec
    if [ $? = 0 ]; then
        echo "${proc} 启动成功"
        rm -f lock
        touch $lock
    else
      echo "${proc} 启动失败 $?"
    fi
}

function stop() {
    pidofproc $exec > /dev/null
    [ $? != 0 ] && echo "${proc} 未运行" && exit
    killproc $exec
    if [[ $? == 0 ]]; then
        echo "${proc} 停止成功"
        rm -f $lock
    else
      echo "${proc} 停止失败 $?"
    fi
}

function reload() {
    killproc $exec -HUP
    if [[ $? == 0 ]]; then
        echo "平滑重启成功"
    else
        echo "平滑重启失败 $?"
    fi
}

function restart() {
    stop
    start
}

function procStatus() {
    status $exec > /dev/null
    if [[ $? == 0 ]]; then
        echo "${proc} 已启动"
    else
        echo "${proc} 未启动"
    fi
}

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  reload)
    reload
    ;;
  restart)
    restart
    ;;
  status)
    procStatus
    ;;
  *)
    echo $"Usage: $0 {start|stop|reload|restart|status}"
esac

随后添加为开机自启即可,如下:( php-fpm81 是上一步自定义得到文件名)

# 添加运行权限
chmod +x /etc/init.d/php-fpm81
chkconfig --add php-fpm81
chkconfig php-fpm81 on

手动操作命令如下:

# 启动
/etc/init.d/php-fpm81 start
# 停止
/etc/init.d/php-fpm81 stop
# 平滑重启
/etc/init.d/php-fpm81 reload
# 重启
/etc/init.d/php-fpm81 restart
# 运行状态
/etc/init.d/php-fpm81 status

推荐学习:《0》

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

3

2026.01.20

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

55

2026.01.19

java用途介绍
java用途介绍

本专题整合了java用途功能相关介绍,阅读专题下面的文章了解更多详细内容。

67

2026.01.19

java输出数组相关教程
java输出数组相关教程

本专题整合了java输出数组相关教程,阅读专题下面的文章了解更多详细内容。

36

2026.01.19

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

10

2026.01.19

xml格式相关教程
xml格式相关教程

本专题整合了xml格式相关教程汇总,阅读专题下面的文章了解更多详细内容。

11

2026.01.19

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

15

2026.01.19

微信聊天记录删除恢复导出教程汇总
微信聊天记录删除恢复导出教程汇总

本专题整合了微信聊天记录相关教程大全,阅读专题下面的文章了解更多详细内容。

152

2026.01.18

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

139

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.9万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 8.4万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号