• centos7 源码编译安装 php


    准备工作

    • 下载 PHP 源码包并解压

      $ wget https://www.php.net/distributions/php-7.2.19.tar.bz2
      $ yum -y install bzip2 # 如果有可以不用安装
      $ tar -jxvf php-7.2.19.tar.bz2
      
    • 进入 PHP 源码包目录

      $ cd php-7.2.19
      

    配置和构建 PHP

    • 常用配置项及其说明 如果看着麻烦可以直接看下面的总结步骤

      
      --prefix=/usr/local/php7 # 配置安装目录
      --with-config-file-path=/usr/local/php7 # 配置文件 php.ini 的路径
      --enable-sockets # 开启 socket 
      --enable-fpm # 启用 fpm 扩展
      --enable-cli # 启用 命令行模式 (从 php 4.3.0 之后这个模块默认开启所以可以不用再加此命令)
      --enable-mbstring # 启用 mbstring 库
      --enable-pcntl # 启用 pcntl (仅 CLI / CGI)
      --enable-soap # 启用 soap 
      --enable-opcache # 开启 opcache 缓存
      --disable-fileinfo # 禁用 fileinfo (由于 5.3+ 之后已经不再持续维护了,但默认是开启的,所以还是禁止了吧)(1G以下内存服务器直接关了吧)
      --disable-rpath  #禁用在搜索路径中传递其他运行库。
      --with-mysqli # 启用 mysqli 扩展
      --with-pdo-mysql # 启用 pdo 扩展
      --with-iconv-dir # 启用 XMLRPC-EPI 字符编码转换 扩展
      --with-openssl # 启用 openssl 扩展 (需要 openssl openssl-devel)
      --with-fpm-user=www #设定 fpm 所属的用户 
      --with-fpm-group=www #设定 fpm 所属的组别
      --with-curl # 启用 curl 扩展
      --with-mhash # 开启 mhash 基于离散数学原理的不可逆向的php加密方式扩展库
      # GD
      --with-gd # 启用 GD 图片操作 扩展
      --with-jpeg-dir # 开启对 jpeg 图片的支持 (需要 libjpeg)
      --with-png-dir # 开启对 png 图片支持 (需要 libpng)
      --with-freetype-dir # 开启 freetype 
      # 压缩
      --enable-zip # 启用 zip
      --with-zlib # 启用对 zlib 支持 
      # xml
      --enable-simplexml # 启用对 simplexml 支持
      --with-libxml-dir # 启用对 libxml2 支持
      
      
    • 一些不常用的选项

      --enable-debug 开启 debug 模式
      
    • 执行 configure 配置 如果看着麻烦可以直接看下面的总结步骤

      $ ./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7 --enable-sockets --enable-fpm --enable-cli --enable-mbstring --enable-pcntl --enable-soap --enable-opcache --disable-fileinfo --disable-rpath --with-mysqli --with-pdo-mysql --with-iconv-dir --with-openssl --with-fpm-user=www --with-fpm-group=www --with-curl --with-mhash --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --enable-zip --with-zlib --enable-simplexml --with-libxml-dir 
      === 第 [1] 尝试 ===
      ... 
      configure: error: libxml2 not found. Please check your libxml2 installation.
      # 安装 libxml2 库
      $ yum -y install libxml2 libxml2-devel
      === 第 [2] 尝试 ===
      ...
      configure: error: Cannot find OpenSSL\'s <evp.h>
      # 安装 openssl 库
      $ yum -y install openssl openssl-devel
      === 第 [3] 尝试 ===
      ...
      checking for cURL 7.10.5 or greater... configure: error: cURL version 7.10.5 or later is required to compile php with cURL support
      # 安装 curl 库 
      $ yum -y install libcurl libcurl-devel
      === 第 [4] 尝试 ===
      ...
      configure: error: jpeglib.h not found.
      # 安装 libjpeg 顺便 把 libpng 也装上
      $ yum -y install libjpeg libjpeg-devel libpng libpng-devel
      === 第 [5] 尝试 ===
      ...
      configure: error: freetype-config not found.
      # 安装 freetype 库 
      $ yum -y install freetype freetype-devel
      === 第 [6] 尝试 ===
      +--------------------------------------------------------------------+
      | License:                                                           |
      | This software is subject to the PHP License, available in this     |
      | distribution in the file LICENSE.  By continuing this installation |
      | process, you are bound by the terms of this license agreement.     |
      | If you do not agree with the terms of this license, you must abort |
      | the installation process at this point.                            |
      +--------------------------------------------------------------------+
      
      Thank you for using PHP.
      ...
      # 成功
      $ make && make install 
      
    • 安装总结

      $ wget https://www.php.net/distributions/php-7.2.19.tar.bz2
      $ yum -y install bzip2 # 如果有可以不用安装
      $ tar -jxvf php-7.2.19.tar.bz2
      $ cd php-7.2.19
      $ yum -y install libxml2 libxml2-devel openssl openssl-devel libcurl libcurl-devel install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel
      # **此处的 —prefix 安装目录可以不和我一样**
      $ ./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7 --enable-sockets --enable-fpm --enable-cli --enable-mbstring --enable-pcntl --enable-soap --enable-opcache --disable-fileinfo --disable-rpath --with-mysqli --with-pdo-mysql --with-iconv-dir --with-openssl --with-fpm-user=www --with-fpm-group=www --with-curl --with-mhash --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --enable-zip --with-zlib --enable-simplexml --with-libxml-dir 
      $ make && make install 
      

    配置 nginx 支持

    $ cp php-7.2.19/php.ini-production /usr/local/php/php.ini # 复制 php.ini 文件到目录
    $ vi /usr/local/nginx/conf/nginx.conf
    ...
    http {
    ...
        server {
    ...	
    # 把 [1] 换成 [2]
    # 让 nginx 支持 php 文件
    #[1]
     				location / {
                root   html;
                       index  index.html index.htm;
            }
    #[2]
            location / {
                root   html;
                       index  index.php index.html index.htm;
            }
    ...
    # 把 [1] 换成 [2]
    # 配置监听 php 端口
    # 注意: 要把 /scripts 换成 $document_root
    #[1]
            #location ~ \.php$ {
            #        root           html;
            #        fastcgi_pass   127.0.0.1:9000;
            #        fastcgi_index  index.php;
            #        fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            #        include        fastcgi_params;
            #}
    #[2]
            location ~ \.php$ {
                root           html;
                   fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
            }
    ...
    }
    # 重启 php-fpm
    $ pkill -9 php-fpm
    $ /usr/local/php7/sbin/php-fpm
    

    配置更简单的启动命令

    # 复制启动脚本到 init.d 目录
    $ cp php-7.2.19/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
    # 增加执行权限
    $ chmod +x /etc/init.d/php-fpm
    # 配置 php-fpm 文件
    $ cd /usr/local/php7/etc/
    $ cp php-fpm.conf.default php-fpm.conf
    # 进入 php-fpm.conf , 并去除 pid = run/php-fpm.pid 的注释
    $ vim php-fpm.conf
    === 
    ...
    [global]
    ; Pid file
    ; Note: the default prefix is /usr/local/php7/var
    ; Default Value: none
    # 取消下面的注释
    pid = run/php-fpm.pid
    ...
    ===
    # 复制 www.conf 文件
    $ cp php-fpm.d/www.conf.default php-fpm.d/www.conf
    # 重启 php 服务器
    $ pkill -9 php-fpm
    $ /usr/local/nginx/php7/sbin/php-fpm
    # 测试 
    $ /etc/init.d/php-fpm stop  # 停止服务
    Gracefully shutting down php-fpm . done
    $ /etc/init.d/php-fpm start # 启动服务
    Starting php-fpm  done
    $ /etc/init.d/php-fpm restart # 重启服务
    Gracefully shutting down php-fpm . done
    Starting php-fpm  done
    
    • /etc/init.d/php-fpm stop # 停止服务
    • /etc/init.d/php-fpm start # 启动服务
    • /etc/init.d/php-fpm restart # 重启服务

    CentOS 7 配置自启动

    # 启动(因为上面已经配置好启动脚本了,并且放到了 /etc/init.d 中所以下面命令是可以用的)
    # 在 centos7 中 systemctl 是找 /etc/init.d 中的脚本
    $ systemctl start php-fpm # 启动
    $ systemctl enable php-fpm # 自启动
    php-fpm.service is not a native service, redirecting to /sbin/chkconfig.
    Executing /sbin/chkconfig php-fpm on # 这里他提示我 php-fpm 并不是系统服务所以不能使用 systemctl 推荐我使用 /sbin/chkconfig php-fpm on 来实现自启动
    $ /sbin/chkconfig php-fpm on 再次重启即可完成自启动
    # 注: 如果不想配置 php-fpm 服务器化到此已经可以结束了,如果想看服务化可以看以下操作
    
    

    Centos 7 服务化 php-fpm

    # 在 centos 7 之后我们可以使用 systemctl 更好的管理系统服务
    # 所以我们也要让 php-fpm 支持
    # 因为 php 7.2 源码包里面含有 systemctl 所需要的脚本文件
    # 我们只要复制过去即可,我们来开始配置
    # 进入下载的 php源码包
    $ cd php-7.2.19/sapi/fpm
    # 复制其中的 php-fpm.service 到 /usr/lib/systemd/system/
    $ cp php-fpm.service /usr/lib/systemd/system/
    # 再次使用 systemctl enable php-fpm 进行配置自启动
    $ systemctl enable php-fpm
    # 重启测试一下看看自己服务器的 php-fpm 是否成功运行
    
    • systemctl enable xxxxxx # 配置自启动
    • systemctl stop xxxxx # 停止服务
    • systemctl start xxxx # 开启服务
    • systemctl status xxxx # 查看状态
    欢迎前往我的个人博客 www.runbrick.com,博客园同步更新。
  • 相关阅读:
    windows安装php的redis扩展及测试(适合php个各个版本)
    golang+linux+pipline
    泰勒展开式
    微积分
    矩阵
    learning rate warmup实现
    python asyncio as_completed
    python asyncio run_until_complete
    python asyncio 使用ThreadPoolExecutor和asyncio完成阻塞IO请求
    python asyncio call_soon, call_at, call_later
  • 原文地址:https://www.cnblogs.com/l5gw/p/10992958.html
Copyright © 2020-2023  润新知