如何从EB获得EC2实例以停止重新安装java 7?

如何从EB获得EC2实例以停止重新安装java 7?,java,amazon-web-services,amazon-ec2,java-8,amazon-elastic-beanstalk,Java,Amazon Web Services,Amazon Ec2,Java 8,Amazon Elastic Beanstalk,所以,基本上我有一个EC2实例,它是由Elastic Beanstalk创建的,大约每周我都会在其中卸载Java7并安装Java8。elastic beanstalk环境是为Node.js设置的,但我有一个单独的java程序需要实例化。我尝试将命令放在rc.local中安装Java8,但根本不起作用。文件现在恢复到默认状态。是否有地方可以将实例设置为默认的Java8?有没有办法只保留我通过SSH安装的安装?请帮帮我,我的网站因为这个原因一直在下滑,我真的不知道该怎么办,谷歌也帮不上什么忙。.eb

所以,基本上我有一个EC2实例,它是由Elastic Beanstalk创建的,大约每周我都会在其中卸载Java7并安装Java8。elastic beanstalk环境是为Node.js设置的,但我有一个单独的java程序需要实例化。我尝试将命令放在rc.local中安装Java8,但根本不起作用。文件现在恢复到默认状态。是否有地方可以将实例设置为默认的Java8?有没有办法只保留我通过SSH安装的安装?请帮帮我,我的网站因为这个原因一直在下滑,我真的不知道该怎么办,谷歌也帮不上什么忙。

.ebextensions是我应该怎么做的:

.ebextensions在创建ec2实例时运行;因此,为java 7的卸载和java 8的安装编写脚本,就可以开始了

更多信息

听起来您似乎明白,EB会时不时地自动销毁并替换您的ec2实例。这通常是每周进行一次;查看EB控制台->配置->托管更新。你可能会发现上面写着

托管更新:已启用

每周更新窗口:[此处的某些日期/时间]

这是一件好事。EB会自动为您安装重要的安全和其他更新。当它这样做时,它可能会替换您的ec2实例。这意味着:您手动安装Java8的ec2实例将被销毁,并创建一台全新的机器。这台全新的机器上安装了默认的Java7…现在您再次需要手动SSH到这个新实例中并安装Java8

您需要的是一个脚本,该脚本将在EB决定为您创建的所有新ec2实例上运行;此脚本将遵循每次手动SSH到ec2实例时所执行的步骤。请注意,即使关闭托管更新,ec2实例仍有可能(甚至可能)被销毁。这是一个良好的基础设施设计租户;如果ec2实例因任何原因出现问题,您的基础结构应在后台自动执行以下操作:

1.)启动一个新的ec2实例

2.)设置新的ec2实例

3.)将网站流量重新路由到新实例

4.)使旧ec2实例退役


因此,在一个.ebextensions文件中,创建一个脚本,卸载java 7并安装java 8,您就一切就绪。

这非常有用!非常感谢你!你认为这样的文件会成功吗:
.ebextensions/java.config
命令:java_8_安装:命令:“yum-y安装java-1.8.0”java_7_卸载:命令:“yum-y删除java-1.7.0-openjdk”
@WilliamPapsco不幸的是,我不使用java,但是是的,看起来你走对了方向。手动SSH时使用的任何命令,都在.config文件中执行相同的操作(顺序也相同)