首頁 > 後端開發 > php教程 > 輕鬆部署PHP應用程序與Deployer

輕鬆部署PHP應用程序與Deployer

Joseph Gordon-Levitt
發布: 2025-02-15 08:54:12
原創
886 人瀏覽過

>本文已針對最新的Deployer版本進行了更新(截至2017年3月26日)。


自動化開發工作流程,包括測試,代碼樣式和系統檢查,是一種常見的做法。 部署自動化,將新的應用程序版本轉移到生產也同樣重要。 方法範圍從手動FTP上傳到復雜的工具,例如Phing和Laravel的Envoyer。本文介紹了Deployer,這是一種強大的PHP部署工具。 >

Easy Deployment of PHP Applications with Deployer

> Deployer的關鍵功能:>

Dewloyer是一種基於PHP的工具自動化PHP應用程序部署。它支持SSH身份驗證,允許指定部署服務器,並使用
    >命令執行已定義的任務。 通過管理版本並將服務器root鏈接到代表最新版本的目錄來實現
  • 零下的部署。這消除了部署期間服務器維護模式的需求。 dep
  • >預滿了普通PHP應用需求的任務,並且存在於流行框架(Laravel,Symfony,yii,Zend)的預配置食譜。 任務允許恢復到以前的版本。 current
  • >示例應用程序:
  • rollback
  • >演示使用了部署到Digitalocean液滴的上一篇文章中的應用程序。 源代碼可在github上找到(鏈接省略了,因為它在原始文本中沒有提供)。

>安裝:

> Deployer作為PHAR文件分佈。下載並選擇將其移至系統的BIN目錄以獲取全局訪問(有關詳細信息,請參見文檔):

>服務器配置:

克隆演示存儲庫後,創建
mv deployer.phar /usr/local/bin/dep
chmod +x /usr/local/bin/dep
登入後複製
登入後複製
以定義部署步驟。 首先定義服務器。 基本用戶名/密碼身份驗證:

>指定服務器類型(登台,生產)將任務定位到特定環境:>

使用階段時,

deploy.php至關重要;否則,會發生錯誤。 注意:php 7允許組合

語句(
// deploy.php

server('digitalocean', '104.131.27.106')
    ->user($_ENV['staging_server_user'])
    ->password($_ENV['staging_server_password']);
登入後複製
登入後複製
)。

>

// deploy.php
use function Deployer\set;
use function Deployer\server;

set('default_stage', 'staging');

server('digitalocean', '104.131.27.106')
    ->user($_ENV['staging_server_user'])
    ->password($_ENV['staging_server_password'])
    ->stage('staging')
    ->env('deploy_path', '/var/www');
登入後複製
登入後複製
ssh身份驗證:

default_stage 建議生產useSSH密鑰驗證。 (如果需要,請參閱SSH密鑰設置指南。)use function Deployer{set, server};>

>默認為>。 如有必要,自定義路徑:

> Deployer支持各種SSH連接方法,默認為本機系統命令。
// deploy.php
use function Deployer\{set, server};

set('default_stage', 'staging');

server('digitalocean', '104.131.27.106')
    ->identityFile()
    ->user($_ENV['staging_server_user'])
    ->password($_ENV['staging_server_password'])
    ->stage('staging');
登入後複製
登入後複製

ssh2擴展:identityFile() ~/.ssh/id_rsaPHP SSH2擴展提供了替代方案。 安裝並啟用它,然後需要

package and setherzult/php-sshssh_type>

mv deployer.phar /usr/local/bin/dep
chmod +x /usr/local/bin/dep
登入後複製
登入後複製
(注意:

>不包括在Deployer PHAR中;您可能需要構建自定義PHAR。)> herzult/php-ssh

yaml配置:

服務器可以在yaml文件()中定義,並使用

>:

加載 servers.yml serverList()

// deploy.php

server('digitalocean', '104.131.27.106')
    ->user($_ENV['staging_server_user'])
    ->password($_ENV['staging_server_password']);
登入後複製
登入後複製
任務定義:
// deploy.php
use function Deployer\set;
use function Deployer\server;

set('default_stage', 'staging');

server('digitalocean', '104.131.27.106')
    ->user($_ENV['staging_server_user'])
    ->password($_ENV['staging_server_password'])
    ->stage('staging')
    ->env('deploy_path', '/var/www');
登入後複製
登入後複製

任務是通過>命令執行的(例如,

)。

dep示例任務可能會上傳文件,運行服務器命令等:>> dep deploy:staging

// deploy.php
use function Deployer\{set, server};

set('default_stage', 'staging');

server('digitalocean', '104.131.27.106')
    ->identityFile()
    ->user($_ENV['staging_server_user'])
    ->password($_ENV['staging_server_password'])
    ->stage('staging');
登入後複製
登入後複製
方法將幫助文本添加到任務:

// deploy.php
    ->identityFile('path/to/id_rsa', 'path/to/id_rsa.pub', 'pass phrase')
登入後複製

>任務組織:desc()

// deploy.php
set('ssh_type', 'ext-ssh2');
// ...
登入後複製
>使用

鉤子將大型任務分解為較小的,可重複使用的任務:

before零下降時間部署:after

# servers.yml
digitalocean:
  host: 104.131.27.106
  user: root
  identity_file: ~
  stage: staging
  deploy_path: /var/www/
登入後複製
>使用

符號鏈接指向>目錄中的最新版本以避免停機時間:

current常見的任務和食譜:releases>

> Deployer提供常見的任務和特定於框架的配方(Laravel,Symfony等)。 使用常見任務的示例:
serverList('servers.yml');
登入後複製

>為簡潔起見,省略了部署配方和常見問題解答的其餘部分,因為它們在原始文本中得到了足夠的覆蓋。 關鍵概念和代碼示例已被解釋和重組,以清晰和簡潔,同時保持原始含義和結構。 這些圖像保留在其原始格式和位置。 >

以上是輕鬆部署PHP應用程序與Deployer的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板