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 [email protected]
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,
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/61689.html
標籤:Linux
上一篇:php安裝擴展時報錯:make: *** [mbstring.lo] Error 1,解決方案
下一篇:編譯安裝apache2.2對應的mod_proxy_fcgi.so模塊步驟,因為使用apache--phpfpm 需要這個
