--- title: Nexus升级小记 tags: - 学习 - Nexus - Maven categories: 学习 permalink: upgrade-nexus-from-old-install featureImage: https://cat.yufan.me/cats/2015102601.jpg id: 143 updated: '2016-01-11 00:31:01' date: 2015-10-26 05:03:07 --- ## 一、前言: 公司的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`。 ```bash 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下的配置文件拷贝过来,进行修改替换。 ```bash 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路径 ```bash 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 用户,此处为旧的安装升级,已经存在,所以无需创建,只需分配权限。 ```bash chown -R ci:ci /home/ci/sonatype-work chown -R ci:ci /usr/local/nexus ``` 6、安装JDK7,修改JAVA_HOME变量,指向新的JDK ```bash 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 ```bash cd /usr/local/nexus/bin ./nexus start ./nexus console ``` 启动出现问题时,运行console的那个命令查看原因,因为涉及到配置文件升级,需要一会。我们可以去泡杯茶,回来的时候,Nexus已经升级完毕。 8、对于最新版的 Nexus,重复如上步骤,**由于2.x之后的版本配置文件完全一致,我们可以直接拿2.7的配置文件覆盖最新版,毫无问题。**