menu
Nexus 升级小记

一、前言:

公司的 Maven 私服 Nexus 版本为 1.9.2,因为版本过老,前端页面在 OSX10.11 的 Safari 9 已经完全没法显示。查看官网文档,得出是 extjs 的 BUG,解决方式只有升级 Nexus 版本。

但是 Nexus 1.9.2 版为 2011 年版本,之后的 Nexus 变化极大,比如,已经不再支持 JDK6 运行,运行容器换成了 Jetty。通过参考对比最新版和之前版本的配置,踩过无数雷区,成功升级 Nexus 版本,故在此记录。

二、准备工作:

首先,我们需要下载最新的 JDK7,和最新的 Nexus 版本,写下此文时最新版是 2.11.4-01。然而,因为 Nexus 版本过老,我们还需要一个中间版本,此处我们选择 Nexus 2.7.0。

Nexus 的所有版本可以在此处 http://www.sonatype.org/nexus/archived/ 下载,按照版本跨度,选一个中间版和一个最新版。对于中间版本选取,可以参考此文 https://support.sonatype.com/entries/21701998-nexus-upgrade-notes

我们可以看到,所有的 1.x 的版本,都可以直接升级到 2.7.x 版本。这是因为,最新的 Nexus 中,配置文件有了极大的改变,所以会在升级后的第一运行时,升级配置文件。2.7.x 版本是最后一个支持 1.x 版本配置文件升级的版本。

三、安装:

1、解压 nexus-2.7.0-bundle.tar.gz,我们得到两个文件,一个 nexus-2.7.0-06,一个 sonatype-work。将 nexus-2.7.0-06 移动至我们的安装路径。比如此处,我们放在 /usr/local/nexus,旧的安装路径为 /usr/local/tomcat

wget https://sonatype-download.global.ssl.fastly.net/nexus/oss/nexus-2.7.0-bundle.tar.gz
tar xvzf nexus-2.7.0-bundle.tar.gz
rm -rf sonatype-work
mv nexus-2.7.0-06 /usr/local/nexus

2、修改配置文件,首先,我们备份默认配置文件。然后将原有 tomcat 下的配置文件拷贝过来,进行修改替换。

cd /usr/local/nexus/conf
mv nexus.properties nexus.properties.bak
cp /usr/local/tomcat/webapps/nexus/WEB-INF/plexus.properties nexus.properties

3、修改新的配置文件,修改方式如下:

application-port=8080
application-host=0.0.0.0
runtime=${basedir}/runtime
runtime=${bundleBasedir}/nexus/WEB-INF
apps=${runtime}/apps
nexus-work=${user.home}/sonatype-work/nexus
nexus-app=${runtime}/apps/nexus
webapp=${runtime}/apps/nexus/webapp
nexus-webapp=${bundleBasedir}/nexus
webapp-context-path=/nexus
nexus-webapp-context-path=/nexus
security-xml-file=${nexus-work}/conf/security.xml
application-conf=${nexus-work}/conf
runtime-tmp=${runtime}/tmp
jetty.xml=${basedir}/conf/jetty.xml

上面红色部分为需要基于原有的配置修改的内容。黑色部分为原有的配置,保持不变。蓝色部分为新增的配置。画删除线的为原有的旧配置,现在不需要。

4、修改启动脚本,设定启动用户、安装路径、程序 PID 路径

cd /usr/local/nexus/bin
sed -i "s/NEXUS_HOME=\"..\"/NEXUS_HOME=\"\/usr\/local\/nexus\"/g" nexus
sed -i "s/#RUN_AS_USER=/RUN_AS_USER=ci/g" nexus
sed -i "s/#PIDDIR=\".\"/PIDDIR=\"\/home\/ci\/sonatype-work\/nexus\"/g" nexus

此处设置了 Nexus 的默认安装路径和启动用户,Nexus 官方不建议使用 root 帐号启动 Nexus,否则会有安全问题并显示警告,所以我们此处制定用户为 ci。

5、创建 ci 用户,此处为旧的安装升级,已经存在,所以无需创建,只需分配权限。

chown -R ci:ci /home/ci/sonatype-work
chown -R ci:ci /usr/local/nexus

6、安装 JDK7,修改 JAVA_HOME 变量,指向新的 JDK

wget http://xxx.xxx.xxx/xxx/jdk-7u80-linux-x64.gz
tar xvzf jdk-7u80-linux-x64.gz
mv jdk1.7.0_80 /opt (路径自拟)
touch /home/ci/.bash_profile
echo "export JAVA_HOME=/opt/jdk1.7.0_80" >> /home/ci/.bash_profile

7、使用 ci 用户登录服务器,关闭旧的 Nexus 进程,运行新的 Nexus

cd /usr/local/nexus/bin
./nexus start
./nexus console

启动出现问题时,运行 console 的那个命令查看原因,因为涉及到配置文件升级,需要一会。我们可以去泡杯茶,回来的时候,Nexus 已经升级完毕。

8、对于最新版的 Nexus,重复如上步骤, 由于 2.x 之后的版本配置文件完全一致,我们可以直接拿 2.7 的配置文件覆盖最新版,毫无问题。