Sam*_*ppe 11 .net amazon-web-services amazon-elastic-beanstalk
我们希望将ASP.NET MVC Web应用程序和Windows服务部署到弹性beanstalk.我们使用awsdeploy.exe来处理Web应用程序的部署.该服务和Web应用程序共享配置和库.为了部署服务,我的计划是:
但是,这似乎不起作用,因为.ebextensions操作在安装webdeploy包之前执行,因此无法安装服务exe.
看来我的选择是:
压缩服务exe并将其发布到S3,以便在部署Web应用程序时可以通过.ebextensions安装它.
这并不理想,因为服务和Web应用程序共享依赖关系+配置.该服务需要安装一组独立的依赖项和配置,因为它需要在Web应用程序更新之前启动并运行.
使用不支持的部署后脚本技术,我需要将其转换为Windows世界.
Windows目录= C:\ Program Files\Amazon\ElasticBeanstalk\hooks\appdeploy\post那里有一个.ps1脚本文件.(支持.cmd吗?)
我们可以使用webdeploy软件包@"C:\ cfn\ebdata\source_bundle.zip"作为源代码,解压缩并从那里安装服务.问题是zip中的内部路径取决于用户的机器如何构建它的设置,因此在解压缩的文件结构中找到exe会很棘手.示例path ="Content\C_C\gitdeploy\blah\blahSolution\blahProject\_ obj\awsTestDebug\Package\PackageTmp\bin\myservice.exe"
有关采取哪种方法的任何建议?
根据Jim的建议,我使用了container_commands,它运行良好.我的.ebextensions/install.config看起来像这样..
...
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
...
Run Code Online (Sandbox Code Playgroud)
批处理文件看起来像这样......
pushd C:\inetpub\wwwroot\bin
C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\installutil MyService.exe
net start MyService
popd
Run Code Online (Sandbox Code Playgroud)
添加了instal.config的其他命令,以便在应用webdeploy软件包之前停止服务,因为service.exe会锁定某些部署文件.
Jim*_*gan 10
关于后部署脚本,其中一个文件夹中包含.ps1,.bat或.exe的文件将在该阶段运行.如果您需要对实例上发生的事情进行精细控制,则可以使用此方法.
还有第三种选择,即使用container_commands:而不是commands:
container_commands: 将在部署应用程序后运行.
可以在Elastic Beanstalk开发人员指南中找到相关文档.
| 归档时间: |
|
| 查看次数: |
4043 次 |
| 最近记录: |