【问题标题】:How do I get my EC2 instance from EB to stop re-installing java 7?如何从 EB 获取我的 EC2 实例以停止重新安装 java 7?
【发布时间】:2018-08-06 15:37:55
【问题描述】:

所以,基本上我有一个由 Elastic Beanstalk 创建的 EC2 实例,大约每周我都会通过 SSH 连接到它以卸载 java 7 并安装 java 8。弹性 beanstalk 环境是为 Node.js 设置的,但我有一个需要实例化的单独的 java 程序。我尝试在 rc.local 中放置安装 java 8 的命令,但这根本不起作用。该文件现在恢复到其默认状态。有没有可以将实例设置为默认为 Java 8 的地方?有没有办法只保留我通过 SSH 安装的安装?请帮忙,我的网站因此一直在关闭,我不确定该怎么做,谷歌也没有太多帮助。

【问题讨论】:

    标签: java amazon-web-services amazon-ec2 java-8 amazon-elastic-beanstalk


    【解决方案1】:

    .ebextensions 我会这样做:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html

    .ebextensions 在创建 ec2 实例时运行;所以编写卸载 java 7 并安装 java 8 的脚本,一切顺利。

    更多信息...

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

    Managed updates: enabled

    Weekly update window: [some date/time here]

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

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

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

    2.) 配置新的 ec2 实例

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

    4.) 停用旧的 ec2 实例

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

    【讨论】:

    • 这很有帮助!太感谢了!你认为这样的文件会奏效吗:.ebextensions/java.config:commands: java_8_install: command: "yum -y install java-1.8.0" java_7_uninstall: command: "yum -y remove java-1.7.0-openjdk"
    • @WilliamPapsco 不幸的是我不使用java,但是看起来你在正确的轨道上。无论您在手动 SSH 时使用什么命令,请在 .config 文件中执行相同的操作(也以相同的顺序)
    猜你喜欢
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    • 2015-11-15
    相关资源
    最近更新 更多