【问题标题】:How Can I run two versions of Sonatype Nexus on the same machine?如何在同一台机器上运行两个版本的 Sonatype Nexus?
【发布时间】:2024-05-28 18:35:01
【问题描述】:

所以我刚开始做一个项目,我的任务是将在 CentOS6 上运行的 sonatype nexus 1.9.x 升级到 2.11.x。旧版本目前是通过战争文件部署的。目标是在开发人员尝试构建他们的项目时部署新版本,同时不破坏构建。

我的攻击计划是下载 nexus。使通过tomcat部署的当前nexus,在不同的端口上运行,使新的nexus在当前端口上运行,然后代理旧的nexus。

我遇到了几个问题。旧的 nexus 使用 java 1.6。如果将 java 更新到 1.8,这会破坏当前运行的关系吗?

我可以在同一个虚拟机上运行两个版本的 nexus 吗?如果是这样,我将如何做到这一点并尽量减少搞砸的变化?

谢谢大家。我刚刚开始,这对我来说都是全新的。

【问题讨论】:

    标签: nexus sonatype


    【解决方案1】:

    由于您安装的 Nexus 非常旧,您必须考虑您的选择:

    1. 您可以升级现有实例。 1.9 非常旧,因此您必须分多个步骤进行升级。首先是 2.0,然后是 2.7,然后是 2.11。由于配置和删除升级步骤的数据存储更改,这是必要的。

    2. 您可以从头开始重新配置新服务器,在存储库和其他方面使用相同的配置,然后简单地将存储库 rsync 到新存储。您实际上只需要为托管存储库执行此操作,因为代理存储库有望仍然在线,您只需下载重新请求的任何内容。

    如果您的设置不太复杂,我个人会选择选项 2。它让您有机会重新审视和清理设置。

    对于该设置,步骤是粗略的。

    1. 与 Java 6 并行安装 Java 8
    2. 从捆绑包中安装 Nexus 2.11,使其与 Eclipse Jetty 一起运行。不要尝试在 Tomcat 上运行。
    3. 将其配置为在端口 9081 或其他与您的原始设置不冲突的端口上运行,并执行所有其他配置,包括根据需要创建存储库以及安全设置。

    现在您应该可以同时运行两台服务器了。

    1. 创建一个 rsync 存储库的脚本(位于 sonatype-work/nexus/storage)并在新服务器离线时运行它
    2. 并行启动新的 Nexus 并针对它运行大量测试。

    一旦您确认一切都在为切换的特定时间制定工作计划,然后执行此操作

    1. 禁用对 Nexus 的任何部署(CI 服务器、告诉人们、将托管存储库切换为只读)
    2. 最后一次运行 rsync 脚本
    3. 关闭旧的 Nexus 服务器
    4. 将新服务器配置为使用旧服务器的端口
    5. 开始新的

    你已经完成了。现在一切都应该很好,所以最后一步是删除旧的 Nexus 和 Tomcat 设置。

    这个过程当然有各种变化。这里有一些tips for the rsync.

    也请随时通过mailing list or chat 联系我们以获取更多帮助,并查看comprehensive documentation

    【讨论】: