yufan.me/source/_posts/2015-10-26.md
2024-06-14 02:15:18 +08:00

109 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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的配置文件覆盖最新版,毫无问题。**