109 lines
4.7 KiB
Markdown
109 lines
4.7 KiB
Markdown
---
|
||
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版本,故在此记录。
|
||
|
||
<!--more-->
|
||
|
||
## 二、准备工作:
|
||
|
||
首先,我们需要下载最新的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`
|
||
<del>runtime=${basedir}/runtime</del>
|
||
<span style="color: red">runtime=${bundleBasedir}/nexus/WEB-INF</span>
|
||
<del>apps=${runtime}/apps</del>
|
||
`nexus-work=${user.home}/sonatype-work/nexus`
|
||
<del>nexus-app=${runtime}/apps/nexus</del>
|
||
<del>webapp=${runtime}/apps/nexus/webapp</del>
|
||
<span style="color: blue">nexus-webapp=${bundleBasedir}/nexus</span>
|
||
<del>webapp-context-path=/nexus</del>
|
||
<span style="color: blue">nexus-webapp-context-path=/nexus</span>
|
||
<del>security-xml-file=${nexus-work}/conf/security.xml</del>
|
||
<del>application-conf=${nexus-work}/conf</del>
|
||
<del>runtime-tmp=${runtime}/tmp</del>
|
||
<del>jetty.xml=${basedir}/conf/jetty.xml</del>
|
||
|
||
上面红色部分为需要基于原有的配置修改的内容。黑色部分为原有的配置,保持不变。蓝色部分为新增的配置。画删除线的为原有的旧配置,现在不需要。
|
||
|
||
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的配置文件覆盖最新版,毫无问题。**
|