如何使laravel 4应用程序自我更新?

时间:2014-03-07 17:47:16

标签: version-control laravel self-updating

我正在构建一个小型cms,我想为它做一个自我更新功能。 (像WordPress这样的东西,但说实话,我不知道它是如何工作的)

所以我现在就在这里:

  • 每次客户端登录时,都会向我发送一个curl post请求 服务器,发送当前版本的cms,进行一些认证 数据,现在就是全部。
  • 响应回来了,它有一个新版本我得到关于它的完整描述,在客户端的前端显示它,如果他想要更新,我下载一个zip文件。

这就是我被困住的地方。我不知道这是不是好方法,即便如此,我该怎么办呢。

  • 下载后,我想解压缩它,用新的文件覆盖旧文件,并进行必要的更改,也许进行一些迁移等等。
  • 制作一些日志,备份,并在完成所有操作后以某种方式检查,以确保一切正常。 (不知道是否可能)

所以可以请有人给我一些指示,想法,任何建议将不胜感激。

1 个答案:

答案 0 :(得分:4)

单向是使用我创建的这个包:https://github.com/antonioribeiro/deeployer。它背后的想法是每次执行git push到github或bitbucket时更新您的应用程序。由于它使用了Taylor的Laravel Envoy Task Runner,因此更新您的应用程序非常简单:

查看此页面,了解如何安装Laravel Envoy Task Runner:http://laravel.com/docs/ssh#envoy-task-runner

在您的应用程序上安装Deeployer:

composer require pragmarx/deeployer dev-master

创建一条进行自我更新的路线:

Route::post('deploy', function() 
{
    return Deeployer::run();
});

使用更新命令在应用程序的根目录中创建文件Envoy.blade.php

@task('https://github.com/you/repo-name:master', ['on' => ['localhost']])
    git pull origin master
    composer dump-autoload --optimize
    php artisan migrate
@endtask

然后你只需要在你的应用程序中添加一个webhoot:

https://github.com/yourname/yourapplication/settings/hooks

指向你的路线:

http://yourdomain.com/deploy