php多版本:已存在php5場景下,編譯安裝php7,實現apache2.2--php-fpm7通訊

php多版本:已存在php5場景下,編譯安裝php7,實現apache2.2--php-fpm7通訊php

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

tar xzvf php-7.2.31.tar.gznginx

cd php-7.2.31web

 ./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-fileinfosql

# --disable-fileinfo  加入這行 不然有時候報錯在make install的睡時候報錯   make: *** [ext/fileinfo/libmagic/apprentice.lo] Error 1apache

makevim

make install微信

 

#php命令地址 /usr/local/php746/bin/php 能夠用/usr/local/php746/bin/php -v查看版本號  注意不要直接使用php,若是是多版本php的話php這個命令調用的是環境變量中的phpphp7

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

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。

相關文章
相關標籤/搜索