首页 > 代码库 > RHEL7下使用Nexus搭建Maven私服
RHEL7下使用Nexus搭建Maven私服
写在前面
在之前使用ant的时候,工程中是通过建立一个lib目录来存放依赖的jar包,每建一个工程都要建立一个lib,需要将这些lib包不停的copy。最麻烦的是在我们是用svn对lib进行版本管理,就比如,如果有其中一个jar包升级,就需要把所有工程lib目录下的jar包更新,之后提交到svn上。同样的,之前管理多工程之间的依赖也比较麻烦,所以打算使用Maven对项目的jar包进行管理。
在网上查阅了一些资料,也加上平时的一些基本认知(之前比较小白),决定使用Maven + Nexus私服这个方案。
搭建Nexus私服主要是因为有以下几个优点
1、节省公司公网带宽
2、利用内网下载速度快,能够加速Maven构建
3、可以管理内部项目的构件(Snapshots和Releases版本),从而实现各个模块间的共享
4、可以利用Nexus的第三方库来管理第三方构件
图1. 网络上借用的网络拓扑图
一、软件准备
1、RHEL7光盘镜像
rhel-server-7.1-x86_64-dvd.iso
RHEL7和RHEL6之间有一些变化,比如在Networkding、services等
2、Oracle Java
jdk-8u112-linux-x64.rpm(http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
由于Nexus不支持openjdk,所以一定要安装Oracle Java。如果装机时自带了openjdk,需要将其卸载。
3、Nexus
nexus-2.14.1-01-bundle.tar.gz(https://www.sonatype.com/download-oss-sonatype)
Nexus现在有两个发行版,一个是收费的Nexus Repository Pro,另一个是免费的Nexus Repository OSS。
Nexus Repository OSS有两个支持的版本,Nexus2和Nexus3,Nexus3较Nexus2在管理端UI上改动较大,功能也更加强大。
因为Nexus2使用起来比较顺手,也满足现在的需要,所以暂时使用Nexus2来实现。
二、构建Nexus私服
1、安装RHEL系统
1.1、系统安装
使用任意一款虚拟机软件安装都可以,在这里用的是VMware的产品。安装时不要选择快捷安装,使用引导光盘的形式安装。
图2. Red hat安装截图
为了能够在服务器中使用浏览器访问Nexus的管理端,基本环境选择【带GUI的服务器】,如果不需要也可以选择【最小安装】
1.2、虚拟机网络配置
为了使虚拟机能够联网(本机需要能连接外网),网络适配器需要选择桥接、NAT模式、或者使用一个局域网内能访问外网的静态IP
本文选用NAT模式,在测试的时候,不知道为什么使用桥接的时候,Nexus不能访问https的Maven仓库。
当然,这种情况也有可能是因为网络环境的原因,暂时不做调查。
1.3、系统网络设置
a、虚拟机安装完毕后,查看网卡设置,默认设置为ONBOOT=no,需要将ONBOOT属性设置为yes,每次开机启动自动获取IP
b、重启network服务
c、查看网络状态
※如果没有成功获取到ip,执行【dhclient】命令进行获取
1.4、关闭系统防火墙
a、关闭防火墙,查看防火墙状态
b、关闭防火墙开机启动,查看防火墙是否开机启动
c、禁用selinux,将SELINUX设置为disabled
d、重启虚拟机
2、安装JDK8
2.1、安装
2.2、安装确认
3、安装及配置Nexus
Nexus提供了详细的官方文档,深入学习的话建议参考官方文档,里面有多个版本的文档供参考。
http://books.sonatype.com/nexus-book/index.html?__utma=246996102.2137592748.1480583134.1482475022.1482718623.9&__utmb=246996102.6.10.1482718623&__utmc=246996102&__utmx=-&__utmz=246996102.1482718623.9.8.utmcsr=baidu|utmccn=(organic)|utmcmd=organic&__utmv=-&__utmk=87172763
3.1、安装Nexus 2.14.1-01
a、为Nexus创建系统用户(也可在安装系统时创建),并给用户分配超级用户权限
/etc/sudoers追加nexus的超级用户权限
※别忘了把文件权限修改回来,否则会导致sudo命令无法使用
b、将安装包移动到需要安装的目标目录,解压安装Nexus
删除目录下的tar包,查看安装目录
解压后有两个目录,首先确认两个文件夹的所有者。如果不是nexus,需要将两个目录一起子目录的所有者改成nexus,nexus用户需要对sonatype-work有写的权限,否则Nexus无法正常运行。sonatype-work这个目录包好所有的仓库和配置数据,为了方便升级,这个目录从安装目录分离了出来。
3.2、将Nexus配置为系统服务
a、Copy启动脚本到系统目录/etc/init.d
修改启动脚本,14行【NEXUS_HOME】设为Nexus的安装目录,23行【RUN_AS_USER】设为nexus(官方不建议使用root用户)
更改脚本权限,并使设置生效
b、新建服务,并设置开机启动
3.3、启动并运行Nexus
a、运行Nexus并查看Nexus状态
※Nexus的log文件在NEXUS_HOME下的logs/wrapper.log,如果启动不成功,可以通过log排查错误。
b、访问Nexus仓库管理端
假设虚拟机的IP为192.168.52.133,Nexus管理端的访问网址为http://192.168.52.133:8081/nexus
点击首页右上角【Log In】进行登录,管理员admin的默认密码为admin123
左侧菜单栏点击【Repositories】,进入仓库管理界面
Nexus的仓库分为以下几类:
- hosted 宿主仓库:主要用于部署无法从公共仓库获取的构件。其中Snapshots和Releases部署自己开发的jar,3rd party用于部署第三方的项目构件。
- proxy 代理仓库:代理公共的远程仓库,其中Central是Maven的公共仓库,Apache Snapshots包含Apache的快照和发布版本构件。
- virtual 虚拟仓库:用于适配Maven 1。
- group 仓库组:Nexus通过仓库组的概念同意管理多个仓库,这样就可以在项目中直接请求仓库组即可请求到仓库组管理的多个仓库。Public Repositories是Nexus定义的默认公共仓库组,它默认管理Central、Snapshots、Releases和3rd party这四个仓库。
3.4、Nexus账号设置
点击左侧菜单栏【Users】,进入用户管理界面
Nexus默认有三个用户,admin为管理员,拥有管理权限。anonymous用户只有查看权限,也就是进入管理时用的账号。还有一个deployment用来向Snapshots和Releases发布自己开发的jar。
- 选中用户,单击右键,选择【Set Password】设置新的密码,来替代默认密码。
- 下面的【config】可以设置用户的基本信息
3.5、设置Central仓库的【Download Remote Indexes】有效
为了能通过索引更快的找到想要的构件,需要预先把索引都下载到服务器本地,所以需要设置Central仓库的【Download Remote Indexes】有效
4、利用Nginx配置反向代理
4.1、安装Nginx
a、配置nginx的yum源
yum源更新
b、yum安装nginx
安装确认
4.2、更改Nexus的Base_url
将nexus-webapp-context-path由【/nexus】改为【/】,以便在访问的时候输入域名可以直接访问
重启Nexus
4.3、使用nginx配置反向代理
在/etc/nginx/conf.d/下为Nexus追加配置文件
启动nginx,并查看服务状态
4.4、用域名访问Nexus
在客户端配置hosts文件,例如win7系统的话,hosts文件在C:\Windows\System32\drivers\etc下面,在文件中加入一条域名解析【192.168.52.133 repo.example.org】。前面为虚拟机ip,后面是nginx中设置的域名,中间由空格分割。
之后就可以用域名访问了,在浏览器中输入刚刚设置的域名
小结
至此,一个拥有基本功能的Nexus服务器就搭建完了,自己水平有限,仅限整理此文以作积累。由于很难找到和自己需求相同的文章,在搭建过程中还是出了一些问题,也有一些不知道原因的问题。如果英语水平可以的话,还是建议还是按照官方文档一步一步的来,官方文档是写的很清楚的,自己摸索确实很费时间。
RHEL7下使用Nexus搭建Maven私服