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

轻松部署PHP应用程序与Deployer

Joseph Gordon-Levitt
发布: 2025-02-15 08:54:12
原创
858 人浏览过

>本文已针对最新的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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板