1.nexus的安装
1,Nexus 介绍
Nexus是什么
Nexus 是一个强大的maven仓库管理器,它极大地简化了本地内部仓库的维护和外部仓库的访问。
不仅如此,他还可以用来创建yum、pypi、npm、docker、nuget、rubygems 等各种私有仓库。
所支持的类型,可从下图管窥:
如果使用了公共的 Maven 仓库服务器,可以从 Maven 中央仓库下载所需要的构件(Artifact),但这通常不是一个好的做法。
正常做法是在本地架设一个 Maven 仓库服务器,即利用 Nexus 私服可以只在一个地方就能够完全控制访问和部署在你所维护仓库中的每个 Artifact。
Nexus 在代理远程仓库的同时维护本地仓库,以降低中央仓库的负荷, 节省外网带宽和时间,Nexus 私服就可以满足这样的需要。
Nexus 是一套 “开箱即用” 的系统不需要数据库,它使用文件系统加 Lucene 来组织数据。
Nexus 使用 ExtJS 来开发界面,利用 Restlet 来提供完整的 REST APIs,通过 m2eclipse 与 Eclipse 集成使用。
Nexus 支持 WebDAV 与 LDAP 安全身份认证。
Nexus 还提供了强大的仓库管理功能,构件搜索功能,它基于 REST,友好的 UI 是一个 extjs 的 REST 客户端,它占用较少的内存,基于简单文件系统而非数据库。
为什么要构建 Nexus 私服
如果没有 Nexus 私服,我们所需的所有构件都需要通过 maven 的中央仓库和第三方的 Maven 仓库下载到本地,而一个团队中的所有人都重复的从 maven 仓库下载构件无疑加大了仓库的负载和浪费了外网带宽,如果网速慢的话,还会影响项目的进程。很多情况下项目的开发都是在内网进行的,连接不到 maven 仓库怎么办呢?开发的公共构件怎么让其它项目使用?这个时候我们不得不为自己的团队搭建属于自己的 maven 私服,这样既节省了网络带宽也会加速项目搭建的进程,当然前提条件就是你的私服中拥有项目所需的所有构件。
总之,在本地构建 nexus私服的好处有:
1)加速构建;
2)节省带宽;
3)节省中央 maven 仓库的带宽;
4)稳定(应付一旦中央服务器出问题的情况);
5)控制和审计;
6)能够部署第三方构件;
7)可以建立本地内部仓库;
8)可以建立公共仓库
这些优点使得 Nexus 日趋成为最流行的 Maven 仓库管理器。
2,版本选择及下载
关于版本选择
以前公司使用的版本一直是用的一个2.x的版本,旧的版本各种陈旧,在这种陈旧的情况下,许多地方已经破破烂烂了,比如最重要的功能之一,自动同步远程仓库的依赖,就已经无法使用,看到版本已经更新到3.x,因此就想着搭一个高版本的来体验一下。
关于下载
官网地址:https://www.sonatype.com/
下载地址:https://download.sonatype.com/nexus/3/latest-unix.tar.gz (下载需要FQ)
接下来开始整个安装的流程介绍,我们先来介绍普通方式的安装。
3,安装jdk-1.8
nexus的安装依赖jdk环境。最好安装1.8版本的,否则可能会遇到其他不可知问题。
安装步骤可以参考:https://www.cnblogs.com/sanduzxcvbnm/p/12522735.html
4,部署nexus
1,解压。
tar -zxv -f nexus-3.24.0-02-unix.tar.gz -C /usr/local/
下载到指定目录并解压,我们可以看到解压后有通常两个文件。
nexus-3.24.0-02 | Nexus运行所需要的文件,如运行脚本,依赖jar包等 |
---|---|
sonatype-work | 该目录包含Nexus生成的配置文件、日志文件、仓库文件等 |
2,启动。
cd /usr/local/nexus-3.24.0-02
./bin/nexus run &
大概等待一分钟左右,如果在日志输出当中看到如下显示,则说明启动成功。
-------------------------------------------------
Started Sonatype Nexus OSS 3.24.0-02
-------------------------------------------------
3,访问。
默认监听端口为8081
,默认用户名为admin
,密码需要查看:/usr/local/sonatype-work/nexus3/admin.password,因此可以访问以下首页并登陆。
这里直接访问了,一般内部使用,就不开启防火墙神马的了。
首次登陆后修改密码:
5,配置存储及日志位置。
cd /usr/local/nexus-3.24.0-02/bin
cat nexus.vmoptions
-Xms2703m
-Xmx2703m
-XX:MaxDirectMemorySize=2703m
-XX:+UnlockDiagnosticVMOptions
-XX:+LogVMOutput
-XX:LogFile=../sonatype-work/nexus3/log/jvm.log
-XX:-OmitStackTraceInFastThrow
-Djava.net.preferIPv4Stack=true
-Dkaraf.home=.
-Dkaraf.base=.
-Dkaraf.etc=etc/karaf
-Djava.util.logging.config.file=etc/karaf/java.util.logging.properties
-Dkaraf.data=../sonatype-work/nexus3
-Dkaraf.log=../sonatype-work/nexus3/log
-Djava.io.tmpdir=../sonatype-work/nexus3/tmp
-Dkaraf.startLocalConsole=false
#
# additional vmoptions needed for Java9+
#
# --add-reads=java.xml=java.logging
# --add-exports=java.base/org.apache.karaf.specs.locator=java.xml,ALL-UNNAMED
# --patch-module=java.base=lib/endorsed/org.apache.karaf.specs.locator-4.2.6.jar
# --patch-module=java.xml=lib/endorsed/org.apache.karaf.specs.java.xml-4.2.6.jar
# --add-opens=java.base/java.security=ALL-UNNAMED
# --add-opens=java.base/java.net=ALL-UNNAMED
# --add-opens=java.base/java.lang=ALL-UNNAMED
# --add-opens=java.base/java.util=ALL-UNNAMED
# --add-opens=java.naming/javax.naming.spi=ALL-UNNAMED
# --add-opens=java.rmi/sun.rmi.transport.tcp=ALL-UNNAMED
# --add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED
# --add-exports=java.base/sun.net.www.protocol.https=ALL-UNNAMED
# --add-exports=java.base/sun.net.www.protocol.jar=ALL-UNNAMED
# --add-exports=jdk.xml.dom/org.w3c.dom.html=ALL-UNNAMED
# --add-exports=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED
#
# comment out this vmoption when using Java9+
#
-Djava.endorsed.dirs=lib/endorsed
# 一般都不做修改,使用默认即可,这里列出是为了了解这个点。
-XX:LogFile=../sonatype-work/nexus3/log/jvm.log
-Dkaraf.data=../sonatype-work/nexus3
-Djava.io.tmpdir=../sonatype-work/nexus3/tmp
配置完毕之后,重启一下服务。
6,启动之后,解决一个小问题
注意左上角会有一个告警,这个告警的意思是系统默认的最大文件句柄太小了。
linux 系统修改打开文件数限制:
vim /etc/security/limits.conf
nexus - nofile 65536
然后再次重启服务即可。
先杀死进程,然后再启动:/usr/local/nexus-3.24.0-02/bin/nexus run &
6,docker方式安装
最后介绍一些使用docker的方式如何安装。
如果想使用docker来启动,那么可以参考:官方镜像介绍
或用下边方式直接启动。
mkdir /opt/nexus-data
docker run -d -p 8081:8081 --name nexus -v --ulimit nofile=65536:65536 /opt/nexus-data:/nexus-data sonatype/nexus3