PHP部署調優 自動部署工具

2022-09-12 01:06:25 字數 4211 閱讀 1300

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。

更多 capistrano 鉤子資訊請參考 capistrano 官網:

部署應用

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

cap production deploy
回滾應用

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

cap production deploy:rollback
其他常用部署工具

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

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

MySQL部署工具 自動化部署工具Syncd介紹

特性go語言開發,編譯簡單 執行高效 web介面訪問,互動友好 許可權模型靈活自由 支援自定義構建 支援git倉庫 支援分支 tag上線 部署hook支援,可擴充套件性強 完善的上線工作流 郵件通知機制 部署流程 這是我自己通過測試發現的syncd部署上線的流程,看完這個流程再結合自己的需求是否使用...

部署和調優 1 5 vsftp部署和優化 1

系統自帶的ftp服務軟體。vsftpd 安裝vsftpd yum install y vsftpd 啟動vsftpd etc init.d vsftpd start 如果啟動失敗,可能是埠被占用,所有的ftp服務都占有21埠 netstat lnp killall pure ftpd 預設的ftp服...