Nexus仓库

简介: Nexus仓库是Sonatype推出的开源制品管理工具,支持Maven、Npm、Docker等格式。本文介绍其在Linux和Docker环境下的安装配置,包括JDK部署、OSS版下载、用户权限、匿名访问设置,以及仓库创建与上传下载操作,涵盖密码重置、数据持久化及脚本批量导入等内容,助力搭建高效私有仓库。

Nexus仓库

Linux安装 安装jdk8,并配置环境变量 安装后的路径为:/usr/java/jdk1.8.0_181-amd64

到 sonatype 官网下载Nexus Repository Manager OSS  Nexus分为开源免费的OSS版和Pro版。此处可以选择下载开源免费的OSS版。pro版多了资源健康检查等功能。 将下载的压缩包放到服务器解压  解压后会有两个文件夹: sonatype将Nexus安装包托管到了 Fastly CDN,国内访问Fastly CDN非常卡顿。可能会下载失败,需要多试几次。 nexus-3.30.0-01  nexus软件 sonatype-work  nexus工作目录。该文件夹和nexus软件在相同路径中,最好不要改动。 修改nexus的配置编辑 nexus-3.30.0-01/etc/nexus-default.properties 文件   启动nexuswindows版:  使用管理员身份将nexus安装成一个windows服务   在windows的“服务”中可以找到nexus服务,启动该服务 Linux版:  执行 nexus指令查看其参数   不带参数直接运行nexus指令,会返回nexus可选参数列表 启动nexus(nexus不建议使用root用户执行)    浏览器放问nexus http://192.168.29.141:8081/ 启动较缓慢,需要等待一段时间才能连上相关操作登录 进入nexus的web管理页面后,所有的配置都是只读的,需要登录才能操作  点击Sign In 进行登录默认用户名:admin默认密码:在 /home/nexus/sonatype-work/nexus3/admin.password  文件中  旧版本Nexus没有该密码文件,默认密码为:admin123 首次登录需要修改密码,例如将密码改为:admin  修改密码后,admin.password文件会被自动删除 配置是否允许匿名访问  启用匿名访问意味着,用户可以在没有凭据的情况下从仓库搜索、浏览和下载组件。使用管理员登录后,便可以在nexus的web页面中管理nexus。可以配置仓库(仓库的创建等)、安全(用户、角色、域、权限、SSL、匿名账户等配置)、IQ Server、Support(日志查看、服务器状态、指标统计、系统信息、日志文件压缩、JVM堆存储压缩等)、系统(API、Email服务、定时任务等)点击右上角的用户账户,进入用户详情页面,可以修改用户的密码。忘记密码如果更改完密码,把密码忘记了,密码不能找回,只能重新设置。重置密码:参考官方文档旧版本的密码存在配置文件中,3.x存储在数据库中。nexus内置了一个图数据库OrientDB,密码信息存储在图数据库中。图数据库的数据文件位于 sonaptype/nexus3/db 文件夹中 关闭nexus,备份 sonaptype/nexus3/db 文件夹  登录OrientDB数据库控制台   连接数据库   使用下列语句重置密码为:admin123  如果 nexus中不存在admin用户:  OrientDB使用的是类SQL语言,不是SQL。 重启nexus服务器生效 仓库配置自带的仓库配置:maven-central:maven的中央仓库,,format为“maven2" , type为“proxy”(代理),Remote storage配置的代理的 远程maven仓库路径。如果要使用该仓库,只需拷贝该仓库的 URL 到自己的maven setting配置文件中。maven-releases:jar包的正式发行版,type 为"hosted"(本地仓)。如果要使用该仓库,只需拷贝该仓库的 URL 到自己的maven setting配置文件中。maven-snapshots:jar包的快照版,type 为"hosted",默认创建的maven的jar包即为快照版。maven-public:聚合分组仓库。type为“group"(组),提供了聚合分组的功能。Member repositories配置的是该组包含的仓库成员。可以将需要配置的多个仓库都加入这个分组中,最终在maven setting配置文件中配置这个组的URL即可。nuget-group、nuget-hosted、nuget.org-proxy 是 format 为“nuget" 的仓库示例。创建仓库:选择 Create repository选择要创建的仓库类型,例如 maven2(proxy)(代理远程maven仓库)设置仓库名称、代理的远程仓库地址 阿里云maven )本地仓设置成允许重复提交:默认情况下,创建的仓库只允许提交一次,需要设置成可重复提交。(如果禁止重复提交模式下,多次提交会报405错误)进入需要配置的仓库,例如 maven-releases 、maven-snapshots在 Hosted ---> Deployment policy ,选择 Allow redeploy在maven中使用Nexus中的仓库方式1:通过mirrors配置在maven的settings.xml中进行配置:如果用户名/密码错误,将会返回 401 错误(即没有权限)方式2:通过profiles配置在maven的settings.xml中进行配置两种方式对比:如果使用mirrors方式配置,当私服宕机时,maven项目的依赖便无法下载。如果使用profile方式配置,当私服宕机时,maven项目的依赖会到自动切换到Maven远程仓库进行下载。方式3:在项目中配置:上传项目到nexus仓库在maven的settings文件中添加配置:上传不需要mirrors和profiles,仓库路径在项目的pom.xml中进行定义在需要上传的资源的项目 pom.xml 中添加配置:此处的地址不可以配置成 maven-public 的地址,因为maven-public是一个聚合仓库,此处需要指明要上传的仓库在项目中执行 maven 的 deploy 命令。如果项目的版本是 xxx-SNAPSHOTS,会上传到快照仓库,但是上传上去的jar包的名称后面会加上时间戳。如果项目的版本是 xxx-RELEASE,会上传到发行版仓库,上传上去的jar包名称就是项目中的名称使用Docker安装安装方式1:使用docker部署 安装docker环境  从dockerHub上拉取nexus3的镜像   该镜像位于dockerHub上,但不是docker官方镜像,在网易数帆、阿里云等镜像中心都搜索不到。 从dockerHub上拉取时网络比较卡顿,如果网络超时就多试几次。 镜像拉取完成之后,使用docker进行运行   nexus3的web默认绑定的端口为8081 使用浏览器访问:http://192.168.29.131:8081  启动较慢,可能需要等待一会儿才能访问到为了避免以后再次拉取nexus镜像较慢问题,在拉取镜像成功之后,将镜像导出成一个tar包。以后重新部署时直接将tar包作为镜像导入docker即可。关闭docker容器时,确保有足够的时间使nexus的数据库关闭:安装方式2:使用Docker file进行构建有3个参数: NEXUS_VERSION:Nexus Repository Manager的版本NEXUS_DOWNLOAD_URL:Nexus Repository的下载路径,用于NEXUS_VERSION的替代方式NEXUS_DOWNLOAD_SHA256_HASH:下载的Nexus Repository Manager的sha256校验。如果提供了NEXUS_VERSION或NEXUS_DOWNLOAD_URL,则sha256参数必需 使用rspec测试Dockerfile:Docker相关配置默认用户是 admin,第一次启动时,为其生成的一串UUID密码位于 /nexus-data/admin.password 中。查看密码:服务在新容器中可能需要2-3分钟才能启动,可以通过日志查看是否就绪:nexus的安装方式为:/opt/sonatype/nexus/nexus-data为永久目录,该目录用于配置、日志和存储,Nexus进程必需可写该目录。可以通过 INSTALL4J_ADD_VM_PARAMS 环境变量,将JVM参数传递给启动脚本,默认为:-Xms2703m -Xmx2703m -XX:MaxDirectMemorySize=2703m -Djava.util.prefs.userRoot=${NEXUS_DATA}/javaprefs。例如:其中 -Djava.util.prefs.userRoot可以指定永久目录的路径。可以通过 NEXUS_CONTEXT 环境变量来控制Nexus上下文路径,默认为 /。例如:数据持久化因为永久目录默认为/nexus-data,所以需要对永久目录进行持久化。方式1:使用docker volume卷。docker volume卷是持久性的因为可以专门为此创建一个卷。官方推荐做法方式2:使用主机目录。因为主机目录中的数据本身不会清空,所以可以将主机目录作为docker中的/nexus-data目录进行挂载创建npm私仓注意事项正常创建好一个 npm 私仓后,通过 npm publish向私仓上传npm资源: 配置nexus,nexus默认npm是失效的。 使用管理员用户登录nexus的web管理页面找到:security --> Realms将npm Bearer Token Realm配置成 Active  将本地npm的仓库地址配置为私仓地址:   配置登录npm私仓的用户名、密码、邮箱   进入到package.json的同级目录,进行发布   此处需要注意,如果package.json中publishConfig配置了其他的registry,需要将其改为我们的私仓地址,或者去掉该配置。 否则会报错:-4048(即用户未登录的错误)如果用户名密码有问题,可以找到.npmrc文件进行修改: 使用命令查看 .npmrc文件的路径   打开该文件,删除_authToken 的那一行  重新使用 npm login登录即可 仓库分文件夹存储 在Web管理页面:Repository --> Blob Stores  Create blob store  选择存储类型:File或者S3例如选择 File 文件存储;起一个Blob名称;填写文件保存路径,默认为:/home/nexus/sonatype-work/nexus3/blobs/Blob名称 创建新的仓库时,便可以在 Storage --> Blob store 选择我们自定义的文件夹进行存储。Maven使用命令方式上传到私仓命令:整个资源库上传到私仓将整个本地的资源库上传到nexus私仓: 先将本地repository仓库文件夹打成一个完整的zip压缩包  上传到nexus服务器上  解压zip  进入repository目录  清理*.lastUpdated、_remote.repositories文件将本地仓库里面所有的maven-metadata-alimaven.xml改名为maven-metadata.xml(alimaven是本地maven的settings文件中设置的镜像仓库名)编写 mvnimport.sh 脚本,内容如下  

Shell

运行代码复制代码

1

#!/bin/bash# copy and run this script to the root of the repository directory containing files# this script attempts to exclude uploading itself explicitly so the script name is important# Get command line params while getopts ":r:u:p:" opt; do case $opt in r) REPO_URL="$OPTARG" ;; u) USERNAME="$OPTARG" ;; p) PASSWORD="$OPTARG" ;; esacdone find . -type f -not -path './mavenimport\.sh*' -not -path '*/\.*' -not -path '*/\^archetype\-catalog\.xml*' -not -path '*/\^maven\-metadata\-local*\.xml' -not -path '*/\^maven\-metadata\-deployment*\.xml' | sed "s|^\./||" | xargs -I '{}' curl -u "$USERNAME:$PASSWORD" -X PUT -v -T {} ${REPO_URL}/{} ;

将私仓文件、sh脚本授权  执行shell脚本并传入参数  

Shell

运行代码复制代码

1

./mvnimport.sh -u admin -p admin -r http://私仓地址:8081/repository/mvn-host/

等全部导入完毕后,在nexus控制台页面刷新即可看到已导入的jar Npm将依赖使用命令上传登录资源库

Shell

运行代码复制代码

1

npm login

进入package.json页面,进行上传

Shell

运行代码复制代码

1

npm push

Docker使用命令上传镜像登录资源库

Shell

运行代码复制代码

1

docker login 资源库地址 -u 用户名

将要上传的镜像复制一个tag

Shell

运行代码复制代码

1

docker tag mysql:8 192.168.xxx.xxx:8881/mysql:8

上传镜像

Shell

运行代码复制代码

1

docker push 192.168.xxx.xxx:8881/mysql

相关文章
|
1月前
|
Java Maven 数据安全/隐私保护
06-nexus私仓环境搭建
本文详细介绍Nexus Repository Manager OSS的安装与配置,涵盖JDK环境准备、服务部署、用户创建及启动操作。指导用户搭建Maven和Docker私有仓库,实现jar包与镜像的上传下载,并配置匿名访问与本地客户端信任。支持多种仓库类型,适用于企业级制品管理。
156 0
|
索引 存储 数据库
数据库设计规范
基于阿里数据库设计规范扩展而来
50699 4
|
Kubernetes 关系型数据库 MySQL
制品库 Jfrog Artifactory 搭建私服
JFrog Artifactory 功能最强大的二进制制品仓库。在 Google、Apple、思科、甲骨文、华为、腾讯等众多世界500强公司中都有大规模使用,在二进制软件制品管理领域处于绝对领先地位。与其他服务不同,JJFrog Artifactory 在版本发行上分类较多且杂。
1959 0
制品库 Jfrog Artifactory 搭建私服
|
5月前
|
数据采集 Web App开发 存储
用Python的Requests+BeautifulSoup爬取微博热搜榜及话题内容
用Python的Requests+BeautifulSoup爬取微博热搜榜及话题内容
|
网络协议 网络架构
OSI 模型和 TCP/IP 模型的异同
OSI 模型和 TCP/IP 模型的异同
505 1
|
Windows
DOS 批处理 setlocal命令、endlocal命令详解
setlocal这是一个命令,它开始局部化环境更改,通常在批处理文件中使用,以确保在脚本中所做的任何环境更改(例如设置或修改环境变量)不会影响到调用此批处理的上下文或其他批处理文件
765 14
|
数据采集 机器学习/深度学习 安全
疫苗效果分析:如何使用疫苗预防率等指标来评估疫苗的预防效果
疫苗效果分析:如何使用疫苗预防率等指标来评估疫苗的预防效果
2665 0
|
算法
数学建模国赛/美赛常见赛题类型及建模方案(纯干货)
主客观概念主要是在指标定权时来划分的。主观评价与客观评价的区别是,主观评价算法在定权时主要以判断者的主观经验为依据,而客观评价则主要基于测量数据的基本特性来综合定权
1236 0
数学建模国赛/美赛常见赛题类型及建模方案(纯干货)
|
安全 网络协议 Unix
使用SCP在Linux中安全复制文件:参数详解
使用SCP在Linux中安全复制文件:参数详解
846 0
|
Docker 容器
waiting for docker daemon: failed to start docker engine: dockerd failed to start: exit status 1
waiting for docker daemon: failed to start docker engine: dockerd failed to start: exit status 1
339 0

热门文章

最新文章