php佈署 群輝 PHP部署調優 自動部署工具

2021-10-22 10:55:21 字數 3630 閱讀 9859

php **早期使用 ftp 部署到生產環境,不過這種方式顯然不適合集群部署,也不安全,本教程主要討論如何使用現代化工具自動部署,這種方式簡單、可預知結果,而且可逆。

版本控制

把**納入版本控制是現代開發人員的基本素養,我們可以使用 git,也可以使用 svn,對於應用開發者來說,版本控制有助於記錄**的變化,我們可以把乙個時間點的**標記為發布版本,可以回滾到之前的狀態,還可以在單獨的分支中實驗新功能,而不影響生產環境使用的**,更重要的是,版本控制有助於自動部署 php 應用。

自動部署

為了讓部署過程變得簡單、可預知結果和可逆,一定要自動部署應用,一旦實現自動化,我們無需再擔心複雜的部署過程。

讓部署變得簡單

應該只執行乙個簡單的命令就能部署應用。

讓部署的結果可預知

我們要讓部署的結果可預知,部署不應該有意料之外的***,如果出錯,部署過程會中止,而不影響現有的生產環境**。

讓部署可逆

如果不小心把有問題的**部署到生產環境,應該有個簡單的命令可以回滾到之前穩定的**版本,這是我們的安全保障。

capistrano

capistrano (是用於自動部署應用的軟體,能讓部署達到上面提到的三點要求,capistrano 執行在本地裝置中,通過 ssh 與遠端伺服器通訊,capistrano 本來是為了部署 ruby 應用而開發的,不過任何程式語言開發的應用都可以使用,包括 php。

capistrano 的工作原理

capistrano 會在遠端伺服器中儲存之前部署的應用,而且每次部署的版本放在各自的目錄中,capistrano 會維護五個或更多之前部署的應用,以防需要回滾到早前版本,capistano 還會建立乙個 current/ 目錄,通過符號鏈結指向當前部署的應用所在的目錄,在生產伺服器中,capistrano 管理的目錄結構類似如下所示:

home/

deploy/

current/

releases/

release1/

release2/

release3/

release4/

release5/

把新版應用部署到生產環境時,capistrano 首先從應用的 git 倉庫獲取最新**,然後把應用的**放到 releases/ 目錄中的乙個新子目錄中,最後把 current/ 目錄的符號鏈結指向這個新目錄。讓 capistrano 回滾到之前的版本時,capistrano 會把 current/目錄的符號鏈結指向 releases/ 目錄中存放之前版本的子目錄。capistrano 是一種優雅且簡單的部署方案,能讓 php 應用的部署過程變得簡單、可預知結果和可逆。

安裝capistrano 應該安裝在本地裝置中,別在遠端伺服器中安裝,安裝時還需要 ruby 和 gem,os x系統預設已經有了,執行下述命令安裝 capistrano:

gem install capistrano

配置安裝好 capistrano 之後,在使用之前,必須初始化專案,開啟終端,進入專案的最頂層目錄,執行下述命令:

cap install

這個命令會建立乙個名為 capfile 的檔案,乙個名為 config/ 的目錄,以及乙個名為 lib/ 的目錄。現在,專案的最頂層目錄應該有下述檔案和目錄:

capfile

config/

deploy/

production.rb

staging.rb

deploy.rb

lib/

capistrano/

tasks/

capfile 是 capistrano 的**配置檔案,會聚合 config/ 目錄中的配置檔案。config/ 目錄中存放的是各個遠端伺服器環境(如測試環境、預發環境、生產環境等)的配置檔案。

預設情況下,capistrano 假設你為應用搭建了多個環境,例如,可能有單獨的預發環境和生產環境。capistrano 在 config/deploy 目錄中為每個環境都提供了單獨的配置檔案,capistrano 還提供了 config/deploy.rb 配置檔案,這個檔案用於儲存所有環境通用的設定。

在本教程中,我們只使用 capitrano 的 web 角色,在 capistrano 中,角色的作用是把相關的任務組織在一起,只在屬於指定角色的伺服器中執行這些任務。

config/deploy.rb檔案

這個配置檔案包含所有環境通用的配置,本教程中,我們大多數 capistrano 設定都儲存在這個檔案中:

:repo_url:這是 git 倉庫的 url

:deploy_to:遠端伺服器中應用目錄的絕對路徑

:keep_releases:保留多少個舊版本,回滾用

config/deploy/production.rb檔案

這個檔案只包含生產環境的設定,這個檔案用於定義生產環境的角色,列出屬於各個角色的伺服器,我們只使用web 角色,而且只有乙個伺服器屬於這個角色,把 config/deploy/production.rb 檔案的內容替換成下述**(記得替換 ip 位址):

role :web, %w[[email protected]]

認證使用 capistrano 部署應用之前,我們必須在本地電腦和遠端伺服器之間,以及遠端伺服器和 git 倉庫之間建立認證,前面已經討論了如何使用 ssh 金鑰對在本地電腦和遠端伺服器之間建立認證,在遠端伺服器和 git 倉庫之間也要使用 ssh 金鑰對建立認證。

準備遠端伺服器

在部署之前,我們需要準備遠端伺服器,我們要通過 ssh 登入到遠端伺服器,建立乙個目錄存放部署的 php 應用。deploy 使用者必須有這個目錄的讀寫許可權,例如:

home/

deploy/

虛擬主機

依賴的軟體

遠端伺服器不需要 capistrano,但是需要 git,而且還需要執行 php 應用所需的全部軟體,我們可以執行以下命令安裝 git:

#ubuntu

sudo apt-get install git

#centos

sudo yum install git

capistrano的鉤子

capistrano 允許在部署應用過程中的特定時刻執行我們指定的命令,很多 php 開發者都使用 capistrano 管理應用的依賴,每次使用 capistrano 部署應用時,我們可以使用 capistrano 的鉤子安裝 composer 依賴。在 config/deploy.rb 檔案中新增以下**:

namespace :deploy do

desc "build"

after :updated, :build do

on roles(:web) do

within release_path do

execute :composer, "install --no-dev --quiet"

endend

endend

注:如果使用 composer 管理依賴,遠端伺服器中需要安裝 composer。

部署應用

正式部署應用之前,需要確保應用**已提交並推送到 git 倉庫,然後在本地電腦開啟終端,進入應用的最頂層目錄,執行下面的命令進行部署:

cap production deploy

回滾應用

如果不慎把錯誤**提交到生產環境,可以執行下面的命令回到之前的版本:

cap production deploy:rollback

其他常用部署工具

PHP部署調優 自動部署工具

php 早期使用 ftp 部署到生產環境,不過這種方式顯然不適合集群部署,也不安全,本教程主要討論如何使用現代化工具自動部署,這種方式簡單 可預知結果,而且可逆。版本控制 把 納入版本控制是現代開發人員的基本素養,我們可以使用 git,也可以使用 svn,對於應用開發者來說,版本控制有助於記錄 的變...

PHP部署調優 伺服器初始化配置

主機 php 應用開發好了之後,還需要部署到遠端主機上,才能讓使用者訪問我們提供的服務。一般來說,目前市場上提供的主機有四種 共享伺服器 虛擬私有伺服器 vps 專用伺服器和 paas。每種主機適用場景不同,相應的 差距也很大。共享伺服器 這種最便宜,一般來說這種適用於非開發者部署 比如非程式設計師...

關於php效能調優的幾條建議

最近在處理小魚社群的開發過程,遇到程式的效能問題,在解決這個問題的時候提出幾個建議 1 處理while foreach之類的迴圈要特別注意,因為這個迴圈可能是好幾千次的,所以裡面的每句語句都要注意執行速度,要精簡。還有個不好的習慣一定要注意,不要在這個中寫太長的程式,因為這可能讓你在幾百行的 中迷失...