1. 程式人生 > >使用Rancher在K8S上部署高效能PHP應用程式

使用Rancher在K8S上部署高效能PHP應用程式

## 介 紹 PHP是網路上最流行的程式語言之一,許多被廣泛使用的內容管理系統都使用它開發,如WordPress和Drupal,併為現代伺服器端框架(如Laravel和Symfony)提供核心程式碼。 儘管PHP很受歡迎,但是其緩慢和難以維護也是眾所周知的。近幾年這兩個毛病已經沒有那麼嚴重了,但是高效能的PHP應用程式依然會需要兩個功能:OPcache和PHP FastCGI程序管理器(PHP-FPM)。 在本文中,你將瞭解到在Kubernetes上如何使用自定義OPcache和PHP-FPM配置部署一個PHP應用程式以提高其效能。你將使用Rancher來部署一個PHP應用程式,該應用程式使用自定義環境變數來動態配置OPcache和PHP-FPM。我們將展示如何在你的Docker映象中構建PHP-FPM配置選項並在容器中使用環境變數調整它們。 ## 在PHP中的效能 首先,瞭解PHP應用程式中如何處理網路請求將對本文接下來的內容很有幫助。 PHP通常執行在web伺服器旁邊,處理請求並將它們傳送到PHP應用程式中。你可以使用PHP-FPM或mod_PHP來執行你的應用程式,但在本文中我們將使用PHP-FPM,因為其效能優勢並且NGINX是最常與PHP-FPM一起使用的web伺服器。 ![](https://oscimg.oschina.net/oscnet/up-97224a55017a62dd2f048c1e84e98899c33.png) ## OPcache介紹 OPcache通過在首次呼叫指令碼時將指令碼儲存在記憶體中來加速PHP應用程式。進而,隨後的請求將從記憶體而不是檔案系統載入,這可以使你的速度提高74%。 OPcache提供了一些設定,你可以調整這些設定來提高應用程式的效能和可靠性。在本篇教程中,你將瞭解到如何設定一個PHP Docker映象,該映象可以調整OPcache的記憶體限制、快取檔案數量以及重新驗證快取頻率。 ## PHP-FPM介紹 PHP-FPM(FastCGI程序管理器)會啟動一個或多個程序以執行你的PHP應用程式。與mod_PHP(將PHP捆綁為Apache模組)不同,PHP-FPM使你可以精確控制伺服器(或容器)執行的程序數量,以及它們應該如何啟動和停止。 找到一個理想的PHP-FPM配置高度依賴於你的應用程式以及它所服務的請求數量和容器中的記憶體和CPU限制。我推薦你閱讀Hayden James關於這個主題的文章(連結已放在文末)並且在負載測試環境下測試幾種不同的配置。 ## 在K8S上部署一個PHP應用程式 ### 前期準備 在你進行本篇教程之前,你需要做好以下準備: - 在你本地機器上安裝好的Docker - Docker Hub或其他Docker映象倉庫上的賬號 - Rancher部署(如果你還沒部署,可以按照[Quick start](www.rancher.cn/quick-start/ "Quick start")進行) - 通過[Rancher管理的Kubernetes叢集](https://rancher2.docs.rancher.cn/docs/cluster-provisioning/_index "Rancher管理的Kubernetes叢集") 在本教程中使用的所有程式碼都可以在[Github中獲取](https://github.com/karllhughes/rancher-php "Github中獲取"),或者你可以按照以下步驟從頭開始構建應用程式。 ### PHP應用程式 你將要使用的應用程式是一個顯示當前日期的PHP檔案。建立一個新檔案並將其命名為`index.php`: ``` /php-fpm . ``` 接下來,將映象推送到Docker Hub: ``` dock