• linux编译安装 php-nginx-mysql


    linux编译安装 php-nginx-mysql

    一、安装php
    • 1、下载源码包(演示使用)
    # 创建目录 /resource/php   `mkdir -p /resource/php` 
    # 用 php-8.0.23 和 php-8.1.10 演示
    cd /resource/php
    wget https://www.php.net/distributions/php-8.1.10.tar.gz
    wget https://www.php.net/distributions/php-8.0.23.tar.gz
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 2、解压并进入编译
    # `tar -zxvf php-8.1.10.tar.gz`
    # `cd php-8.1.10`
    
    • 1
    • 2

    安装依赖包

    yum install zlib libxml libjpeg freetype libpng gd curl libiconv zlib-devel libxml2 libxml2-devel libjpeg-devel freetype-devel libpng-devel 
    gd-devel curl-devel openssl-devel libxslt-devel -y
    
    • 1
    • 2

    配置编译参数

    ./configure --prefix=/usr/local/php81 --with-config-file-path=/usr/local/php81/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-openssl --with-zlib --enable-mbstring --disable-mbregex --enable-mysqlnd---with-mysql --with-mysqli --with-pdo-mysql --enable-gd --with-zlib-dir --enable-sockets --with-curl
    
    • 1

    ps:出现 No package “***” found错误 直接百度搜索 yum install -y 安装对应包后,重新上一步骤

    php7参数

    ./configure --prefix=/usr/local/php73 --with-config-file-path=/usr/local/php73/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-openssl --with-zlib --enable-mbstring --disable-mbregex --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-mysqlnd-compression-support --with-gd --with-zlib-dir --enable-sockets --with-curl
    
    • 1

    执行编译
    make && make install

    • 3、查看 PHP 是否安装成功
    # 上面编译中的 --prefix=/usr/local/php81 指定的
    # /usr/local/php81/bin/php -v
    
    • 1
    • 2

    ps: 其余版本php 重复上面步骤即可

    • 4、编译安装扩展(重点)

    两种情况:

    1. php自带扩展:下载需要安装扩展的 php 相同版本的 php 源码包,解压并进入源码包的 ext/ 目录第三方扩展 : 则下载对应的扩展包,解压并进入解压后的文件目录
    2. 需要其他扩展支持才可以安装
    #第一种:本文示例 8.1版本已经有源码包 因此不需下载,用其来演示
    cd /resource/php/php-8.1.10/ext/
    
    # 在 ext/ 目录下可以看到 php 所有的原生扩展,以 zip为例
    cd zip
    
    # 执行 phpize
    /usr/local/php81/bin/phpize
    
    # 配置编译
    ./configure --with-php-config=/usr/local/php81/bin/php-config
    
    # 编译并且安装
    make && make install
    
    # 查看扩展是否安装成功
    /usr/local/php81/bin/php -m
    
    # 在 /usr/local/php81/etc/php.ini 中加入 `extension = zip`
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
       第二种:比如安装 sodium 扩展,但是 安装libsodium是安装sodium扩展的必须依赖条件
       libsodium 是第三方扩展 ,需自行去下载安装
       # wget https://github.com/jedisct1/libsodium/releases/download/1.0.18-RELEASE/libsodium-1.0.18.tar.gz
       # tar xf libsodium-1.0.18.tar.gz && cd libsodium-1.0.18
       # ./configure && make -j2 && make install
       # echo /usr/local/lib > /etc/ld.so.conf.d/usr_local_lib.conf
       # ldconfig
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    注意这时候我遇到坑了,试了很多次,我也记不得哪个是了,此时可看到:
    在这里插入图片描述
    在这里插入图片描述
    执行命令:

    echo $PKG_CONFIG_PATH   
    # 如果为空的话 执行下面命令
    export PKG_CONFIG_PATH=/usr/lib/pkgconfig 
    # 或者 根据自己实际情况来确定,我这演示服务器都可以
    export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    接下俩就可以正常按照第一种情况安装sodium 扩展了

    安装完成后,配置开启
    执行完成后会显示扩展模块编译到的目录/usr/local/php81/lib/php/extensions/no-debug-non-zts-20210902/
    这个目前 安装完后文件名自行查看

    修改php.ini添加扩展

    extension_dir = “/usr/local/php81/lib/php/extensions/no-debug-non-zts-20210902/”
    extension=sodium.so
    extension=zip.so
    在这里插入图片描述
    保存退出,重启php
    通过phpinfo可看到,扩展已生效

    • 5、修改 php-fpm 监听端口
    # 编辑 php-fpm 配置文件,如找不到可使用 `find / -name php-fpm.conf` 命令
    vim /usr/local/php81/etc/php-fpm.conf # 去掉 `; pid = run/php-fpm.pid` 前面的分号注释,打开 pid 配置
    vim /usr/local/php80/etc/php-fpm.conf # 去掉 `; pid = run/php-fpm.pid` 前面的分号注释,打开 pid 配置
    vim /usr/local/php81/etc/php-fpm.d/www.conf # 输入 /9000 回车,找到 listen = 127.0.0.1:9000 这一行将 9000 修改为 9081
    vim /usr/local/php80/etc/php-fpm.d/www.conf # 输入 /9000 回车,找到 listen = 127.0.0.1:9000 这一行将 9000 修改为 9080
    
    # 关闭并重启 php-fpm
    killall php-fpm
    /usr/local/php81/sbin/php-fpm
    /usr/local/php80/sbin/php-fpm
    
    # 打开了 pid 配置后,可使用过以下命令关闭或重启 php-fpm
    # INT, TERM 立刻终止
    # QUIT 平滑终止
    # USR1 重新打开日志文件
    # USR2 平滑重载所有worker进程并重新载入配置和二进制模块
    # php-fpm 关闭:
    kill -INT `cat /usr/local/php81/var/run/php-fpm.pid`
    kill -INT `cat /usr/local/php80/var/run/php-fpm.pid`
    # php-fpm 重启:
    kill -USR2 `cat /usr/local/php81/var/run/php-fpm.pid`
    kill -USR2 `cat /usr/local/php80/var/run/php-fpm.pid`
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 6、Nginx 配置多版本 PHP 解析

        # php81 匹配路由根据自己需要自行配置
        location /php81 {
            root           $root;
            fastcgi_pass   127.0.0.1:9081; # 这里端口需和前面 php-fpm 修改的端口保持一致
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
      
        # php80
        location /php80{
            root           $root;
            fastcgi_pass   127.0.0.1:9080; # 这里端口需和前面 php-fpm 修改的端口保持一致
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
      
        # 没有匹配到以上两种路由,默认走 php81
        location ~ \.php$ {
            root           $root;
            fastcgi_pass   127.0.0.1:9081;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26

    重启nginx 生效 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -s reload

    二.mysql

    添加链接描述

  • 相关阅读:
    关于 PropertyOverrideConfigurer PropertySourcesPlaceholderConfigurer
    操作系统分页、分段
    (二)移植FreeRTOS到STM32中
    Linux在线安装Mongodb
    什么是shell?模拟实现shell(深刻理解shell的内建命令)
    老王谈商业模式:知识付费为什么是风口?
    IgH详解十二、IgH实现使用ENI文件配置从站(一)
    NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
    住宅代理详细介绍——助您快速入门!
    C/C++ 简单排序之冒泡排序
  • 原文地址:https://blog.csdn.net/weixin_46044420/article/details/126804071