首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在AWS弹性豆柄上部署windows服务和web应用程序

在AWS弹性豆柄上部署windows服务和web应用程序
EN

Stack Overflow用户
提问于 2013-12-18 01:11:15
回答 1查看 4.9K关注 0票数 12

我们希望将ASP.NET MVC web应用程序和windows服务部署到弹性豆杆上。我们使用awsdeploy.exe来处理web应用程序的部署。服务和web应用程序共享配置和库。为了部署服务,我的计划是:

  1. 将windows服务exe包括在web部署包\bin目录中,并将服务和web应用程序一起部署
  2. 使用.ebextensions文件安装服务

但是,由于.ebextensions操作是在安装webdeploy之前执行的,因此服务exe无法安装,所以这似乎不起作用。

看来我的选择是:

S3

压缩服务exe并将其发布到S3,以便.ebextensions在部署web应用程序时可以安装它。

这并不理想,因为服务和web应用程序共享依赖关系+配置。服务需要安装一组独立的依赖项和配置,因为在更新web应用程序之前,它需要启动和运行。

后部署脚本

使用不支持的post deployment script technique,我需要将它转换成windows世界。

Windows目录=C:\ProgramFiles\Amazon\ElasticBeanstalk\hooks\appdeploy\post那里有一个.ps1脚本文件。(支持.cmd吗?)

使用作为.ebextensions zip源代码

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

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

编辑

根据吉姆的建议,我用了container_commands,效果很好。我的.eb扩展名/install.config看起来如下..

代码语言:javascript
复制
...
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
...

批处理文件看起来像这样..。

代码语言:javascript
复制
pushd C:\inetpub\wwwroot\bin
C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\installutil  MyService.exe
net start MyService
popd

编辑#2

在应用webdeploy之前,向instal.config添加附加命令以停止服务,因为service.exe锁定了一些部署文件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-18 21:14:41

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

还有第三种选择,即使用container_commands:而不是commands:

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

这方面的文档可以在Elastic Beanstalk Developer Guide中找到。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20647913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档