当前位置: 首页 > 知识库问答 >
问题:

在AWS Elastic Beanstalk上部署windows服务和web应用

商弘义
2023-03-14

我们希望将 ASP.NET MVC Web 应用程序和 Windows 服务部署到弹性豆茎。我们使用.exe来处理 Web 应用程序的部署。该服务和 Web 应用程序共享配置和库。要部署服务,我的计划是:

  1. 将 Windows 服务 exe 包含在 Web 部署包 \bin 目录中,并将服务和 Web 应用程序一起部署
  2. 使用 .eb 扩展文件安装服务

但是,这似乎不起作用,因为在安装webdeploy包之前执行.ebextensions操作,因此无法安装service.exe。

看来我的选择是:

压缩service exe并将其发布到S3,以便它可以由安装。部署web应用程序时的ebextensions。

这并不理想,因为服务和 Web 应用共享依赖项配置。该服务需要使用一组单独的依赖项和配置进行安装,因为它需要启动并运行,然后才能更新 Web 应用程序。

使用不支持的部署后脚本技术,我需要将其转换为windows世界。

Windows 目录 = C:\程序文件\亚马逊\弹性豆茎\钩子\应用程序部署\post 那里有一个 .ps1 脚本文件。(是否支持 .cmd?

我们可以使用web部署包@"C:\cfn\ebdata\source_bundle.zip"作为源代码,解压缩它并从那里安装服务。问题是zip中的内部路径取决于用户机器的构建方式,因此在解压缩的文件结构中找到exe将很棘手。示例路径="Content\C_C\git部署\blah\blahSolution\blahProject\obj\awsTestDebug\Package\PackageTmp\bin\myservice.exe"

对采取哪种方法有什么建议吗?

接受Jim的建议,我使用了container_commands,效果很好。My.ebextensions/install。配置如下所示。。

...
container_commands:
  installTaskRunner:
    command: C:\\inetpub\\wwwroot\\App_Data\\installTaskRunner.cmd >> C:\\inetpub\\wwwroot\\App_Data\\installTaskRunner.log
commands:
  stop_service:
    command: net stop MyService
    ignoreErrors: true
...

批处理文件如下所示...

pushd C:\inetpub\wwwroot\bin
C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\installutil  MyService.exe
net start MyService
popd

为安装添加了附加命令。配置以在将webdeploy包应用为服务之前停止服务。exe锁定一些部署文件。

共有1个答案

马安邦
2023-03-14

关于后部署脚本,其中一个文件夹中带有. ps1、. bat或. exe的任何文件都将在该阶段运行。如果您需要对实例上发生的事情进行精细控制,则可以使用此方法。

还有第三个选项,即使用container_commands:而不是命令:

< code>container_commands:将在应用程序部署后运行。

这方面的文档可以在Elastic Beanstalk开发人员指南中找到。

 类似资料:
  • 我在RHEL上使用JBOSS final 6.1.0,在服务器上部署servlet没有问题。但在尝试部署SOAP web服务时,我在http://[serverName]:8080/jbossws/中找不到它。首先,我为JBOSS 6.1.0服务器创建了动态web项目SoapTestService,并编写了简单的web服务: 我导出项目到TestSoapService.war文件,把这个战争到[P

  • 我在mac os X上开发了jersey web服务服务器。我一直在使用maven命令行:运行它进行测试,它工作得很好。我目前正在Grizzly中运行我的web服务。 null 这就是我编译jar文件的方式: 这就是我运行jar文件的方式:。以下是错误: myname-macbook-pro:target myname$java-jar application-1.0-snapshot.jar异常

  • 我创建了一个在tomcat上平稳运行的CXF web服务。当我试图在JBoss 5.1上部署它时,我遇到了以下错误: 两个JAR都位于已部署的[WAR-FILE]/WEB-INF/lib中。 我读过很多关于类加载隔离级别、cxf和JBOSS上的web服务集成(如何关闭web服务堆栈)的文章,但似乎没有什么能解决这个问题。。 下面是war项目依赖关系树: 有什么帮助吗?

  • 问题内容: 我已经创建了Spring Boot Web应用程序,但是无法在tomcat上部署Spring Boot Web应用程序WAR文件,并且能够将其作为Java应用程序运行。如何在tomcat上将Spring Boot应用程序作为Web服务运行 我正在使用以下代码。如果可以在tomcat plz上运行,请帮助我使用批注而不使用web.xml和web.xml。 以下代码用于休息控制器 我正在使

  • 下面是rest控制器的代码 下面是我使用的pom.xml

  • 我正在编写一个简单的RESTful Web服务,使用Java、tomcat7、jersey和IDE eclipse。 当我使用eclipse(服务器)启动web服务时,它运行良好。我测试了GET和POST方法。但当我在WAR文件中导出应用程序并使用tomcat manage UI部署时。它返回404 not found状态。 下面是一个例子: 这里是网络。xml: 有人能解释在eclipse中启动