0

我正在构建一个小型 cms,我想对其进行自我更新功能。(类似 WordPress 的做法,但老实说,我不知道它是如何工作的)

所以这就是我现在的位置:

  • 每次客户端登录时,都会向我的服务器发送一个 curl 发布请求,发送当前版本的 cms、一些身份验证数据,目前仅此而已。
  • 回复回来了,并且有一个新版本,我得到了关于它的完整描述,在前端显示给客户端,如果他想更新,我下载一个 zip 文件。

这就是我卡住的地方。我不知道这是否是好方法,即使是这样,我应该如何进行。

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

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

4

1 回答 1

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

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

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

指向您的路线:

http://yourdomain.com/deploy
于 2014-03-07T18:26:39.960 回答