zoukankan      html  css  js  c++  java
  • php多版本:已存在php5场景下,编译安装php7,实现apache2.2--php-fpm7通信

    php多版本:已存在php5场景下,编译安装php7,实现apache2.2--php-fpm7通信

    wget --no-check-certificate https://www.php.net/distributions/php-7.2.31.tar.gz

    tar xzvf php-7.2.31.tar.gz

    cd php-7.2.31

     ./configure --prefix=/usr/local/php746 --with-config-file-path=/usr/local/php746/etc --enable-fpm  --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd   --disable-fileinfo

    # --disable-fileinfo  加入这行 否则有时候报错在make install的睡时候报错   make: *** [ext/fileinfo/libmagic/apprentice.lo] Error 1

    make

    make install

    #php命令地址 /usr/local/php746/bin/php 可以用/usr/local/php746/bin/php -v查看版本号  注意不要直接使用php,如果是多版本php的话php这个命令调用的是环境变量中的php

    [root@iZ25ja2kaemZ bin]# /usr/local/php746/bin/php -v

    PHP 7.2.31 (cli) (built: Jun  4 2020 21:08:25) ( NTS )

    Copyright (c) 1997-2018 The PHP Group

    Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

    #php-fpm命令地址 /usr/local/php746/sbin/php-fpm   可以用/usr/local/php746/bin/php -v查看版本号

    #不要要直接使用php-fpm,如果是多版本php的话php-fpm这个命令调用的是环境变量中的php-fpm

    [root@iZ25ja2kaemZ sbin]# /usr/local/php746/sbin/php-fpm -v

    PHP 7.2.31 (fpm-fcgi) (built: Jun  4 2020 21:08:37)

    Copyright (c) 1997-2018 The PHP Group

    Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

    #测试php-fpm配置  命令为php-fpm -t,指定php-fpm的配置文件 php-fpm -y ,指定php-fpm的启动时候,php.ini的配置文件php-fpm -c

    #php-fpm的配置文件地址:/usr/local/php746/etc/php-fpm.conf.default  该文件会中会有include=/usr/local/php746/etc/php-fpm.d/*.conf 来引入www.conf

    #www.conf中可以配置 listen等监听地址 listen = 127.0.0.1:9000

    #fpm监听端口,即nginx中php处理的地址,一般默认值即可。可用格式为: 'ip:port', 'port', '/path/to/unix/socket'. 每个进程池都需要设置.

    #我们可执行

    #为了方便管理我们添加软连接

    mkdir /usr/local/php746/phprun

    ln -s /usr/local/php746/sbin/php-fpm  /usr/local/php746/phprun/php-fpm746

    ln -s /usr/local/php746/bin/php  /usr/local/php746/phprun/php746

    mkdir /usr/local/php746/phprun/php-fpm

    cp -r /usr/local/php746/etc/*  /usr/local/php746/phprun/php-fpm

    cp /root/php7/php-7.2.31/php.ini-production  /usr/local/php746/phprun/php.ini #复制一份php安装文件中的php配置文件过来方便管理,本应该在/usr/local/php746/etc生成php.ini 不知道为何没有生成

    #cp /root/php7/php-7.2.31/php.ini-development  /usr/local/php746/phprun/php.ini

    #重命名文件 /usr/local/php746/phprun/php-fpm/php-fpm.conf.default  为 php-fpm746.conf

    mv /usr/local/php746/phprun/php-fpm/php-fpm.conf.default /usr/local/php746/phprun/php-fpm/php-fpm746.conf

    #vim 修改配置文件/usr/local/php746/phprun/php-fpm/php-fpm.conf 最后一行的引入文件为 include=/usr/local/php746/phprun/php-fpm/php-fpm.d/*.conf,原来的是另一个路径,要注意

    #重命名文件

    mv /usr/local/php746/phprun/php-fpm/php-fpm.d/www.conf.default  /usr/local/php746/phprun/php-fpm/php-fpm.d/www.conf

    #vim /usr/local/php746/phprun/php-fpm/php-fpm.d/www.conf 修改监听端口127.0.0.1:9000 修改为127.0.0.1:9001

    #测试php-fpm746配置是否异常

    [root@iZ25ja2kaemZ php-fpm]# /usr/local/php746/phprun/php-fpm746 -y /usr/local/php746/phprun/php-fpm/php-fpm746.conf  -c /usr/local/php746/phprun/php.ini  -t

    [04-Jun-2020 22:20:00] NOTICE: configuration file /usr/local/php746/phprun/php-fpm/php-fpm746.conf test is successful

    #启动php-fpm 可见下面前后两次ps ,前面的是php-fpm开启的,是php-fpm5.6,后面执行php-fpm746之后,又开始了一个php-fpm746的主进程。从而实现2个php-fpm版本的php-fpm共存,注意这2个php-fpm可以通过监听不同的端口来实现区分。

    #每个php-fpm也可以启动等多个主进程,比如pphp-fpm746可以根据不同的-y参数指定不同的配置文件,从而启动多个不同的主进程。每个配置文件中可以是不同的端口号,但不能相互冲突,会报错。比如根据实际情况不同,我们可能需要对php-fpm746有不同的配置,比如php.ini和php-fpm.conf的配置,从而启动多个php-fpm主进程进行监听不同的端口。

    [root@iZ25ja2kaemZ php-fpm]# /usr/local/php746/phprun/php-fpm746 -y /usr/local/php746/phprun/php-fpm/php-fpm746.conf  -c /usr/local/php746/phprun/php.ini

    [root@iZ25ja2kaemZ php-fpm]# ps axu|grep php-fpm

    root      6109  0.0  0.2 136964  2884 ?        Ss   22:33   0:00 php-fpm: master process (/usr/local/php746/phprun/php-fpm/php-fpm746.conf)                

    nobody    6110  0.0  0.2 136964  2544 ?        S    22:33   0:00 php-fpm: pool www                                                                         

    nobody    6111  0.0  0.2 136964  2544 ?        S    22:33   0:00 php-fpm: pool www                                                                         

    root      8447  0.0  0.5 282000  5340 ?        Ss   22:41   0:00 php-fpm: master process (/etc/php-fpm.conf)

    apache    8448  0.0  0.4 282000  4960 ?        S    22:41   0:00 php-fpm: pool www

    apache    8449  0.0  0.4 282000  4960 ?        S    22:41   0:00 php-fpm: pool www

    apache    8450  0.0  0.4 282000  4960 ?        S    22:41   0:00 php-fpm: pool www

    apache    8451  0.0  0.4 282000  4960 ?        S    22:41   0:00 php-fpm: pool www

    apache    8452  0.0  0.4 282000  4964 ?        S    22:41   0:00 php-fpm: pool www

    apache    8453  0.0  0.4 282000  4964 ?        S    22:41   0:00 php-fpm: pool www

    apache    8454  0.0  0.4 282000  4964 ?        S    22:41   0:00 php-fpm: pool www

    apache    8455  0.0  0.4 282000  4964 ?        S    22:41   0:00 php-fpm: pool www

    root      8520  0.0  0.0 103256   840 pts/0    S+   22:41   0:00 grep php-fpm

    [root@iZ25ja2kaemZ php-fpm]# netstat -tanp |grep php-fpm  #可见前面2个主进程分别监控9000和9001端口

    tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      8447/php-fpm

    tcp        0      0 127.0.0.1:9001              0.0.0.0:*                   LISTEN      6109/php-fpm

    [root@iZ25ja2kaemZ php-fpm]#

    #我们可以用kill 进程号 来杀死某个php-fpm进程

    #环境变量

    #xport PATH=${PATH}:/A/B

    #但是/A/B/C/ 以及其它多级目录下的文件不能被任意地点执行,说明环境变量没有递归的效果。path当然没有递归了,否则我写一个path=/usr, 那不是要把usr目录全部找一遍

    #后期可以将该目录加入到环境变量   系统搜索命令是按环境变量顺序搜索的,搜到了就使用这个命令不往后搜了

    #将某个目录加入path

    echo "export PATH=/usr/local/php746/phprun:$PATH" >> /etc/profile

    source /etc/profile

    #我们在任意目录执行php746命令

    [root@iZ25ja2kaemZ xew]# php746 -v

    PHP 7.2.31 (cli) (built: Jun  4 2020 21:08:25) ( NTS )

    Copyright (c) 1997-2018 The PHP Group

    Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

    #apache 配置 modules/mod_proxy_fcgi.so 的安装参见 相关节点 apache扩展模块安装节点
    LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

    <VirtualHost *:80>
       ServerAdmin root@qq.bestbeijing.top
        DocumentRoot /newdata/web/web/cangyang.qiangshangkeji.com
        ServerName cangyangs.qiangshangkeji.com
        ServerAlias cangyang.qiangshangkeji.com
        ErrorLog logs/cangyangs.qiangshangkeji.com-error_log
        CustomLog logs/cangyangs.qiangshangkeji.com-access_log common

         ProxyPassMatch ^/(.*.php)$ fcgi://127.0.0.1:9001/newdata/web/web/cangyang.qiangshangkeji.com/$1
    </VirtualHost>

    作者王亚强注释:经验分享,帮助你我共同成长,期待一起交流微信chenyulilove。

  • 相关阅读:
    vim代码对齐
    在liunx中,快速查找到以前使用过的命令行
    linux文件权限与目录设置
    ASP常用代码
    存储过程
    WebService
    SNS
    浪曦博客系统
    SQL事件探查器与索引优化向导
    光盘AJAX
  • 原文地址:https://www.cnblogs.com/qiangshangkeji/p/13050372.html
Copyright © 2011-2022 走看看