`
xieye
  • 浏览: 830801 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

推荐使用php的部署工具 deployer

    博客分类:
  • PHP
阅读更多
php部署代码可以使用
https://deployer.org/

这个工具。功能非常强大。

可以:
自动执行脚本,例如数据库更新。
可以自动composer更新。
可以 自动清除opcache的缓存,
还可以平滑重启laravel 的守护进程。

下面放个例子,供参考

<?php
namespace Deployer;

require 'recipe/laravel.php';

require 'recipe/cachetool.php';


// 说明,命令中的 dep deploy,就是这个task,这个task包括多个子任务。
task('deploy', [
    'deploy:info',
    'deploy:prepare',
    'deploy:lock',
    'deploy:release',
    'deploy:update_code',
    'deploy:shared',
    'deploy:vendors',
    'deploy:writable',
    'artisan:storage:link',
    'artisan:view:cache',
    'artisan:config:cache',
    'artisan:optimize',
   // 'my:artisan:horizon:terminate',// 1127
    'deploy:symlink',
    'deploy:unlock',
    'cleanup',
]);


set('cachetool', '/tmp/php-cgi-72.sock');

// Project name,
set('application', '项目名称');

// Project repository
set('repository', 'git@XXXXX9/xxx.git');

// [Optional] Allocate tty for git clone. Default value is false.
set('git_tty', true); 

// Shared files/dirs between deploys 
add('shared_files', []);
add('shared_dirs', []);

// Writable dirs by web server 
add('writable_dirs', []);

set('envfile', '.env');
set('pemfile', 'private.pem');
set('http_user', 'www');


// Hosts
// x关键是那个sudo。
task('my:artisan:horizon:terminate', function () {
    run('sudo {{bin/php}} {{release_path}}/artisan horizon:terminate');
});


// 服务器a
host('host1.net')
    ->stage('host1') // 
    ->user('deployer')
    ->identityFile('~/.ssh/id_rsa')
    ->set('deploy_path', '/www/wwwroot/host1')
    ->set('envfile', '.env.host1')
    ->set('branch', 'host1');

// 服务器b
host('host2.net')
    ->stage('host2') 
    ->user('deployer')
    ->identityFile('~/.ssh/id_rsa')
    ->set('deploy_path', '/www/wwwroot/host2')
    ->set('envfile', '.env.host2')
    ->set('branch', 'host2');



// Tasks

// 定义一个上传 .env 文件的任务
desc('Upload .env file');
task('env:upload', function() {
    // 将本地的 .env 文件上传到代码目录的 .env
    upload(get('envfile'), '{{deploy_path}}/shared/.env');
});

desc('Upload pem file');
task('pem:upload', function() {
    // 将本地的 .env 文件上传到代码目录的 .env
    upload(get('pemfile'), '{{release_path}}/config/private.pem');
});


task('sey_hello', function() {
    // 
    writeln('<info>Upload OK!</info>');
});


// 自己定义的清除opcache 缓存的工具
// 要求项目自身的composer.json里有 gordalina/cachetool
task('my:cachetool:clear:opcache', function () {
    $releasePath = get('release_path');
    $options = get('cachetool');
    $fullOptions = get('cachetool_args');

    if (strlen($fullOptions) > 0) {
        $options = "{$fullOptions}";
    } elseif (strlen($options) > 0) {
        $options = "--fcgi={$options}";
    }
    cd($releasePath);
    run("{{bin/php}} ./vendor/bin/cachetool opcache:reset {$options}");
});




// 定义一个后置钩子,在 deploy:shared 之后执行 env:upload 任务
after('deploy:shared', 'env:upload');
after('env:upload', 'pem:upload');

after('env:upload', 'sey_hello');


task('build', function () {
    run('cd {{release_path}} && build');
});

// [Optional] if deploy fails automatically unlock.
after('deploy:failed', 'deploy:unlock');

// Migrate database before symlink new release.

before('deploy:symlink', 'artisan:migrate');
// 新增。
after('deploy:symlink', 'my:cachetool:clear:opcache');



假如想部署服务器A

dep deployer host1

假如想部署服务器A

dep deployer host2

假如想都部署
dep deployer host1 && dep deployer host2

整个部署过程一目了然,实在是居家旅行必备良药。

==========================

因为composer的原因,这里附带一个技巧。

composer.phar 和 composer符合链接,都必须放在/usr/bin目录下

因为deployer 会去找这个文件,如果没找到,每次拉库之前居然还要先远程安装
composer,耗费大量时间。



0
0
分享到:
评论

相关推荐

    Deployer一个用PHP编写的部署工具内置支持各种流行的框架

    Deployer是一个强大的自动化部署工具,完全用PHP编写,旨在简化和标准化Web应用程序的部署过程。这个工具具有广泛的功能,能够适应各种开发环境和项目需求,尤其对于PHP开发者来说,它是一个不可或缺的利器。...

    Laravel开发-deployer

    Deployer 是一个开源的 PHP 部署工具,由俄罗斯开发者 Andrey Akinshin 创建。它基于 PHP 编写,支持多种框架,包括 Laravel。Deployer 提供了一个强大的命令行接口,允许开发者编写易于理解和维护的部署脚本,这些...

    deployer:网站部署工具

    安装最简单的方法是使用Composer: { "require": { "bugbyte/deployer": "1.0.*" }}如果您不能或不想使用Composer(哦,快点..),您可以从GitHub下载,但是您必须自己加载文件。用法有关简单设置,请参见 。要求...

    Laravel开发-laravel-deployer

    `laravel-deployer`是一个专门针对Laravel框架的部署工具,基于`deployer`——一个通用的PHP部署解决方案。它的设计目标是使Laravel应用的部署变得自动化、标准化和可重复,从而提高开发团队的工作效率。 ### 使用...

    部署程序:Deployer是一个免费的开源部署工具

    Deployer是由提供支持PHP应用程序部署系统,由编写和维护。 查看,,和。 有关,和说明以及解答的信息,请参见 。 它能做什么 将应用程序部署到可通过SSH访问的多个服务器上 克隆项目的git存储库 安装作曲家依赖...

    开箱即用的支持流行框架的PHP部署工具___下载.zip

    标题中的“开箱即用的支持流行框架的PHP部署工具”指的是Deployer,它是一个强大的PHP部署解决方案,旨在简化和自动化PHP应用程序的部署过程。Deployer允许开发者以声明式的方式定义部署任务,支持多种常见的PHP框架...

    deployer-php-cli:使用流行的框架(Yii2,Laravel,CI3)支持的用PHP编写的CICD部署工具

    流行框架支持用PHP编写的CI / CD部署工具 产品特点 按项目/组部署到多台服务器 Yii2,Laravel,Codeigniter3框架支持 Git,Composer支持,源项目的任务 CI / CD解决方案 帮助开发人员将代码从本地实例部署到远程...

    deploy:Dockette部署工具(Deployer Ansible)

    【Dockette部署工具与Deployer Ansible简介】 在IT行业中,自动化部署是现代Web应用程序开发和运维过程中的重要环节,它可以显著提高效率并减少人为错误。Dockette部署工具和Deployer Ansible都是用于自动化部署的...

    deployer-php-action:使用来自Github Actions的Deployer部署PHP项目

    deployer-php GitHub操作是PHP的开源零停机时间部署工具。 通过为您进行所有设置,该操作使使用轻松部署php服务。该动作做什么启动ssh-agent 将您的部署SSH私钥加载到代理中使用您提供的密钥来配置known_hosts (或...

    用PHP编写的部署工具,支持开箱即用的流行框架-PHP开发

    您可以使用简介Deployer是用PHP编写的部署工具。 有关更多信息和文档,请参见deployer.org。 通过要求PHP 5.5.0及更高版本支持Deployer开发。 就这样! 您可以启用套接字以通过并行部署加快部署过程。 安装要安装...

    Deployer:开箱即用的支持流行框架的部署工具-开源

    用 PHP 编写的部署工具,支持开箱即用的流行框架。 Deployer 是一个 cli 工具,用于部署任何 PHP 应用程序,包括 Laravel、Symfony、Zend Framework 等框架。 Deployer 的主要概念是 recipe,一个包含任务定义的 php...

    codeigniter-deployer:CodeIgniter 3.0的部署工具

    CodeIgniter部署器 3.0的部署工具。 您可以使用一个命令部署CodeIgniter。 这基于 3.0。资料夹结构 codeigniter/└── deploy/ ├── deploy.php ... config file for Deployer ├── deploy.sh ... script to ...

    LaravelDeployer

    **Laravel Deployer** 是一个专门针对 Laravel 框架的自动化部署工具,它使得 PHP 开发者能够更高效、更可靠地部署他们的 Laravel 应用程序。Laravel Deployer 基于 Deployer,一个通用的 PHP 部署解决方案,但针对 ...

    deployer:使用PHP编写的部署工具,开箱即用地支持流行的框架

    部署者用PHP编写的部署工具,支持开箱即用的流行框架。 有关更多信息和文档,请参见 。贡献您想为这个项目做贡献吗? 开始处理其中之一: 改善或文档修复其中一个添加新功能!维护者安东·梅德韦杰夫(Anton ...

    magedeploy2:使用Deployer进行Magento2部署

    MageDeploy2 使用Robo和... 可以在magedeploy2.php中配置这些工具的路径安装使用composer安装composer require mwltr/magedeploy2基于项目安装robo和deployer composer require consolidation/robocomposer requ

    用PHP部署PHP。 受Capistrano和Vlad的启发。-PHP开发

    Pomander一种轻巧灵活的部署工具,用于部署Web应用程序。 该项目的灵感来自Capistrano和Deployer Vlad,并且建立在Rake克隆版本Phake的顶部。 该项目来自Pomander一个轻型灵活的部署工具,用于部署Web应用程序。 该...

    deployer-magento2::gear:通过此部署者食谱更快,更轻松地部署您的Magento 2

    在您的Magento 2服务器中部署和运行自动化命令的简便工具。 如何安装 如何安装 : curl -LO ...

    magedeploy2-base:带Deployer的Magento2部署(Skeleton)

    MageDeploy2基础使用Robo和Deployer的Magento2部署设置。 这是您应基于部署的基础项目。 它提供了可配置和可自定义的设置来为Magento2创建推送部署。入门要求部署者/部署者合并/机器人mwltr / magedeploy2 netz98 / ...

    ansible-deployer-in:安装 deployer.in 的 Ansible 角色(PHP 部署器)

    部署者.in 是一个用 PHP 编写的部署工具,它简单实用。 将您的代码部署到您想要的所有服务器,它支持通过复制、或通过 VCS(如 git)或通过 rsync 进行部署。 在您的所有服务器上运行您的任务,或者使用我们的 ...

Global site tag (gtag.js) - Google Analytics