首页 >后端开发 >php教程 >轻松部署PHP应用程序与Deployer

轻松部署PHP应用程序与Deployer

Joseph Gordon-Levitt
Joseph Gordon-Levitt原创
2025-02-15 08:54:12886浏览

>本文已针对最新的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目录以获取全局访问(有关详细信息,请参见文档):

>服务器配置:

克隆演示存储库后,创建
<code class="language-bash">mv deployer.phar /usr/local/bin/dep
chmod +x /usr/local/bin/dep</code>
以定义部署步骤。 首先定义服务器。 基本用户名/密码身份验证:

>指定服务器类型(登台,生产)将任务定位到特定环境:>

使用阶段时,

deploy.php至关重要;否则,会发生错误。 注意:php 7允许组合

语句(
<code class="language-php">// deploy.php

server('digitalocean', '104.131.27.106')
    ->user($_ENV['staging_server_user'])
    ->password($_ENV['staging_server_password']);</code>
)。

>

<code class="language-php">// 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');</code>
ssh身份验证:

default_stage 建议生产useSSH密钥验证。 (如果需要,请参阅SSH密钥设置指南。)use function Deployer{set, server};>

>默认为>。 如有必要,自定义路径:

> Deployer支持各种SSH连接方法,默认为本机系统命令。
<code class="language-php">// 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');</code>

ssh2扩展:identityFile() ~/.ssh/id_rsaPHP SSH2扩展提供了替代方案。 安装并启用它,然后需要

package and setherzult/php-sshssh_type>

<code class="language-bash">mv deployer.phar /usr/local/bin/dep
chmod +x /usr/local/bin/dep</code>
(注意:

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

yaml配置:

服务器可以在yaml文件()中定义,并使用

>:

加载 servers.yml serverList()

<code class="language-php">// deploy.php

server('digitalocean', '104.131.27.106')
    ->user($_ENV['staging_server_user'])
    ->password($_ENV['staging_server_password']);</code>
任务定义:
<code class="language-php">// 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');</code>

任务是通过>命令执行的(例如,

)。

dep示例任务可能会上传文件,运行服务器命令等:>> dep deploy:staging

<code class="language-php">// 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');</code>
方法将帮助文本添加到任务:

<code class="language-php">// deploy.php
    ->identityFile('path/to/id_rsa', 'path/to/id_rsa.pub', 'pass phrase')</code>

>任务组织:desc()

<code class="language-php">// deploy.php
set('ssh_type', 'ext-ssh2');
// ...</code>
>使用

钩子将大型任务分解为较小的,可重复使用的任务:

before零下降时间部署:after

<code class="language-yaml"># servers.yml
digitalocean:
  host: 104.131.27.106
  user: root
  identity_file: ~
  stage: staging
  deploy_path: /var/www/</code>
>使用

符号链接指向>目录中的最新版本以避免停机时间:

current常见的任务和食谱:releases>

> Deployer提供常见的任务和特定于框架的配方(Laravel,Symfony等)。 使用常见任务的示例:
<code class="language-php">serverList('servers.yml');</code>

>为简洁起见,省略了部署配方和常见问题解答的其余部分,因为它们在原始文本中得到了足够的覆盖。 关键概念和代码示例已被解释和重组,以清晰和简洁,同时保持原始含义和结构。 这些图像保留在其原始格式和位置。>

以上是轻松部署PHP应用程序与Deployer的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn