.net 在AWS Elastic Beanstalk上部署windows服务和web应用
我们希望将ASP.NET MVC web应用程序和windows服务部署到elastic beanstalk。我们使用awsdeploy.exe来处理web应用程序的部署。服务和web应用程序共享配置和库。要部署服务,我的计划是:.net 在AWS Elastic Beanstalk上部署windows服务和web应用,.net,amazon-web-services,amazon-elastic-beanstalk,.net,Amazon Web Services,Amazon Elastic Beanstalk,我们希望将ASP.NET MVC web应用程序和windows服务部署到elastic beanstalk。我们使用awsdeploy.exe来处理web应用程序的部署。服务和web应用程序共享配置和库。要部署服务,我的计划是: 将windows service exe包含在web部署包\bin目录中,并将服务和web应用程序一起部署 使用.ebextensions文件安装服务 但是,这似乎不起作用,因为.ebextensions操作是在安装webdeploy包之前执行的,因此无法安装服务ex
...
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
编辑#2
在instal.config中添加了其他命令,以在应用webdeploy包之前停止服务,因为service.exe会锁定某些部署文件。关于部署后脚本,在该阶段将运行其中一个文件夹中带有.ps1、.bat或.exe的任何文件。如果您需要对实例上发生的事情进行精细控制,则可以使用此方法 还有第三个选项,即使用
容器命令:
而不是命令:
container\u命令:
将在部署应用程序后运行
相关文档可在中找到。根据文档,容器命令“在设置应用程序和web服务器并提取应用程序版本文件之后,但在部署应用程序版本之前运行。”我也在为时间安排而挣扎,部署后脚本方法是唯一看起来可行的方法。