Nexus3 部署备份与恢复
Posted shark_西瓜甜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 配置文件 ~/.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和数据库之间的同步问题。
恢复的步骤:
- 停止 Nexus
- 从
$data-dir/db
中删除以下目录- component
- config
- security
- 转到存储备份数据库文件的位置(按照此文档设置的话,目录在
/data/nexus3Data
) - 将相应的数据库备份文件复制到
$data-dir/restore-from-backup
以进行恢复 - 还原对应于数据库备份的blob存储备份(时间上要一致)
- 重新启动 Nexus 存储库
- 验证 Nexus 存储库是否正常运行
- 从目录
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>
以上是关于Nexus3 部署备份与恢复的主要内容,如果未能解决你的问题,请参考以下文章