V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
azev
V2EX  ›  问与答

centos-nginx 下部署多版本 PHP ,那 PHP -fpm 是如何定位对应版本的 PHP ?

  •  
  •   azev · 2019-07-11 22:56:41 +08:00 · 2076 次点击
    这是一个创建于 1964 天前的主题,其中的信息可能已经有所发展或是发生改变。
    或者应该说如何定位对应版本的 php-cgi ?

    目前只知道 nginx 可以通过不同的 fastcgi_pass 文件(或者端口)对应不同版本的 php-fpm
    但是 php-fpm 怎么定位对应版本的 php(-cgi)呢?
    看 php-fpm 中没有关于 php(-cgi)的配置节点啊
    22 条回复    2019-07-12 15:44:16 +08:00
    msg7086
        1
    msg7086  
       2019-07-11 23:11:39 +08:00
    PHP-FPM 就是 PHP 啊,为什么要去定位别的 PHP/PHP-CGI 呢。
    azev
        2
    azev  
    OP
       2019-07-11 23:20:31 +08:00
    @msg7086 多谢 这么说的话 确实能解释

    但是那个 php 文件和 php-cgi 文件目前是做什么用呢?我看依然还存在那个文件
    starsriver
        3
    starsriver  
       2019-07-11 23:23:25 +08:00 via Android
    fpm 可以认为是 cgi 的优化部件,cgi 是基础啊,毕竟命令行组件不能丢。以及没有定位一说。

    可以通过路径对应版本

    可以装多环境,cgi 也多版本
    azev
        4
    azev  
    OP
       2019-07-11 23:29:03 +08:00
    @starsriver 多谢
    如果 php-cgi 是必需的基础,那 fpm 是不是得知道怎么找到他然后执行?
    lhx2008
        5
    lhx2008  
       2019-07-11 23:35:34 +08:00 via Android
    starsriver
        6
    starsriver  
       2019-07-11 23:37:03 +08:00 via Android
    @azev fpm 是编译在 php 核心的, cgi 也是,为什么会找不到呢。。和版本是对应的,你如果不理解,就先认为是一个相对的固定路径吧
    azev
        7
    azev  
    OP
       2019-07-11 23:49:27 +08:00
    " fpm 是编译在 php 核心的, cgi 也是 "这个能再解释下吗?


    因为现在看到是三个独立的文件
    sbin/php-fpm
    bin/php
    bin/php-cgi
    azev
        8
    azev  
    OP
       2019-07-11 23:50:40 +08:00
    @msg7086
    是不是说 php 文件和 php-cgi 文件实际上是可以删除的?对一个 php 网站并没有影响?
    msg7086
        9
    msg7086  
       2019-07-12 05:01:02 +08:00
    @azev 你可以看看这三个文件分别有多大。

    PHP-FPM 虽然叫 FP 管理器,但其实他自己就是 PHP,运行以后自己 Fork 一堆就能跑了。
    他不是去找其他的 PHP 然后再启动其他进程的。

    当然,PHP 5.4 之前 FPM 结构和现在不同。之前仅仅是一个 FCGI 管理器,需要 CGI 才能跑。

    所以,现在如果要部署多版本 PHP,那就要部署多版本的 PHP-FPM,每个版本监听一个套接字,然后 Nginx 通过转发到不同套接字来支持多个版本。
    azev
        10
    azev  
    OP
       2019-07-12 08:40:02 +08:00
    @msg7086
    多谢 我看了下 大小是这样

    -rwxr-xr-x 1 root root 4.5M Oct 31 2018 php
    -rwxr-xr-x 1 root root 4.4M Oct 31 2018 php-cgi
    -rwxr-xr-x 1 root root 4.7K Oct 31 2018 phpize

    -rwxr-xr-x 1 root root 4.5M Oct 31 2018 php-fpm

    这是说这三个基本是同一个程序?
    这样是不是重复了不少代码?
    msg7086
        11
    msg7086  
       2019-07-12 08:45:02 +08:00
    @azev 嗯,核心都全的,就是外部接口不一样。
    azev
        12
    azev  
    OP
       2019-07-12 08:56:38 +08:00
    @msg7086 多谢 这样基本清楚了

    还有个问题 这个 fpm 如何确定相应的 php.ini 呢?
    VD
        13
    VD  
       2019-07-12 09:58:52 +08:00
    @azev 你查下 PHP 编译参数,即可知晓。
    azev
        14
    azev  
    OP
       2019-07-12 10:30:34 +08:00
    @msg7086
    刚才测试了下
    没有去 yum 安装 php
    只 yum 安装了 php-fpm
    然后 php 文件解析没有任何问题

    现在 yum 还能安装 php 只是为了保持一个系统兼容?
    azev
        15
    azev  
    OP
       2019-07-12 10:31:39 +08:00
    @VD 多谢
    不过目前我的情况貌似是需要显式指定 php.ini 文件位置
    因为要部署两套 php-fpm
    VD
        16
    VD  
       2019-07-12 10:34:20 +08:00
    @azev -h 有答案
    azev
        17
    azev  
    OP
       2019-07-12 10:51:24 +08:00
    @VD 多谢
    是不是启动 php-fpm 时加上 -c 参数?
    sarices
        18
    sarices  
       2019-07-12 10:55:39 +08:00
    phpfpm 监听不同端口就好了,如果只是测试,直接跑 docker 部署到对应端口
    azev
        19
    azev  
    OP
       2019-07-12 11:45:20 +08:00
    @sarices 嗯 docker 这个可行
    azev
        20
    azev  
    OP
       2019-07-12 11:59:43 +08:00
    @msg7086
    5.3 版本下 fpm 和 php 是分开的?这时需要定位 php 吗?
    msg7086
        21
    msg7086  
       2019-07-12 13:59:21 +08:00
    fpm 可以通过 service 文件里的参数指定配置文件,也可以用编译时指定的默认地址。

    https://linux.die.net/man/8/php-fpm
    --fpm-config file
    Specify alternative path to FastCGI process manager configuration file (the default is /etc/php-fpm.conf)

    5.3 的话 FPM 还没有整合进 PHP 吧。

    CentOS 下部署的话还是不建议自己强行安装多个版本。
    CentOS 这个发行版,要么你就完全跟着官方走(即跟着官方的方案和版本混),要么如果你有自己的运维团队的话可以自己编译打包然后用包管理来安装。
    CentOS 8 支持模块化安装以后,装同一个软件的多个版本就轻松多了。
    azev
        22
    azev  
    OP
       2019-07-12 15:44:16 +08:00
    @msg7086
    多谢 看到了 通过-y 或者--fpm-config 指定 php-fpm.conf
    通过 -c 指定 php.ini
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1154 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 18:46 · PVG 02:46 · LAX 10:46 · JFK 13:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.