CentOS 7.6 源码编译安装 PHP 8.0.3

本文主要记录如何在 CentOS 7.6 中编译安装 PHP 官方最新的 8.0.3 版本。由于像 NginxMysqlPHP的的源码都是用 C/C++ 写的,所以自己的 CentOS 7.6 服务器上必须要安装 gccg++ 软件。

搭建 LNMP 环境一般是先安装 Mysql/MariaDB ,再安装 Nginx ,其次是安装 PHP

准备工作

创建用户和组

先先创建一个名为 php 且没有登录权限的用户和一个名为 php 的用户组,然后安装 php 所需的依赖库和依赖包,最后通过 .configure 进行安装的详细配置。

  • 创建 php 系统用户和系统用户组
groupadd -r php && useradd -c "PHP Server" -r -g php -s /sbin/nologin -d /usr/local/php php -M

安装相关包

安装依赖库

  • 安装编译软件及依赖
yum install -y gcc gcc-c++ make autoconf automake
  • 安装PHP常用的库依赖
yum -y install oniguruma oniguruma-devel freetype freetype-devel libpng libpng-devel libjpeg libjpeg-devel libxml2 libxml2-devel libevent libevent-devel zlib zlib-devel curl curl-devel openldap-devel openldap-clients libicu-devel libicu-devel libtidy libtidy-devel sqlite-devel libcurl-devel libxslt-devel net-snmp-devel libedit-devel libxslt-devel bzip2-devel gd-devel php-ldap gmp-devel re2c

链接LD

  • 定义lib库
cat << EOF > /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/lib
/usr/lib64
/usr/local/lib
/usr/local/lib64
EOF

# 使环境变量立即生效
ldconfig -v

编译安装 PHP

  • 下载并解压文件

(备用:https://blog.xiaoqy.com/pub/packages/php/php-8.0.3.tar.gz)

wget -P '/usr/local/src' https://www.php.net/distributions/php-8.0.3.tar.gz \
&& cd /usr/local/src \
&& tar -zxvf php-8.0.3.tar.gz -C '/usr/local/src' \
&& cd php-8.0.3

如果发现目录中并没有 configure 文件, 但是有一个名为 buildconf 的文件,通过运行这个文件生成 configure 文件

# 运行 buildconf 文件, 生成 configure 文件,加入 --force 选项
./buildconf --force
  • 预编译
./configure \
--prefix=/usr/local/php \
--exec-prefix=/usr/local/php \
--bindir=/usr/local/php/bin \
--sbindir=/usr/local/php/sbin \
--includedir=/usr/local/php/include \
--libdir=/usr/local/php/lib/php \
--mandir=/usr/local/php/php/man \
--with-config-file-path=/usr/local/php/etc \
--with-mysql-sock=/var/run/mysql/mysql.sock \
--with-mysqli=shared,mysqlnd \
--with-pdo-mysql=shared,mysqlnd \
--with-openssl \
--with-snmp \
--with-mhash \
--with-zlib \
--with-zip \
--with-gettext \
--with-curl \
--with-pcre-jit \
--with-jpeg \
--with-freetype \
--with-gmp \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--with-pear \
--with-tidy \
--without-gdbm \
--enable-gd \
--enable-ftp \
--enable-xml \
--enable-pcntl \
--enable-shared \
--enable-sockets \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-mbregex \
--enable-mbstring \
--enable-soap \
--enable-session \
--enable-opcache \
--enable-fpm \
--enable-fast-install \
--enable-calendar \
--enable-exif \
--enable-intl \
--disable-debug \
--disable-rpath \
--disable-fileinfo
  • 编译并安装
make && make install

配置 PHP

  • 添加 PHP 配置文件
# 将 php 源码编译目录下的 php.ini-production 拷贝到 php 安装目录下的 etc 目录下
cp php.ini-production /usr/local/php/etc/php.ini
  • 修改 PHP 配置文件
vim /usr/local/php/etc/php.ini

# 修改 PHP 扩展目录所在位置
# 搜索 ;extension_dir = "./" 替换为
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20200930"

# 开启 mysqli 扩展
# 找到 ;extension_dir = "ext" 替换为
extension = mysqli.so
extension = pdo_mysql.so

# 修改服务器所在时区
# PRC 就是英文 People's Republic of China,中华人民共和国
# 找到 ;date.timezone = 替换为
date.timezone = PRC

# 开启 OPcache
# 跳转到末行,输入以下内容
zend_extension = opcache.so;

# 保存并退出
:wq!
  • 添加 php-fpm 管理相关的配置文件到系统配置目录 /etc/init.d
# 将 php 源码编译目录下的 sapi/fpm/init.d.php-fpm 文件拷贝到系统配置 /etc/init.d 目录下并重命名为 php-fpm
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
cd ~
  • 添加 php-fpm 配置文件
# 将 php 安装目录下的 /usr/local/php/etc/php-fpm.conf.default 文件拷贝同目录下并重命名为 php-fpm.conf
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
  • 添加 www.conf 配置文件
# 将 php 安装目录下的 /usr/local/php/etc/php-fpm.d/www.conf.default 文件拷贝同目录下并重命名为 www.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
  • 添加 PHP 安装目录到系统环境变量
# 加入环境变量:
echo -e "export PATH=\$PATH:/usr/local/php/bin:/usr/local/php/sbin" > /etc/profile.d/php.sh

# 使用 source 立即生效刚刚添加的 php 环境变量
source /etc/profile.d/php.sh
  • 设置 PHP 日志目录和 php-fpm 运行进程的 ID 文件目录
php-fpm`运行进程的 ID 文件也就是`php-fpm.sock

其中设置 php-fpm 进程目录的用户和用户组为 Nginx

# 创建 php-fpm 日志目录
mkdir -p /var/log/php-fpm/

# 创建 php-fpm 进程的 ID(php-fpm.sock) 文件运行目录
mkdir -p /var/run/php-fpm

# 修改 php-fpm 进程的 ID(php-fpm.sock) 文件运行目录的所属用户和组
chown -R nginx:nginx /var/run/php-fpm/
  • 修改 session 的目录配置
# 创建 session 存放目录
mkdir -p /var/lib/php/session

# 修改 session 存放目录的所属用户和组
chown -R nginx:nginx /var/lib/php

# 修改 PHP 配置文件下的 ;session.save_path = "/tmp"
sed -i 's/^;session.save_path\s\+\=\s\+\"\/tmp\"/session.save_path\ \=\ \"\/var\/lib\/php\/session\"/g' /usr/local/php/etc/php.ini
  • 设置 PHP 开机启动
# 修改系统配置目录下的 php-fpm 文件可执行权限
chmod +x /etc/init.d/php-fpm

# 将系统配置目录下的 php-fpm 添加到 系统服务
chkconfig --add php-fpm

# 设置 php-fpm 系统服务 为开机启动
chkconfig php-fpm on
  • 检测 php-fpm 系统服务是否启动成功
# 用 chkconfig 命令检测一下服务是否运行成功
chkconfig --list | grep php-fpm
> php-fpm         0:off   1:off   2:on    3:on    4:on    5:on    6:off

# 可见服务已经在 第 2 到 第 5 运行等级打开
# 同样你也可以禁用 php-fpm 开机启动
chkconfig php-fpm off

# 用 chkconfig 命令检测一下服务是否运行成功
chkconfig --list | grep php-fpm
> php-fpm         0:off   1:off   2:off   3:off   4:off   5:off   6:off

# 可见服务已经在 第 2 到 第 5 运行等级已经关闭
  • 测试 PHP 的配置文件是否无误
php-fpm -t
  • 启动 PHP 系统服务
# 使用 systemctl start + 服务名 启动系统服务
systemctl start php-fpm.service
  • 查看 PHP 系统服务状态
# 使用 systemctl status + 服务名 查看系统服务状态
systemctl status php-fpm.service
  • 查看 PHP 版本信息
php -v
  • 修改 Nginx 配置文件使之使用 Nginx 反向 PHP 解释器

修改 Nginx 配置文件使之使用 Nginx 反向 PHP 解释器, 也就是 php-fpm 它其实就是 CGI

# 说明一下我在安装的 nginx 是将配置文件放在 /etc/nginx 目录下
# 修改配置文件如下:

server {
    listen       80;
    server_name  www.xiaoqy.com;


    #charset koi8-r;

    access_log  logs/nginx.dev.access.log  main;

    location / {
        root   /data/www/html;
        index  index.php index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /data/www/html;
    }

    location ~ ^/(images|javascript|js|css|flash|media|static)/ {

        expires 30d;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
    #    root           html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /data/www/html/$fastcgi_script_name;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny  all;
    }
}
  • 编辑文件
vim /data/www/html/index.php

# 输入内容
<?php
phpinfo();

# 保存退出
:wq!
  • 重新加载 nginx 配置
systemctl reload nginx.service

作者:白小七羽
原文链接:https://geek.xiaoqy.com/382.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
PHPWind 8.3 是一个开源的社交网络程序,它采用了 PHP 技术和 MySQL 数据库。它有很多的技术亮点和功能升级,下面是一些亮点及其详解: 1. 支持 PHP7 PHPWind 8.3 支持 PHP7,因此在性能和安全性方面都得到了大幅度的提升。 2. 新增了站点运营数据统计功能 PHPWind 8.3 后台新增了站点运营数据统计功能,包括用户数据、主题数据、回复数据、日志数据、投票数据、附件数据等,管理员可以通过这些数据了解站点的运营情况,针对性地进行优化和改进。 3. 支持微信公众号接口 PHPWind 8.3 支持微信公众号接口,可以实现微信公众号与站点的互通,例如通过微信公众号登录站点、发布主题、回复主题等。 4. 新增了积分商城功能 PHPWind 8.3 新增了积分商城功能,用户可以通过在站点内的活动、任务、勋章等方式获得积分,然后在积分商城中兑换礼品。 5. 支持多种第三方登录方式 PHPWind 8.3 支持多种第三方登录方式,例如 QQ、微信、新浪微博等,用户可以方便地使用自己喜欢的账号登录站点。 6. 新增了短信发送功能 PHPWind 8.3 后台新增了短信发送功能,管理员可以通过这个功能向用户发送短信提醒、验证码等。 7. 新增了访问量统计功能 PHPWind 8.3 后台新增了访问量统计功能,管理员可以通过这个功能了解站点的访问量、热门主题、热门回复等,方便站点的运营和管理。 总之,PHPWind 8.3 在性能、安全性、功能等方面都得到了大幅度的提升和升级,为站点的运营和管理提供了更多的便利和支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白小七羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值