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