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

来源:https://www.cnblogs.com/qiangshangkeji/archive/2020/06/05/13050372.html
-Advertisement-
Play Games

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


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。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一:背景 1. 講故事 在我們的一個全記憶體項目中,需要將一家大品牌店鋪小千萬的trade灌入到記憶體中,大家知道trade中一般會有訂單來源,省市區 ,當把這些欄位灌進去後,你會發現他們特別侵蝕記憶體,因為都是字元串類型,不知道大家對記憶體侵蝕性是不是很清楚,我就問一個問題。 Question: 一個空字 ...
  • 背景 Read the fucking source code! --By 魯迅 A picture is worth a thousand words. --By 高爾基 說明: Kernel版本:4.14 ARM64處理器,Contex-A53,雙核 使用工具:Source Insight 3. ...
  • 之所以要延遲多少秒做健康狀態檢查是因為,docker運行為容器以後,會立刻把該容器的狀態標記為running狀態,而對於有些初始化比較慢的容器,如果馬上對它做健康狀態檢查,可能是不健康的狀態,這樣一來我們對瞭解容器是否健康就不是很準確了;如果配合某些工具,很可能存在檢測到容器不健康就把該容器刪除,... ...
  • 樹莓派預設是不帶顯示屏的,如果想要查看系統的一些信息,需要使用電腦登錄到樹莓派,或者通過 HDMI 連接外接顯示器查看。這樣做總是有點麻煩,我們可以通過外接一個 OLED 屏來顯示一些關鍵參數或者圖片。本文將詳細介紹操作方法。 OLED 模組介紹 OLED 屏主要有兩種:128×32 和 128×6 ...
  • 之前曾經使用 epoll 構建過一個輕量級的 tcp 服務框架: 一個工業級、跨平臺、輕量級的 tcp 網路服務框架:gevent 在調試的過程中,發現一些 epoll 之前沒怎麼註意到的特性。 a) iocp 是完全線程安全的,即同時可以有多個線程等待在 iocp 的完成隊列上; 而 epoll ...
  • linux修改環境變數分析 echo $PATH #查看環境變數 臨時添加環境變數: export PATH=/home/cqh:$PATH 重新echo PATH出現新添加的路徑說明添加PATH成功 ,註意:路徑以:PATH結尾代表保留原來的環境變數上述方法的PATH在當前終端關閉後就會消失,所以 ...
  • 這裡分享嵌入式領域有用有趣的項目/工具以及一些熱點新聞,農曆年分二十四節氣,希望在每個交節之日準時發佈一期。 ...
  • 編譯安裝apache2.2對應的mod_proxy_fcgi.so模塊步驟,因為使用apache--phpfpm 需要這個 #mod-proxy-fcgi-master 模塊步驟 [root@iZ25ja2kaemZ apache]# wget https://github.com/ceph/mod ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...