当前位置: 首页 > news >正文

Sonatype Nexus 部署手册

文章目录

    • 一、前言
    • 二、软件环境
      • 2.1 版本变更:
        • 2.1.1 变更存储的原因
        • 2.2.2 H2作为存储的注意点
    • 三、资源配置
    • 四、开始部署
      • 4.1 部署jdk17
      • 4.2 离线部署nexus
        • 4.2.1 下载
        • 4.2.2 部署
          • 1. 上传到服务器
          • 2. 解压
          • 3. 添加用户
          • 4. 修改启动参数
          • 5. 迁移sonatype-work ,并授权
          • 6. 创建软链接
          • 7. 创建nexus.service
    • 五、登录
      • 5.1 获取初始化密码:
      • 5.2 禁用匿名访问
      • 5.3 Nexus was not configured with an encryption key and is using the Default key
        • 5.3.1 创建 JSON 密钥文件
        • 5.3.2 启用重新加密
        • 5.3.3 通过 API 创建重新加密任务
        • 5.3.4 重启nexus
    • 六、快速部署脚本
      • 6.1 上传安装包
      • 6.2 部署脚本deploy_nexus.sh
      • 6.3 授权脚本并运行
      • 6.4启动完成

一、前言

Nexus有诸多优点,比如集中管理版本,依赖缓存,安全访问等,用来做maven库,npm库,docker镜像库等。公司内部一般都会使用。当然也有其他优秀的产品,主要看公司开发人员的规模,访问量大小。

本篇博客以最新的nexus版本为例,演示如何部署,文章最后也提供了快速部署脚本;可供大家参考。

二、软件环境

操作系统: ubuntu24.04

nexus: 3.73.012 java17

2.1 版本变更:

在3.70.x 之前的版本是用OrientDB作为存储;

3.71.0及之后的版本是用 postgresql 或者 H2 作为存储的;

使用外部 PostgreSQL 数据库需要付费的 Pro 许可证,由于本公司内部人员规模不大,所以采用他默认的嵌入式 H2 数据库。

2.1.1 变更存储的原因

https://help.sonatype.com/en/upgrading-to-nexus-repository-3-71-0-and-beyond.html

image-20241031201555242

2.2.2 H2作为存储的注意点

https://help.sonatype.com/en/sonatype-nexus-repository-system-requirements.html

image-20241031202109080

不过也不用担心,10W个组件一般用不了;目前我们研发部几个部门公用才5W多的组件

image-20241031202256444

至于20000个请求一般来说也不会超过,而且超过只是对性能有影响。

三、资源配置

官网推荐的系统配置

image-20241031202642233

CPU: 8核

内存: 16 GB

磁盘: 300 GB

sda[系统盘] 100GB, 默认分区

sdc[数据盘] 200GB 挂载点 /data

四、开始部署

4.1 部署jdk17

参考 : 离线部署jdk8,jdk17, jdk21

4.2 离线部署nexus

4.2.1 下载

下载地址: https://download.sonatype.com/nexus/3/nexus-3.73.0-12-unix.tar.gz

image-20241031200406289

4.2.2 部署
1. 上传到服务器

image-20241031203143009

2. 解压

tar -zxf nexus-3.73.0-12-unix.tar.gz -C /opt

3. 添加用户
# 添加用户
groupadd nexus
useradd -r -g nexus -s /bin/false nexus
4. 修改启动参数

如何修改jvm参数,可参考官方文档: Nexus Repository Memory Overview

image-20241031204847744

vim /opt/nexus-3.73.0-12/bin/nexus.vmoptions

image-20241031205342807

5. 迁移sonatype-work ,并授权
mkdir /data && mv /opt/sonatype-work/ /data
chown -R nexus:nexus /data/sonatype-work
chown -R nexus:nexus /opt/nexus-3.73.0-12
6. 创建软链接

ln -s /opt/nexus-3.73.0-12/bin/nexus /etc/init.d/nexus

7. 创建nexus.service

vim /etc/systemd/system/nexus.service

[Unit]
Description=nexus service
After=network.target[Service]
Type=forking
LimitNOFILE=65536
Environment="JAVA_HOME=/usr/share/jdk-17.0.12"
ExecStart=/etc/init.d/nexus start
ExecStop=/etc/init.d/nexus stop 
User=nexus
Restart=on-abort
TimeoutSec=600[Install]
WantedBy=multi-user.target

注: 如果你的java环境配置在了/etc/profile中,nexus是没有权限获取到的,启动会报错; 所以在启动脚本中指定了JAVA_HOME的地址;

激活服务

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

启动大概2~3分钟

image-20241031212112250

启动成功;

五、登录

访问 http://ip:8081

image-20241031212345439

5.1 获取初始化密码:

cat /data/sonatype-work/nexus3/admin.password

登录后让你修改密码;

5.2 禁用匿名访问

image-20241031212606583

5.3 Nexus was not configured with an encryption key and is using the Default key

登录进去你会发现有告警;

image-20241031213017726

这个告警在官网中也有说明

Re-encryption in Nexus Repository

这是nexus 3.73.0+ 为了增强安全性,让修改密钥。

官网中有详细步骤;以下是处理步骤

5.3.1 创建 JSON 密钥文件
mkdir -p /usr/local/secrets && vim /usr/local/secrets/file.json

填写以下内容:

{"active": "nexus-private-newkey123","keys": [{"id": "nexus-private-newkey123","key": "JavaOpsPro"}]
}

注: active中的值与 keys中的id要对应

5.3.2 启用重新加密

找到并打开 /data/sonatype-work/nexus3/etc/nexus.properties 文件

添加 nexus.secrets.file 属性并将其设置为指向密钥 JSON 文件的完整路径

nexus.secrets.file=/usr/local/secrets/file.json

image-20241031215755948

5.3.3 通过 API 创建重新加密任务

打开网站,F12 随便刷新一个页面,找到请求接口;找到请求头中的token

image-20241031214832560

curl -X 'PUT' \'http://192.168.10.4:8081/service/rest/v1/secrets/encryption/re-encrypt' \-H 'accept: application/json' \-H 'Content-Type: application/json' \-H 'NX-ANTI-CSRF-TOKEN: 0.6079550043331956' \-H 'X-Nexus-UI: true' \-d '{"secretKeyId": "nexus-private-newkey123","notifyEmail": "qguo2019@163.com"
}'

image-20241031215052238

5.3.4 重启nexus
systemctl restart neuxs

这步重启也可在5.3.2 后做;官网中没说需要重启,但实践后发现必须重启;否则不生效。

重启后重新登录并验证。

image-20241101095926037

部署完成!

六、快速部署脚本

提供一个快速部署脚本,方便运维人员快速部署使用。请注意环境和版本,适当修改。

6.1 上传安装包

image-20241101084852096

6.2 部署脚本deploy_nexus.sh

#!/bin/bash# 定义变量
NEXUS_VERSION="3.73.0-12"
JDK_VERSION="17.0.12"
NEXUS_PACKAGE="nexus-${NEXUS_VERSION}-unix.tar.gz"
JDK_PACKAGE="jdk-${JDK_VERSION}_linux-x64_bin.tar.gz"
INSTALL_DIR="/opt"
DATA_DIR="/data"
NEXUS_SERVICE_FILE="/etc/systemd/system/nexus.service"
JAVA_HOME="/usr/share/jdk-${JDK_VERSION}"# 检查是否为root用户
if [ $EUID -ne 0 ]; thenecho "脚本必须使用root用户执行"exit 1
fi# 检查Nexus安装包是否存在
if [ ! -f "${NEXUS_PACKAGE}" ]; thenecho "Nexus安装包 ${NEXUS_PACKAGE} 不存在,请确保已将安装包放置在当前目录。"exit 1
fi# 检查JDK安装包是否存在
if [ ! -f "${JDK_PACKAGE}" ]; thenecho "JDK安装包 ${JDK_PACKAGE} 不存在,请确保已将安装包放置在当前目录。"exit 1
fi# 安装JDK
if [ ! -d "${JAVA_HOME}" ]; thentar -zxf "${JDK_PACKAGE}" -C /usr/share/
fi# 部署Nexus安装包
tar -zxf "${NEXUS_PACKAGE}" -C "${INSTALL_DIR}"# 添加用户nexus
groupadd nexus
useradd -r -g nexus -s /bin/false nexus# 修改启动参数,按照官方推荐的配置
sed -i 's|-Xms2703m|-Xms5G|g' "${INSTALL_DIR}/nexus-${NEXUS_VERSION}/bin/nexus.vmoptions"
sed -i 's|-Xmx2703m|-Xmx5G|g' "${INSTALL_DIR}/nexus-${NEXUS_VERSION}/bin/nexus.vmoptions"
sed -i 's|../sonatype-work|/data/sonatype-work|g' "${INSTALL_DIR}/nexus-${NEXUS_VERSION}/bin/nexus.vmoptions"# 移动sonatype-work,并授权
mkdir -p "${DATA_DIR}"
mv "${INSTALL_DIR}/sonatype-work/" "${DATA_DIR}"
chown -R nexus:nexus "${DATA_DIR}/sonatype-work"
chown -R nexus:nexus "${INSTALL_DIR}/nexus-${NEXUS_VERSION}"# 创建软链接
ln -s "${INSTALL_DIR}/nexus-${NEXUS_VERSION}/bin/nexus" /etc/init.d/nexus# 创建nexus.service,明确指定JAVA_HOME路径
cat <<EOF > "${NEXUS_SERVICE_FILE}"
[Unit]
Description=nexus service
After=network.target[Service]
Type=forking
LimitNOFILE=65536
Environment="JAVA_HOME=${JAVA_HOME}"
ExecStart=/etc/init.d/nexus start
ExecStop=/etc/init.d/nexus stop
User=nexus
Restart=on-abort
TimeoutSec=600[Install]
WantedBy=multi-user.target
EOF# 激活服务
systemctl daemon-reload
systemctl enable nexus.service
systemctl start nexus.serviceecho "Nexus部署完成!"

6.3 授权脚本并运行

chmod +x deploy_nexus.sh
./deploy_nexus.sh

image-20241101092946713

6.4启动完成

image-20241101093140800

image-20241101093346173

后续:nexus的配置和使用请参考另一篇博客
Nexus配置手册

相关文章:

Sonatype Nexus 部署手册

文章目录 一、前言二、软件环境2.1 版本变更&#xff1a;2.1.1 变更存储的原因2.2.2 H2作为存储的注意点 三、资源配置四、开始部署4.1 部署jdk174.2 离线部署nexus4.2.1 下载4.2.2 部署1. 上传到服务器2. 解压3. 添加用户4. 修改启动参数5. 迁移sonatype-work &#xff0c;并授…...

TLV320AIC3104IRHBR 数据手册 一款低功耗立体声音频编解码器 立体声耳机放大器芯片麦克风

TLV320AIC3104 是一款低功耗立体声音频编解码器&#xff0c;具有立体声耳机放大器以及在单端或全差分配置下可编程的多个输入和输出。该器件包括基于寄存器的全面电源控制&#xff0c;可实现立体声 48kHz DAC 回放&#xff0c;在 3.3V 模拟电源电压下的功耗低至 14mW&#xff0…...

(8)结构体、共用体和枚举类型数据

1. 结构体、共用体的定义及区别,typedef 定义别名 结构体的定义 结构体是一种用户自定义的数据类型,它可以将不同类型的数据组合在一起。例如,定义一个表示学生信息的结构体: // 定义结构体类型 struct Student struct Student {char name[20];int age;float score; };共…...

Jedis操作和springboot整合redis

Jedis-springboot整合redis Jedis 引入jedis依赖 注意事项 测试相关数据类型 Key String List set hash zset 案例 spring boot整合redis 引入相关依赖 在application.properties中配置redis 配置 创建redis配置类 创建测试类 Jedis 引入jedis依赖 <depen…...

基于AI大模型的复杂扫描件PDF信息提取与规整

前言 场景大致是会上传一个几十页的扫描件PDF&#xff0c;让AI在当中找出我需要的字段&#xff0c;本文会隐去具体行业信息和具体的AI提示词内容&#xff0c;只分享技术相关内容&#xff0c;请见谅。 AI模型选择 针对我们行业的使用场景&#xff0c;我主要测试了GPT、Claude以…...

为什么https先非对称加密,然后对称加密?

HTTPS之所以先使用非对称加密&#xff0c;然后在对称加密&#xff0c;主要是基于两者在加密效率与安全性方面的特性考虑。 首先&#xff0c;非对称加密具有极高的安全性&#xff0c;因为它使用了公钥和私钥这一对密钥。公钥是公开的&#xff0c;任何人都可以使用它来加密数据&…...

【Coroutines】Full Understanding of Kotlinx.Corutines Framework

文章目录 What is CorutinesDifference between Corutine and ThreadFast UsageSuspend FunctionAdvanced Usage of CoroutineCoroutine EssentialsCoroutineContextCoroutineScopePredefined CoroutineScopePredefined DispatchersPredefined CoroutineStartJobCreate a Corou…...

Python面向对象,实现图片处理案例,支持:高斯模糊、Canny边缘检测、反转边缘图像、生成手绘效果、调亮度......等等

实验图片如下&#xff1a; 命名为img1.jpg, 放在项目下新建文件夹images下 项目构造如下&#xff1a; app.py源码如下 import cv2 import os from matplotlib import pyplot as plt import numpy as npclass ImageProcessor:def __init__(self, image_path):self.image cv…...

SOLID - 依赖倒置原则(Dependency Inversion Principle)

SOLID - 依赖倒置原则&#xff08;Dependency Inversion Principle&#xff09; 定义 依赖倒置原则&#xff08;Dependency Inversion Principle&#xff0c;DIP&#xff09;是面向对象设计中的五大基本原则之一&#xff0c;通常缩写为SOLID中的D。DIP由Robert C. Martin提出&…...

【.NET 8 实战--孢子记账--从单体到微服务】--需求拆分与规划

在上一篇文章中我们收集了需求&#xff0c;并对需求进行了简单的分析和规划&#xff0c;但是对于开发人员来说&#xff0c;上一篇文章的需求还不够详细&#xff0c;并且没有形成计划。因此本篇文章将带领大家来拆分需求并规划开发里程碑。 一、详细需求列表 项目组进行了多次…...

在macOS的多任务处理环境中,如何平衡应用的性能与用户体验?这是否是一个复杂的优化问题?如何优化用户体验|多任务处理|用户体验|应用设计

目录 一 多任务处理与应用性能 1. macOS中的多任务处理机制 2. 性能优化的基本策略 二 用户体验的关键要素 1. 响应速度 2. 界面友好性 3. 功能的直观性 三 平衡性能与用户体验的策略 1. 资源管理 2. 优化数据加载 3. 使用合适的线程模型 4. 实时监测和调整 四 使…...

Vscode配置CC++编程环境的使用体验优化和补充说明

文章目录 快速编译运行&#x1f47a;code runner插件方案Code Runner Configuration 直接配置 相关指令和快捷键默认task配置和取消默认 配置文件补充介绍(可选 推荐阅读)&#x1f60a;使用vscode预置变量和环境变量环境变量的使用使用环境变量的好处环境变量可能引起的问题 检…...

十个方法杜绝CAD图纸泄密风险!2024年图纸防泄密指南!「必看」

随着信息技术的发展&#xff0c;CAD图纸的应用日益普遍&#xff0c;然而随之而来的图纸泄密风险也愈加严重。企业在提升效率的同时&#xff0c;更需重视信息安全。为此&#xff0c;本文将介绍十个有效的方法&#xff0c;帮助企业杜绝CAD图纸泄密风险&#xff0c;保障商业机密。…...

技术干货|HyperMesh CFD功能详解:虚拟风洞 Part 1

虚拟风洞VWT 从2023版本开始&#xff0c;虚拟风洞VWT&#xff08;Virtual Wind Tunnel&#xff09;模块合并到HyperMesh CFD中。 用户在VWT模块中完成LBM求解器ultraFluidX的前处理设置&#xff0c;导出参数文件XML和模型文件STL&#xff0c;并在GPU服务器上提交计算。 VWT目前…...

022集——统计多条线的总长度(CAD—C#二次开发入门)

如下图所示&#xff0c;选择多条线并统计长度&#xff1a; c#中不包含直接获取curve曲线长度 属性&#xff0c;需用如下方法&#xff1a;curve.GetDistanceAtParameter(item.EndParam) 附部分代码如下&#xff1a; using Autodesk.AutoCAD.ApplicationServices; using Autode…...

大模型重要技术系列三:高效推理

接上一篇高效训练&#xff0c;这一篇汇总下高效推理的方法。高效推理的两个主要优化目标是低延迟&#xff08;快速得到推理结果&#xff09;和高吞吐量&#xff08;能同时处理很多请求&#xff09;&#xff0c;同时还要尽可能地少用资源&#xff08;算力、存储、网络带宽&#…...

Android 刘海屏适配指南

如果您不希望您的内容与刘海区域重叠&#xff0c; 以确保您的内容不会与状态栏及 导航栏。如果您要呈现在刘海区域中&#xff0c;请使用 WindowInsetsCompat.getDisplayCutout() 检索 DisplayCutout 对象 包含每个刘海屏的安全边衬区和边界框。借助这些 API 您需要检查视频内容…...

微信小程序服务通知

项目中用到了小程序的服务消息通知&#xff0c;通知订单状态信息&#xff0c;下边就是整理的一下代码&#xff0c;放到项目中&#xff0c;把项目的小程序appid和小程序的secret写进去&#xff0c;直接运行即可 提前申请好小程序服务信息通知短信模板&#xff0c;代码需要用到模…...

Ubuntu使用Qt虚拟键盘,支持中英文切换

前言 ​ 最近领导给了个需求&#xff0c;希望将web嵌入到客户端里面&#xff0c;做一个客户端外壳&#xff0c;可以控制程序的启动、停止、重启&#xff0c;并且可以调出键盘在触摸屏上使用(我们的程序虽然是BS架构&#xff0c;但程序还是运行在本地工控机上的)&#xff0c;我…...

泰州农商行

该文章用于测试&#xff0c;暴露面检测服务 1595116111115951161112159511611131595116111415951161115159511611161595116111715951161118159511611191595116112015951161121159511611221595116112315951161124159511611251595116112615951161127159511611281595116112915951…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...