【问题标题】:What is right approach of automatic deployment of Angular app? (Angular Cli, express, digital ocean droplet)Angular应用程序自动部署的正确方法是什么? (Angular Cli、express、数字海洋水滴)
【发布时间】:2018-07-01 02:24:18
【问题描述】:

我正在使用 Angular Cli 开发一个 Angular 应用程序。还使用 express 应用程序作为后端服务器。 我在带有 Ubuntu 16.04 的 DigitalOcean droplet 上有一个 BitBucket 存储库和一个生产服务器 所以我的项目文件夹结构很简单:

- src - angular app sources
- server - express app

因此,当我进行生产构建时,Angular Cli 会将所有文件编译到 server/public 文件夹(我已将默认 dist 替换为 angular-cli.json 中的 outDir)

我在这里看到了两种将我的应用部署到生产服务器的方法:

1) 只需将整个项目推送到 BitBucket 上的远程存储库 (不包括server/public - 否则这不是最佳做法, 对吗?),然后将其克隆到我的 droplet 上,安装所有依赖项, 创建生产版本并通过 pm2 运行它

2) 在我的本地机器上创建生产版本,然后只复制 server 文件夹到 droplet,只安装生产依赖 express 应用程序需要,并通过 pm2 运行它

我想通过创建一些脚本或其他东西使这个过程变得简单和自动化。

是的,我知道这两种方式都是可能的,但由于我是开发 SPA 的新手,我没有任何经验,可能看不到这两种方式的一些隐藏的利弊。

现在我认为第二个更正确,因为在我的生产服务器上不会安装任何额外的文件、依赖项和进程,只是应用程序运行所需的那些。但!我还没有找到任何使用这种方法的教程。

最佳做法是什么?

【问题讨论】:

    标签: angular express deployment angular-cli dev-to-production


    【解决方案1】:

    正确的做法是:视情况而定。正确的方法取决于您的设置/堆栈。您描述的方法可行,但无论如何都不会自动化,因为您仍在手动将文件复制到您的 Droplet。

    更好的方法是使用自动化工具,例如Travis CICircleCI。例如,我使用 Travis 进行个人站点自动化部署。我的.travis.yml文件可以在here找到。

    它的作用是:

    • 执行测试 npm 脚本。
    • 缓存node_modules,以加快构建速度。
    • 如果提交是标记提交,则执行部署步骤。
      • 在部署之前,它会为生产构建项目。

    现在我使用Firebase Hosting,因为我的个人网站只是一个使用Hugo 构建的静态网站。您需要编排步骤来封装重新部署到您的 droplet、重新启动 pm2 以及成功部署所需的任何其他过程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 2016-07-15
      • 1970-01-01
      • 2016-05-30
      • 1970-01-01
      • 2019-10-04
      相关资源
      最近更新 更多