06-nexus私仓环境搭建

简介: 本文介绍Nexus Repository Manager OSS版的安装与配置,包括JDK环境准备、Nexus部署、用户创建、启动服务及Web界面登录。详细说明如何搭建Maven、Docker私仓,实现Jar包上传、本地仓库迁移、项目配置使用私仓,以及Docker镜像的推送拉取。同时简述npm、helm等其他类型仓库的启用方法,适用于企业级制品管理。

Nexus安装

  1. 检查服务器上是否安装有 JDK 1.8 +,如果没有则需要下载安装JDK。
  2. 到sonatype官网下载Nexus Repository Manager OSS
    nexus有OSS版和PRO版。OSS版开源免费,PRO版需要付费。
    此处下载OSS版
  3. 将下载的压缩包放到服务器解压
    sonatype将Nexus安装包托管到了 Fastly CDN,国内访问Fastly CDN非常卡顿。可能会下载失败,需要多试几次。
    tar -zxvf nexus-3.30.0-01-unix.tar.gz
    解压后会有两个文件夹:
    ○ nexus-3.69.0-02
    nexus软件
    ○ sonatype-work
    nexus工作目录。
    该文件夹和nexus软件在相同路径中,最好不要改动。
  4. 修改nexus的配置
    编辑 nexus-3.69.0-02/etc/nexus-default.properties 文件。
    或者编辑sonatype-work/nexus3/etc/nexus.properties文件(推荐)

    DO NOT EDIT - CUSTOMIZATIONS BELONG IN $data-dir/etc/nexus.properties

    #

    Jetty section

    application-port=9091
    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

  1. 在linux上创建nexus用户:

    添加用户

    useradd nexus

    配置密码 nexus

    passwd nexus
  2. 使用nexus用户登录,并启动nexus:

    启动

    ./nexus start

    关闭

    ./nexus stop

    查看状态

    ./nexus status

    重启

    ./nexus restart
  3. 浏览器放问nexus
    启动较缓慢,需要等待一段时间才能连上
    http://192.168.xxx.xxx:9091/

首次登录时修改密码

  1. 进入nexus的web管理页面后,所有的配置都是只读的,需要登录才能操作
  2. 点击Sign In 进行登录默认用户名:admin默认密码:在 /home/nexus/sonatype-work/nexus3/admin.password 文件中
    旧版本Nexus没有该密码文件,默认密码为:admin123
  3. 首次登录需要修改密码,将密码改为:admin
    修改密码后,admin.password文件会被自动删除
  4. 配置是否允许匿名访问(配置为允许)
    启用匿名访问意味着,用户可以在没有凭据的情况下从仓库搜索、浏览和下载组件。

Maven私仓
创建maven私仓

  1. 使用admin登录nexus
  2. 点击系统管理设置按钮(左上角小齿轮)
  3. 创建文件夹保存maven数据:进入 Repository -> Blob Stores,create blob store,类型选择File,名称输入my-maven-file,路径会自动生成,也可以自己调整。
  4. 创建私仓:进入 Repository -> Repositories,create repository,选择 maven2(hosted)(内网无法连接代理,只能为本机Maven)。
    Name: my-mavenOnline:默认勾选Version policy:选择Mixed(快照版和发布版都允许上传)Layout policy:默认StrictContent Disposition:默认 inlineBlob store:选择刚刚创建的my-maven-fileStrict Content Type Validation:默认勾选Deployment policy:选择 Allow redeploy(允许重复上传)点击Create repository完成创建

向maven私仓上传jar包
方式1(适合上传单个jar):使用admin登录页面,点击左侧Upload,选择my-maven,将需要上传的jar包上传即可。

方式2(适合上传多个jar):将需要上传的自己本地的资源库整体上传。

  1. 先将本地repository仓库文件夹打成一个完整的zip压缩包
  2. 上传到nexus服务器上
  3. 解压zip
  4. 进入repository目录
  5. 清理*.lastUpdated、_remote.repositories文件

    查看所有*.lastUpdated

    find . -name '*.lastUpdated' -type f

    删除*.lastUpdated

    find . -name '*.lastUpdated' -type f -exec rm {} +

    检查

    find . -name '*.lastUpdated' -type f

查看所有 _remote.repositories 文件

find . -name '_remote.repositories' -type f

删除所有 _remote.repositories 文件

find . -name '_remote.repositories' -type f -exec rm {} +

检查

find . -name '_remote.repositories' -type f

查看所有resolver-status.properties 文件

find . -name 'resolver-status.properties' -type f

删除所有 resolver-status.properties 文件

find . -name 'resolver-status.properties' -type f -exec rm {} +

检查

find . -name 'resolver-status.properties' -type f

  1. 将本地仓库里面所有的maven-metadata-alimaven.xml改名为maven-metadata.xml(alimaven是本地maven的settings文件中设置的镜像仓库名)
    find . -name "maven-metadata-alimaven.xml" -execdir mv {} maven-metadata.xml \;
  2. 编写 mvnimport.sh 脚本,内容如下

    !/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"
;;
esac
done

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}/{} ;

  1. 将私仓文件、sh脚本授权
  2. 执行shell脚本并传入参数
    ./mvnimport.sh -u admin -p admin -r http://192.168.xxx.xxx:9091/repository/my-maven/
  3. 等全部导入完毕后,在nexus控制台页面刷新即可看到已导入的jar

项目中使用该私仓
配置本地的maven的settings.xml配置文件,加入该私仓。例如:
<?xml version="1.0" encoding="UTF-8"?>




D:\PC_Document\Maven_Workspace\repository










nexus

*

my maven

http://192.168.xxx.xxx:9091/repository/my-maven/








jdk-1.8


true

1.8




1.8

1.8

1.8







nexus



central

http://192.168.xxx.xxx:9091/repository/my-maven/


true




true









central

http://192.168.xxx.xxx:9091/repository/my-maven/


true




true













nexus



Docker私仓
创建Docker私仓

  1. 使用admin登录nexus
  2. 点击系统管理设置按钮(左上角小齿轮)
  3. nexus默认docker是失效的,需要 在security --> Realms,将docker配置成Active
  4. 创建文件夹保存maven数据:进入 Repository -> Blob Stores,create blob store,类型选择File,名称输入my-docker-file,路径会自动生成,也可以自己调整。
  5. 创建私仓:进入 Repository -> Repositories,create repository,选择 docker(hosted)。
    Name: my-dockerOnline:默认勾选Http: 勾选,并填入将来连接该Docker仓库的端口号8889Https:已经勾选了http,可以不再勾选httpsAllow anonymous docker pull:勾选。(允许不登录时匿名下载镜像)Enable Docker V1 API:默认不勾选。(无需启动对V1旧版本API的支持)Blob store:选择刚刚创建的 my-docker-fileDeployment policy:选择 Allow redeploy(允许重复提交)点击Create repository完成创建

docker客户端对私仓镜像上传下载
需要先安装好Docker客户端,在/etc/docker/daemon.json中加入可信仓库,允许http连接:
{
"insecure-registries": [
"https://cce.test.com",
"192.168.xxx.xxx:8889"
],
"data-root":"/data/docker",
"log-driver":"json-file",
"log-opts":{
"max-size":"200m",
"max-file":"3"
},
"features": {
"buildkit": true
}
}

加入配置后,重启docker:
sudo systemctl daemon-reload
sudo systemctl restart docker

下载镜像:

docker私仓配置了允许匿名下载,无需登录即可进行pull镜像

docker pull 192.168.xxx.xxx/my/tomcat:9.0.90-jre8

上传镜像:

上传镜像到私仓时,需要先登录

docker login -u admin -p admin 192.168.xxx.xxx:8889

将镜像push到私仓

docker push 192.168.xxx.xxx/aaa/aaa-portal:20241031-100820

登出

docker logout 192.168.xxx.xxx:8889

其他仓库
npm私仓、helm私仓等与前面搭建几乎一致。
与docker私仓类似,nexus默认npm也是是失效的,需要 在security --> Realms,将npm配置成Active

相关文章
|
3月前
|
Java Maven 数据安全/隐私保护
06-nexus私仓环境搭建
本文详细介绍Nexus Repository Manager OSS的安装与配置,涵盖JDK环境准备、服务部署、用户创建及启动操作。指导用户搭建Maven和Docker私有仓库,实现jar包与镜像的上传下载,并配置匿名访问与本地客户端信任。支持多种仓库类型,适用于企业级制品管理。
219 0
|
消息中间件 Java Kafka
Springboot集成高低版本kafka
Springboot集成高低版本kafka
1909 0
|
3月前
|
Java Maven 数据安全/隐私保护
Nexus仓库
Nexus是一款开源仓库管理工具,支持Maven、NPM、Docker等格式。本文介绍其在Linux与Docker环境下的安装配置,包括JDK部署、OSS版下载、仓库创建、用户权限管理及密码重置方法,并涵盖私服搭建、持久化存储、资源上传与匿名访问设置,助力企业高效构建私有仓库体系。
|
算法 安全 Linux
SSH学习(二)- SSH-TRANS相关
重点学习SSH Transport Layer相关的密码学内容。
915 0
SSH学习(二)- SSH-TRANS相关
|
JSON 网络协议 Java
OkHttp3发送http请求在Java中的使用方法
记录总结一下Http的get请求和post请求的使用方法和问题解决
1798 0
|
3月前
|
机器学习/深度学习 算法 算法框架/工具
基于yolov8的深度学习垃圾分类检测系统
本研究针对传统垃圾分类效率低、准确率不高等问题,提出基于YOLOv8与Python的深度学习检测系统。通过构建高质量标注数据集,利用YOLOv8强大的目标检测能力,实现垃圾的快速精准识别,提升分类自动化水平,助力环境保护与资源回收。
|
3月前
|
Java Maven 数据安全/隐私保护
nexus私仓环境搭建
本文介绍Nexus Repository Manager OSS的安装与配置,包括JDK环境准备、Nexus下载解压、用户创建及服务启动。详细说明如何配置Maven、Docker私仓,实现jar包上传与镜像推送,并支持匿名访问。同时涵盖npm、helm等仓库的搭建要点,适用于企业级私有化部署需求。(239字)
262 0
|
7月前
|
关系型数据库 MySQL 程序员
从自建MySQL到阿里云RDS:程序员的数据库减负革命
如果你正在为自建MySQL数据库的高成本运维发愁,为凌晨三点的主从同步故障告警而崩溃,为开发团队频繁索要新测试库的要求感到窒息——是时候开启一场数据库的自我救赎了。 程序员更需构建"技术敏锐度+工程落地能力+跨域协作"的三维竞争力,通过创建技术组合形成差异化优势。企业应建立持续学习机制,提供AI沙盒环境促进技术转化。
|
SQL 分布式计算 Oracle
Datax 环境搭建
datax、环境搭建、数据同步
647 1
|
NoSQL C语言 索引
十二个C语言新手编程时常犯的错误及解决方式
C语言初学者常遇错误包括语法错误、未初始化变量、数组越界、指针错误、函数声明与定义不匹配、忘记包含头文件、格式化字符串错误、忘记返回值、内存泄漏、逻辑错误、字符串未正确终止及递归无退出条件。解决方法涉及仔细检查代码、初始化变量、确保索引有效、正确使用指针与格式化字符串、包含必要头文件、使用调试工具跟踪逻辑、避免内存泄漏及确保递归有基准情况。利用调试器、编写注释及查阅资料也有助于提高编程效率。避免这些错误可使代码更稳定、高效。
2134 12