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

编译配置报错?

报错:Alternatively, you may set the environment variables LIBZIP_CFLAGS and LIBZIP_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.

  • 方式一(方便)
yum -y install epel-release
rpm -ivh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum --enablerepo=remi install libzip5-devel
  • 方式二(知道咋回事)

编译安装,指定 PKG_CONFIG_PATH ,上面报错中其实有提示信息,让我们考虑调整 PKG_CONFIG_PATH 环境变量。
下面是详细步骤:

# 先卸载已有
yum remove -y libzip libzip-devel

# 然后安装
(备用:https://blog.xiaoqy.com/pub/packages/libzip/libzip-1.2.0.tar.gz)
wget -P '/usr/local/src' https://libzip.org/download/libzip-1.2.0.tar.gz \
&& cd /usr/local/src \
&& tar -zxvf libzip-1.2.0.tar.gz -C '/usr/local/src' \
&& cd libzip-1.2.0

./configure
make && make install

# 装完了之后找一下 /usr/local/lib 下有没有 pkgconfig 目录
# 有的话执行以下命令来指定PKG_CONFIG_PATH。
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/"
  • 编译并安装
make && make install

编译报错?

报错:configure: error:Please reinstall the iconv library

原因:未安装 libiconv

(备用:https://blog.xiaoqy.com/pub/packages/libiconv/libiconv-1.16.tar.gz)
wget -P '/usr/local/src' https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.16.tar.gz \
&& cd /usr/local/src \
&& tar -zxvf libiconv-1.16.tar.gz -C '/usr/local/src' \
&& cd libiconv-1.16

./configure --prefix=/usr/local/libiconv
make && make install

# 然后编译时可加入选项 --with-iconv-dir=/usr/local/libiconv

配置 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://blog.xiaoqy.com/382.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
A:要在CentOS 7.6上编译安装FFmpeg,可以按照以下步骤进行操作: 1. 安装基本工具 首先,需要安装一些基本的工具和库。使用以下命令在CentOS 7.6上安装这些软件包: ``` yum install -y autoconf automake bzip2 bzip2-devel cmake freetype-devel gcc gcc-c++ git libtool make mercurial pkgconfig zlib-devel ``` 2. 下载最新的FFmpeg码 从官方网站 https://ffmpeg.org/download.html 下载最新版本的FFmpeg码压缩包,并将其解压缩到某个目录中。例如: ``` cd /usr/local/src wget https://ffmpeg.org/releases/ffmpeg-4.3.1.tar.bz2 tar -xjvf ffmpeg-4.3.1.tar.bz2 cd ffmpeg-4.3.1 ``` 3. 配置和编译FFmpeg 使用以下命令在CentOS 7.6上配置和编译FFmpeg: ``` ./configure --enable-shared --disable-static make make install ``` 这将启用共享库,并禁用静态库。如果需要使用其他选项,可以在“configure”命令中添加相应的参数。 4. 配置库路径 最后,在使用FFmpeg时需要将库路径配置到环境变量中。使用以下命令将其添加到“/etc/ld.so.conf.d”目录下的新文件中: ``` echo "/usr/local/lib/" >> /etc/ld.so.conf.d/ffmpeg.conf ldconfig -v ``` 这将添加“/usr/local/lib/”到ld.so.conf文件中,并重新加载库缓存。现在应该可以成功使用FFmpeg了。 以上是在CentOS 7.6上编译安装FFmpeg的步骤。需要注意的是,具体的操作可能会因为系统环境和其他因素而有所不同。在操作时请认真阅读相关文档,并保证操作安全。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值