4

问题:将 Play 应用程序部署到Windows Azure Cloud Services(不是虚拟机)的方式是什么?

背景:我需要将小型应用程序部署到 Azure,我想使用常用的dist打包方法来做到这一点(它创建包含所有必需*.jar文件的文件夹 + 可以在安装了 JDK 的任何系统上运行的启动脚本)。需要补充一点,我不想使用Starter Kit for Java+ WAR 包装,因为...我正在使用,所以我需要购买/使用 Windows 的下一台机器来完成这项任务(该套件仅适用于 Win )。

不幸的是,我没有使用 Azure 服务的经验。如果我混合的东西太多,或者如果没有 WAR + Kit 是不可能的,请告诉我;)

4

2 回答 2

5

对于在比利时举行的 Devoxx 会议,Steve Marx 创建了一个带有 Play 框架的 Scala 应用程序,该应用程序在 Windows Azure 上运行。这不是使用适用于 Java 的 Starter Kit,而是使用packageanddeploy(打包 Azure 应用程序的简单脚手架)。

阅读他的博文“在 Windows Azure 中使用 Scala 和 Play Framework ”或查看github上的项目。

但是有一个小问题,这也使用了我认为在 Mac 上没有其他选择的cspack.exe 。cspack 用于创建您将部署到 Windows Azure 的包。现在我不认为这是一个表演终结者。

在他的博文中,Steve 谈到了下载 Java 和 Play 框架的WorkerRole\downloadstuff.ps1文件。您可以扩展它来下载您的应用程序(打包在一个 zip 文件中)。这样,您的包将是非常静态的(只需几个脚本,将下载实际应用程序),并且您无需在每次部署时都运行 cspack。

现在,如果您不想购买 Windows 机器,您可以执行以下操作:

  1. 根据 Steve 的博客文章,修改 downloadstuff.ps1 以同时从 blob 存储下载您的应用程序。
  2. 将应用上传到 Blob 存储
  3. 创建虚拟机
  4. 使用 RDP 连接到该 VM 并安装 Azure SDK、工具、...
  5. 使用 cspack 创建一个包(查看 packageanddeploy 项目)以创建一个包含所有脚本的静态包。
  6. 删除虚拟机,现在你有了不再需要的包
  7. 将包部署到云服务,这将运行您的脚本,触发您的应用程序的下载,您将拥有一个正在运行的应用程序。
  8. 每次要部署时,只需将应用的新版本上传到存储帐户,然后重新部署静态包,无需使用 Windows
于 2012-08-22T14:37:20.733 回答
1

据我所知,云服务(PaaS)包只能由 Windows 制作,所以目前 Windows 机器是必需的。

Visual Studio 可能是创建自己的云服务最简单的工具,但您需要学习 VS 和非标准方法来制作 Azure 应用程序。这可能是一项相当大的投资。

您可以从 Eclipse 中的 Azure 插件执行 cmd 安装和启动应用程序(不仅是基于 WAR 的 Java EE 应用程序)。如果您已经了解 Eclipse,这可能是构建云服务包的快速方法。

如果您选择了 Eclipse 方式,您可以这样构建自己的应用程序镜像:

  1. 创建一个新的 Azure 项目,不要指定应用服务器和 JVM。
  2. 查看示例启动脚本(基本上它解压缩 jvm、应用程序服务器,将战争移动到部署文件夹并启动应用程序服务器)。应用服务器和其他应用程序的步骤类似:安装并启动它,startup.cmd 文件可以为您的应用程序执行此操作。
  3. 制作类似的脚本来安装您的应用程序:解压缩 jvm、应用程序或包管理器。将每个元素放在正确的位置,然后启动您的应用程序(不要忘记通过 start 命令调用它以确保启动脚本完成)

当您了解它的工作原理后,您应该尝试通过将存档放在 Blob 支持中并在启动期间下载它们来使您的 Azure 包更加灵活。相信我,这将提高开发效率。在第二步中,您可以通过下载可以在 ServiceConfiguration.csfg 文件中指定的其他脚本或配置文件来配置启动脚本,从而限制 Windows 机器的启动...

于 2012-08-22T19:54:35.437 回答