在本地开发 Strapi 并部署到生产服务器上

Developing Strapi locally and deploy on production server

我将 Strapi 用作我网站的无头 cms。首先,我只在生产环境中启动了一个版本,没有开发或暂存等其他环境。因此,当我想更改模型(集合和单一类型等)时,我必须在开发模式下将服务器切换到 运行 才能进行更改。因此,在进行这些更改时,生产环境也会 运行 停止服务。几天后,该应用程序在尝试更新数据库时崩溃了,并且再也没有启动过。
所以现在我非常需要将开发环境与生产环境分开。但是我有一些关于如何做到这一点的问题,并且找不到解决方案:

  1. 如果我在本地或在单独的开发环境中开发应用程序,我应该如何运行将新模型传输到服务器?
  2. 生产环境数据是否在迁移过程中保留下来?
  3. 我是否应该在每次部署(迁移)过程中从生产环境数据创建备份?

经过很长时间阅读文档并按照之前提出的问题进行操作后,我发现这个问题之前已经在这里提出过:Running Strapi in production and version control sync issues and had no accepting answer and also discussed on https://github.com/strapi/strapi/issues/1986 and finally every one waiting for strapi migrate feature which is not even planned for future. There was another way which was a little hopeful to dump and restore configuration on dev and prod environments in https://strapi.io/documentation/developer-docs/latest/developer-resources/cli/CLI.html#strapi-configuration-dump 虽然我还没有测试过。我继续阅读有关无头 CMS 的文章,发现让开发人员在代码中定义模型的 Keystonejs 和 Payloadjs 等解决方案更加稳定、可维护和可扩展,因此我现在切换到 Keystonejs。

我们从暂存到生产的迁移方式是查看 Strapi 项目中提交之间的文件差异(例如模型等),然后将修改后的文件移动和替换到生产服务器。

我们没有迁移数据。

它不是无缝的,但对我们有用。

因此,当您在项目的开发生命周期中谈论迁移时,需要考虑两件事:

  • 架构迁移
  • 内容迁移

架构迁移由 strapi 自动处理。您可以只在本地更新架构文件并将它们移至生产环境(如 Shekhar 建议的那样)。

另一件事是内容迁移。 Strapi 建议使用早就应该使用的 migrate CLI。我等不及了,所以我通过一个名为 config-sync 的插件自己构建了这个功能。 此插件可与 Strapi v4 一起使用,以通过 CLI 或 GUI export/import 数据并跨环境迁移它们。

希望这可以帮助您在 Strapi 中构建可靠的开发工作流程。