>本文已针对最新的Deployer版本进行了更新(截至2017年3月26日)。
自动化开发工作流程,包括测试,代码样式和系统检查,是一种常见的做法。 部署自动化,将新的应用程序版本转移到生产也同样重要。 方法范围从手动FTP上传到复杂的工具,例如Phing和Laravel的Envoyer。本文介绍了Deployer,这是一种强大的PHP部署工具。
> Deployer的关键功能:>
Dewloyer是一种基于PHP的工具自动化PHP应用程序部署。它支持SSH身份验证,允许指定部署服务器,并使用dep
current
rollback
>安装:
> 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');
default_stage
建议生产use
SSH密钥验证。 (如果需要,请参阅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_rsa
PHP SSH2扩展提供了替代方案。 安装并启用它,然后需要
package and setherzult/php-ssh
:ssh_type
>
mv deployer.phar /usr/local/bin/dep chmod +x /usr/local/bin/dep
>不包括在Deployer PHAR中;您可能需要构建自定义PHAR。)herzult/php-ssh
服务器可以在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
>
serverList('servers.yml');
>为简洁起见,省略了部署配方和常见问题解答的其余部分,因为它们在原始文本中得到了足够的覆盖。 关键概念和代码示例已被解释和重组,以清晰和简洁,同时保持原始含义和结构。 这些图像保留在其原始格式和位置。>
以上是轻松部署PHP应用程序与Deployer的详细内容。更多信息请关注PHP中文网其他相关文章!