Nexus是一个强大的Maven仓库管理器,它极大地简化了本地内部仓库的维护和外部仓库的访问。 如果使用了公共的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私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地,而一个团队中的所有人都重复的从maven仓库下载构件无疑加大了仓库的负载和浪费了外网带宽,如果网速慢的话,还会影响项目的进程。很多情况下项目的开发都是在内网进行的,连接不到maven仓库怎么办呢?开发的公共构件怎么让其它项目使用?这个时候我们不得不为自己的团队搭建属于自己的maven私服,这样既节省了网络带宽也会加速项目搭建的进程,当然前提条件就是你的私服中拥有项目所需的所有构件。
同时Nexus支持仓库有: Apt
、 Bower
、 CocoaPods
、 Conda
、 Docker
、 Git LFS
、 Go
、 Maven
、 Npm
、 NuGet
、 PyPi
、 Raw
、 RubyGems
、 Yum
上传已已下载的 JDK 与 Nexus 到服务器,或者直接服务器上下载相应的包
包名 | 版本 | 下载地址 |
---|---|---|
jdk-8u231-linux-x64.tar.gz | 1.8.0_231 | Oracle JDK |
nexus-3.19.1-01-unix.tar.gz | 3.19.1 | 3.19.1下载地址 |
/root/nexus_install
路径存放 Nexus
相关部署包,然后 上传文件
至该路径下 # mkdir /root/nexus_install && cd /root/nexus_install/ 复制代码
# mkdir -p /data/repo/{nexus,jdk} 复制代码
~/Downloads/package
为你本地存放相关包的文件路径。 # scp ~/Downloads/package/{jdk-8u231-linux-x64.tar.gz,nexus-3.19.1-01-unix.tar.gz} root@192.168.1.182:/root/nexus_install/ 复制代码
### 获取JDK
解压JDK到指定目录
# tar -zxvf /root/nexus_install/jdk-8u231-linux-x64.tar.gz -C /data/repo/jdk/ 复制代码
### 获取Nexus
解压Nexus包到指定目录
# tar -zxvf /root/nexus_install/nexus-3.19.1-01-unix.tar.gz -C /data/repo/nexus/ 复制代码
编辑配置文件,指定启动JDK版本,需要最低版本1.8,最高版本1.8
# vim /data/repo/nexus/nexus-3.19.1-01/bin/nexus 复制代码
修改如下配置,添加指定JDK版本
... # Uncomment the following line to override the JVM search sequence # INSTALL4J_JAVA_HOME_OVERRIDE= INSTALL4J_JAVA_HOME_OVERRIDE=/data/repo/jdk/jdk1.8.0_231/ # 指定使用JDK的HOME路径 # Uncomment the following line to add additional VM parameters # INSTALL4J_ADD_VM_PARAMS= INSTALL4J_JAVA_PREFIX="" GREP_OPTIONS="" fill_version_numbers() { if [ "$ver_major" = "" ]; then ... 复制代码
编辑 nexus-default.properties
配置文件
# vim /data/repo/nexus/nexus-3.19.1-01/etc/nexus-default.properties 复制代码
修改 application-port
值为我们需要的端口(默认端口:8081)
## DO NOT EDIT - CUSTOMIZATIONS BELONG IN $data-dir/etc/nexus.properties ## # Jetty section application-port=18081 application-host=0.0.0.0 nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml nexus-context-path=/ # Nexus section nexus-edition=nexus-pro-edition nexus-features=/ nexus-pro-feature nexus.hazelcast.discovery.isEnabled=true 复制代码
以下提供两种添加开机自启动的方式,按实际情况选择即可
# ln -s /data/repo/nexus/nexus-3.19.1-01/bin/nexus /etc/init.d/nexus 复制代码
service nexus start|run|stop|status|restart|force-reload
start:在后台启动服务,不在界面上打印任何启动或者运行时信息
run:启动服务,但是在界面上打印出启动信息以及运行时信息以及日志信息
stop:关闭服务
status:查看nexus运行状态
restart:重启服务
force-reload:强制重载一遍配置文件,然后重启服务
# cd /etc/init.d # update-rc.d nexus defaults # service nexus start 复制代码
创建服务脚本
# cat > /etc/systemd/system/nexus.service << EOF > [Unit] > Description=nexus service > After=network.target > > [Service] > Type=forking > LimitNOFILE=65536 > ExecStart=/data/repo/nexus/nexus-3.19.1-01/bin/nexus start > ExecStop=/data/repo/nexus/nexus-3.19.1-01/bin/nexus stop > User=nexus > Restart=on-abort > > [Install] > WantedBy=multi-user.target > EOF 复制代码
激活脚本
# systemctl daemon-reload # systemctl enable nexus.service # systemctl start nexus.service 复制代码
如果直接启动 nexus
会报如下错误
# service nexus start WARNING: ************************************************************ WARNING: Detected execution as "root" user. This is NOT recommended! WARNING: ************************************************************ Starting nexus 复制代码
官方不推荐使用 root
账号来启动,现在我们创建启动用户
# useradd -d /data/repo/nexus/sonatype-work/ nexus # chown -R nexus.nexus /data/repo/ 复制代码
并修改 nexus.rc
文件
# echo 'run_as_user="nexus"' > /data/repo/nexus/nexus-3.19.1-01/bin/nexus.rc 复制代码
如无报错,正常启动后浏览器访问http://ip:18081即可看到nexus主页
初次登陆,admin密码请查看 cat /data/repo/nexus/sonatype-work/nexus3/admin.password