CentOS安装Nexus(Maven私有库)详细配置及上传本地jar到私服
Nexus原理
Maven的原理就是将jar从远程中央仓库下载到PC磁盘的本地仓库,当本地仓库没有发现需要的jar就会去Maven默认的远程中央仓库Maven Central(由Apache维护)中寻找,每次需要新的jar后都要从远程中央仓库上下载。那么问题来了?这个远程的中央仓库一定有很多人使用那下载速度一定很慢,这个暂且不用考虑。 重要的是万一哪天公司外网连不上了咋办?而Nexus私服恰好可以解决这个问题。搭建私服的好处是Nexus有效解决了Maven对Apache的远程中央仓库的依赖,当项目需要新的jar时会先在nexus私服下载好以后才会下载到本地。如果发现私服已经存在这个jar包,则会直接从私服下载到本地Maven库,如果没有再去网络上下载。
原理如下图所示:
无私服时直接请求Apache提供的Maven Central中心服务器下载jar
有私服时则从私服上下载jar,当安装完Nexus后并开启“远程索引”(即:将远程仓库的jar下载到Nexus上的仓库)
—————————————————————————————————————————————————
Nexus安装(CentOS版本的Linux)
注:Nexus依赖JDK(nexus-2.11.*需要JDK1.7版本及以上)
一。安装JDK
步骤:
第一步:下载 jdk-7u55-linux-i586.tar.gz (如果有网可以使用wget http://Oracle官网的下载地址)
第二步:上传压缩包到linux系统。
第三步:解压缩(将源文件压缩包解压至/usr/local下的jdk文件夹)。
[root@localhost zhoujianxu]# mkdir -p /usr/local/jdk
[root@localhost zhoujianxu]# tar -zxvf jdk-7u55-linux-i586.tar.gz -C /usr/local/jdk
......
jdk1.7.0_55/man/man1/javadoc.1
jdk1.7.0_55/man/man1/jar.1
[root@localhost zhoujianxu]#
使用java -version 查看是否安装成功!
[root@localhost zhoujianxu]# java -version
java version "1.7.0_55"
Java(TM) SE Runtime Environment (build 1.7.0_55-b13)
Java HotSpot(TM) Client VM (build 24.55-b03, mixed mode)
[root@localhost zhoujianxu]#
第四步:配置环境变量(vi编辑器使用:按i进入编辑模式,修改完成后按ESC键进入命令模式输入:wq命令保存并退出:q!强制退出)。
[root@localhost zhoujianxu]# vi /etc/profile
修改/etc/profile,在文件中添加如下内容:
#set java environment JAVA_HOME=/usr/local/jdk/jdk1.7.0_55 JRE_HOME=/usr/local/jdk/jdk1.7.0_55/jre CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin export JAVA_HOME JRE_HOME CLASS_PATH PATH
如下图
第五步:source /etc/profile或者重启。
[root@localhost zhoujianxu]# source /etc/profile
—————————————————————————————————————————————————
二。安装Nexus步骤:
第一步:Nexus官网下载地址:http://www.sonatype.org/nexus/go/
使用wget命令下载 wget 想要下载nexus版本的地址
[root@localhost nexus]# wget https://sonatype-download.global.ssl.fastly.net/nexus/oss/nexus-2.11.2-03-bundle.tar.gz
[root@localhost nexus]# ls
nexus-2.11.2-03-bundle.tar.gz
[root@localhost nexus]#
第二步:解压
[root@localhost nexus]# mkdir /usr/local/nexus
[root@localhost nexus]# tar -zxvf nexus-2.11.2-03-bundle.tar.gz -C /usr/local/nexus/
[root@localhost nexus]# cd /usr/local/nexus
[root@localhost nexus]# ls
nexus-2.11.2-03 sonatype-work
(一个 nexus 服务,一个私有库目录)
第三步:编辑 Nexus 的 nexus.properties 文件,配置端口和 work 目录信息(保留默认)
[root@localhost nexus]# cd nexus-2.11.2-03
[root@localhost nexus-2.11.2-03]# ls
bin conf lib LICENSE.txt logs nexus NOTICE.txt tmp
查看目录结构,jetty 运行
[root@localhost nexus-2.11.2-03]# cd conf
[root@localhost conf]# vi nexus.properties
# Jetty section application-port=8081 application-host=0.0.0.0 nexus-webapp=${bundleBasedir}/nexus nexus-webapp-context-path=/nexus # Nexus section nexus-work=${bundleBasedir}/../sonatype-work/nexus runtime=${bundleBasedir}/nexus/WEB-INF
如下图
第四步:编辑 nexus 脚本, 配置 RUN_AS_USER 参数
[root@localhost conf]# vi /usr/nexus/nexus-2.11.2-03/bin/nexus
NEXUS_HOME=".."
改为(不修改默认也可以):
NEXUS_HOME="nexus安装目录"
#RUN_AS_USER=
改为:
RUN_AS_USER=root
第五步:防火墙中打开 8081 端口 [etc目录通常放一些零散的配置文件]
[root@localhost conf]# vi /etc/sysconfig/iptables
添加:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -j ACCEPT
保存后重启防火墙(即使防火墙开着也可以访问,作为服务器安全第一)
[root@localhost conf]# service iptables restart
第六步:启动 nexus [nexus的bin目录下的可以执行文件可以进入bin查看]
[root@localhost conf]# /usr/nexus/nexus-2.11.2-03/bin/nexus start
****************************************
WARNING - NOT RECOMMENDED TO RUN AS ROOT
****************************************
Starting Nexus OSS...
Started Nexus OSS.
[root@localhost conf]#
—————————————————————————————————————————————————
浏览器输入地址 http://192.168.174.128:8081/nexus
登录,默认用户名 admin 默认密码 admin123
到此,Nexus 已安装完成。
Nexus的访问权限模型
Nexus是基于权限做访问控制的,服务器的每一个资源都有对应的权限来控制,因此用户执行特定的操作时就必须拥有必要的权限。管理员必须以角色的方式将权限赋予Nexus用户。用户可以被赋予一个或者多个角色,角色可以包含一个或多个权限,角色还可以包含一个或者多个其他角色。
Nexus上预定义了三个用户,用admin登录后,单击页面左边的User链接,看到如下图列表:
admin:该用户拥有Nexus的全部权限,默认密码为admin123。
deployment:该用户能够访问Nexus,浏览仓库内容、搜索、上传部署构件,但是不能对Nexus进行任何配置,默认密码为deployment123。
anonymous:该用户对应了所有未登录的匿名用户,它们可以浏览仓库并进行搜索。
添加新用户并授予登录访问权限
添加第三方jar默认情况下Nexus为我们创建了以下主要的Repository:
1、Public Repositories,这是一个Repository Group,该Repository Group包含了多个Repository,其中包含了Releases、Snapshots、ThirdParty和Central。
2、3rd party,该Repository即是存放你公司所购买的第三方软件库的地方,它是一个由Nexus自己维护的一个Repository。
3、Apache Snapshots,看名字你就应该知道这是个什么样的Repository,这是一个代理Repository,即最终的依赖还是得在Apache官网上去下载,然后缓存在Nexus中。
4、Central,这就是代理Maven Central Repository的Repository。
5、Releases,你自己的项目要发布时,就应该发布在这个Repository,他也是Nexus自己维护的Repository,而不是代理。
6、Snapshots,你自己项目Snapshot的Repository。
使用3rd party上传第三方jar包
在Repository列表中,选中 3rd party,选中artifact upload,
选择GAV Defini3ion: GAV Parameters,Auto Guess 打钩。
在下方输入JAR包对应的Group、Artifact、Version,Packaging选择JAR格式。
点击select Artifact(s) to upload 按钮,选择要上传的JAR包。
如下图所示
然后
OK上传成功!
输入pinyin4j点击搜索
如下图:
开启Nexus的“远程索引下载”
在搜索框中输入“fileupload”点击搜索
当没开启“远程索引”时搜索结果如下图:
开启“远程索引”
新搭建的neuxs环境只是一个空的仓库,需要手动和远程中心库进行同步,nexus默认是关闭远程索引下载,最重要的一件事情就是开启远程索引下载。登陆nexus系统,默认用户名密码为admin/admin123。
点击左边Administration菜单下面的Repositories,找到右边仓库列表中的三个仓库Apache Snapshots,Codehaus Snapshots和Maven Central,然后再没有仓库的configuration下把Download Remote Indexes修改为true。如下图:
Remote Storage Location后的http://repo1.maven.org/maven2/ 是Nexus将要下载到Nexus本地Central仓库的远程中心仓库的地址。这个远程中心仓库资源比较全大概好几百兆所以建立索引过程时间较长耐心等吧...,可以在Schedule Tasks中进行查看正在执行的任务(下面介绍)。
通过浏览器查看:
通过Browse Remote 查看地址为 http://repo1.maven.org/maven2/ 的远程中心仓库的资源
通过schedule Tasks 查看正在执行的任务(下面例子是为Nexus的Apache Snapshots(Repo)本地仓库建立索引的任务该库只包含Apache相关的资源和jar所以相对来说比较小)
Status为Running表示正在构建索引执行完后会自动消失。
再搜索时结果如下图:
—————————————————————————————————————————————————
Nexus的安装配置及使用到此全部完成