从登台到现有生产Laravel应用

时间:2018-08-26 01:07:12

标签: database laravel production staging

嗨,各位主持人,

假设我已在生产服务器上部署了Laravel应用程序,如何在不影响生产数据的情况下修改和更新该应用程序?

假设我想发布应用程序的下一版本,其中包含针对表Users的其他几列。

问题是我应该将数据库从实时克隆到暂存吗? 即使有来自登台的其他表/列,在不影响生产数据库的情况下,修改登台应用程序并将其部署到生产环境的正确方法是什么?

当前,我运行两个不同的环境,删除生产表并从暂存导入。听起来效率不高。

从分阶段升级到生产的任何更好的主意?

谢谢!

不幸的是,我曾试图四处搜寻,但并没有带来好运。

1 个答案:

答案 0 :(得分:0)

  

假设我想发布应用程序的下一版本,其中包含用于表Users的其他几列。

是的,这样编写新的迁移:

Schema::table('users', function (Blueprint $table) {
    $table->string('email');  // Adding
    $table->string('name', 50)->change();  //Changing

});

要添加,更改类型,重命名和删除列,还必须安装:composer require doctrine/dbal

在文档中查看更多信息:https://laravel.com/docs/5.6/migrations#creating-columns

  

问题是我应该将数据库从实时克隆到暂存吗?即使有来自登台的其他表/列,在不影响生产数据库的情况下,修改登台应用程序并将其部署到生产环境的正确方法是什么?

     

...

     

从分阶段升级到生产的任何更好的主意?

我假设您正在使用Git。一台服务器,您可以放下应用程序一段时间,也许可以在较少用户使用系统时进行更新。

  1. 推送到存储库
  2. ssh到生产服务器
  3. php artisan down --message =“您关于更新的真棒消息” --retry = 60
  4. 备份您的数据库(以防万一!)
  5. git pull
  6. 撰写者更新
  7. php artisan迁移
  8. php artisan up

只需确保您的迁移总是回滚!

如果要在登台或开发过程中使用实际数据,则可以在迁移后进行另一次备份/转储。