Aldebaran

人生最棒的感觉,就是你做到别人说你做不到的事。

0%

本地私服仓库Nexus3

三田寺円

Nexus介绍

Nexus是一个强大的仓库管理器,它极大地简化了本地内部仓库的维护和外部仓库的访问。

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)节省中央仓库的带宽;

4)稳定(应付一旦中央服务器出问题的情况);

5)控制和审计;

6)能够部署第三方构件;

7)可以建立本地内部仓库;

8)可以建立公共仓库

这些优点使得Nexus日趋成为最流行的Maven仓库管理器。

下载地址

win64: https://sonatype-download.global.ssl.fastly.net/repository/repositoryManager/3/nexus-3.17.0-01-win64.zip
unix: https://sonatype-download.global.ssl.fastly.net/repository/repositoryManager/3/nexus-3.17.0-01-unix.tar.gz

需要先安装JDK。且最少为JDK1.8

安装服务

解压文件

$ tar xf nexus-3.17.0-01-unix.tar.gz

将解压出两个目录移动到相应位置

$ mv nexus-3.17.0-01 /usr/local/nexus-3.17.0-01
$ mv sonatype-work /data/sonatype-work
$ ln -s /usr/local/nexus-3.17.0-01 /usr/local/nexus

修改权限

$ sudo useradd -s /sbin/nologin nexus
$ chown -R nexus:nexus /data/sonatype-work
$ chown -R nexus:nexus /usr/local/nexus-3.17.0-01

修改文件最大打开数(可选)

$ vim /etc/security/limits.conf

* soft nofile 65536
* hard nofile 65536

修改配置文件

$ vim /usr/local/nexus-3.17.0-01/bin/nexus.rc
#run_as_user=""
run_as_user="nexus"

$ vim /usr/local/nexus-3.17.0-01/bin/nexus.vmoptions
-Xms1200M
-Xmx1200M
-XX:MaxDirectMemorySize=2G
-XX:+UnlockDiagnosticVMOptions
-XX:+UnsyncloadClass
-XX:+LogVMOutput
-XX:LogFile=/data/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=/data/sonatype-work/nexus3
-Djava.io.tmpdir=/data/sonatype-work/nexus3/tmp
-Dkaraf.startLocalConsole=false

创建启动脚本

$ vim /usr/lib/systemd/system/nexus.service

[Unit]
Description=nexus service
After=network.target

[Service]
Type=forking
LimitNOFILE=65536
ExecStart=/usr/local/nexus/bin/nexus start
ExecStop=/usr/local/nexus/bin/nexus stop
User=nexus
Restart=on-abort

[Install]
WantedBy=multi-user.target

启动命令

$ sudo systemctl daemon-reload
$ sudo systemctl enable nexus.service
$ sudo systemctl start nexus.service

访问

默认启动,访问的端口为 8091。

admin的初始密码可以在 $datadir(数据目录,比如/data/sonatype-work/nexus3)中找到 admin.password

参考文档

https://help.sonatype.com/repomanager3

https://help.sonatype.com/repomanager3/installation/run-as-a-service

https://www.cnblogs.com/kevingrace/p/6201984.html