Nexus3 部署备份与恢复

一、部署

compose.yml

version: '3.9'
services:
  nexus:
    environment:
      INSTALL4J_ADD_VM_PARAMS: "-Xms6g -Xmx6g -XX:MaxDirectMemorySize=15530m "
    image: sonatype/nexus3:3.41.0
    container_name: nexus
    restart: always
    ports:
    - "8081:8081"
    volumes:
      - /data/appsData/nexus/:/nexus-data

二、配置

1 配置 Maven 代理

当您代理组件时,存储库管理器充当本地中间服务器,用于发送到远程存储库/注册表的任何下载请求。

添加阿里云代理

地址:http://maven.aliyun.com/nexus/content/groups/public
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

阿里云 Maven 代理地址:http://maven.aliyun.com/nexus/content/groups/public

在这里插入图片描述

调整仓库的使用顺序

在这里插入图片描述
在这里插入图片描述
移动 aliyun-proxy 到 maven-central (maven 中央仓库)的上面
在这里插入图片描述
在这里插入图片描述

最终本地 Java 项目中配置的仓库地址就是这里的公共仓库,地址在下图中的红色圆圈中
在这里插入图片描述

修改 setings.xml

  • 系统的 $MAVEN_HOME/conf/settings.xml
  • 用户的 ~/.m2/settings.xml

在构建的电脑上,备份原来默认的 Maven 配置文件 ~/.m2/settings.xml

再修改 ~/.m2/settings.xml 文件内容为:

<settings>
<mirrors>
  <mirror>
  <!--This sends everything else to /public -->
  <!-- nexus 是自定义的id 需要和下面 servers 标签中的一致-->
  <id>nexus-</id>
  <mirrorOf>*</mirrorOf>
  <!-- 配置 Nexus3 的本地服务器地址 -->
  <url>http://192.168.80.226:8081/repository/maven-public/</url>
  </mirror>
</mirrors>
<servers>
  <!-- 设置 Nexus3 的用户名密码,就是本地 Nexus3 服务器登录的用户名密码,若果开启了匿名访问,此处可以不设置 -->
  <server>
    <!-- 和上面 mirrors 中的 id 一致 -->
    <id>nexus</id>
    <username>admin</username>
    <password>Password</password>
  </server>
</servers>
<profiles>
  <profile>
  <id>nexus</id>
  <!--Enable snapshots for the built in central repo to direct -->
  <!--all requests to nexus via the mirror -->
  <repositories>
      <repository>
      <id>central</id>
      <url>http://central</url>
      <releases><enabled>true</enabled></releases>
      <snapshots><enabled>true</enabled></snapshots>
      </repository>
  </repositories>
  <pluginRepositories>
      <pluginRepository>
      <id>central</id>
      <url>http://central</url>
      <releases><enabled>true</enabled></releases>
      <snapshots><enabled>true</enabled></snapshots>
      </pluginRepository>
  </pluginRepositories>
  </profile>
</profiles>
<activeProfiles>
  <!--make the profile active all the time -->
  <activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>

测试

在JAVA项目的服务器上创建测试用的项目目录 java-pj,之后再在目录中创建含如下内容的 pom.xml 文件

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>nexus-proxy</artifactId>
  <version>1.0-SNAPSHOT</version>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.10</version>
    </dependency>
  </dependencies>
</project>

执行如下命令

mvn package

输入预期效果如下图
在这里插入图片描述
构建成功:
在这里插入图片描述

验证

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2 配置 NPM 代理

2.1 添加NPM官方代理

在这里插入图片描述

在这里插入图片描述
添加如下字段对应的值

Name: npm-proxy
Remote Store URL: https://registry.npmjs.org/

在这里插入图片描述
在这里插入图片描述

在项目所在的电脑的命令行执行如下命令

npm config set registry http://Nexus3服务器IP:8081/repository/npm-proxy

http://Nexus3服务器IP:8081/repository/npm-proxy 具体内容可以参考如下方式获取

在这里插入图片描述
在这里插入图片描述

2.2 添加NPM淘宝代理

地址: https://registry.npm.taobao.org
在这里插入图片描述

在这里插入图片描述

在本地项目服务器的命令行中输入如下配置 npm

在这里插入图片描述

npm config set registry http://192.168.80.226:8081/repository/aliyun-npm/

在项目的服务器上,创建目录 test,并在 test 目录下创建 package.json 文件,并用如下内容填充文件

{
"name": "sample_project1",
"version": "0.0.1",
"description": "Test Project 1",
"dependencies" : {
  "commonjs" : "0.0.1"
}
}

运行如下命令测试

npm install

出现如下内容,表示成功

在这里插入图片描述
### 浏览本地仓库组建

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

三、备份

设置备份(数据库)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

注意: /data/nexus3Data 目录需要授予 UID为 200 的用户所有权限

需要备份的目录有哪些

Nexus Repository 将数据存储在 blob 存储中,并将一些 metadata 和配置信息分别保存在数据库中。必须同时备份 Blob 存储和元数据数据库。备份策略应涉及将数据库和 Blob 存储一起备份到新位置,以保持数据不变。完成以下步骤以执行备份

1 Blob 存储备份

对于文件 Blob 存储,请备份存储 Blob 的目录。

  • 对于典型配置,这将是 。$data-dir/blobs

这个可以通过 Tasks 实现,也可以使用操作系统的计划任务实现。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2 节点 ID 备份

每个 Nexus 存储库实例都与一个不同的 ID 相关联。必须备份此 ID,以便 Blob 存储指标(磁盘上 Blob 的大小和计数)和 Nexus 防火墙报告在还原时正常运行。要备份以保留节点 ID 的文件位于以下位置:

$data-dir/keystores/node/​

这个使用操作系统的计划任务实现即可.

0 0  *  *  *  rsync -raP $data-dir/keystores/node/​    --rsh=ssh root@远程服务器IP:/path/to/backup

四、恢复(未验证,勿操作)

在恢复组件数据库时,还必须恢复包含组件的相应blob存储。不这样做将导致blobstore和数据库之间的同步问题。

恢复的步骤:

  1. 停止 Nexus
  2. $data-dir/db 中删除以下目录
    • component
    • config
    • security
  3. 转到存储备份数据库文件的位置(按照此文档设置的话,目录在 /data/nexus3Data)
  4. 将相应的数据库备份文件复制到 $data-dir/restore-from-backup 以进行恢复
  5. 还原对应于数据库备份的blob存储备份(时间上要一致)
  6. 重新启动 Nexus 存储库
  7. 验证 Nexus 存储库是否正常运行
  8. 从目录 restore-from-backup 中删除备份文件

提示

如果blob存储和数据库备份不是在同一时刻进行的,则在还原后可能会失去同步。
要解决此问题

在这里插入图片描述

在这里插入图片描述

五、设置上传自定义组件的功能

默认情况下,不用给 maven 设置用户名和密码,即可实现拉去依赖组件并缓存在本地仓库的功能。
但是,如果是开发人员自己开发的某个组件需要共享出来,以满足其他开发人员的需求。其他开发人员可以通过这个私有maven仓库下载到自己开发模块所依赖的私有组件。

创建角色 Role

在这里插入图片描述
在这里插入图片描述

创建角色,并添加权限 nx-repository-view-*
在这里插入图片描述
创建用户,并添加角色
在这里插入图片描述

在这里插入图片描述

settings

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
 
    <!-- 配置Maven服务器的账号信息,自动化部署的时候需要用到 -->
  <servers>
    <server>
      <id>server_id</id>
      <!-- 使用公共的dev/password账号进行日常的发布管理 -->
      <username>dev</username>
      <password>password</password>
    </server>
  </servers>
 
   <!-- 使用Mirror配置节可以强制所有包请求都会被转向内网Nexus服务器的地址 -->
  <mirrors>
      <mirror>
      <id>mirror_name</id>
      <mirrorOf>*</mirrorOf>
      <url>http://nexus_ip:8081/repository/maven-public/</url>
    </mirror>
  </mirrors>

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
您可以按照以下步骤使用Docker部署Nexus3: 1. 首先,您需要初始化配置文件。可以使用以下命令创建必要的目录: ``` mkdir -p /home/jamel/docker/software/nexus/data mkdir -p /home/jamel/docker/software/nexus/sonatype-work chmod 777 /home/jamel/docker/software/nexus/data/ ``` 2. 接下来,您需要拉取Nexus3镜像。可以使用以下命令拉取最新版本的Nexus3镜像: ``` docker pull sonatype/nexus3:3.29.2 ``` 3. 然后,您可以使用以下命令启动Nexus3容器: ``` docker run --privileged=true \ -e NEXUS_CONTEXT=nexus -d \ -p 8081:8081 \ --restart=always \ -m 4096m \ -e TZ=Asia/Shanghai \ --name=nexus \ -v /home/jamel/docker/software/nexus/data/:/nexus-data \ sonatype/nexus3:3.29.2 ``` 请注意,上述命令中的`/home/jamel/docker/software/nexus/data/`是Nexus3的数据目录,您可以根据需要进行修改。 希望这可以帮助您成功部署Nexus3!\[1\] #### 引用[.reference_title] - *1* [Docker部署Nexus3](https://blog.csdn.net/Jamel_LiToo/article/details/126279760)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [用docker部署nexus3](https://blog.csdn.net/qq_35031273/article/details/99999556)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Docker 安装Nexus3 快速搭建Maven私有仓库 (完整详细版)](https://blog.csdn.net/BThinker/article/details/123688143)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shark_西瓜甜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值