(施工中!!!!!!!!!!!!!!!!!!!!!!!!!!!!)
本文将搭建一个Nexus私服,用于各种开发语言的本地仓库
搭建一个Nexus的目的
- 能够建立一个支持maven、docker registry、go、nuget、npm等等的本地仓库
- 用于代理远程的各种中央库
- 支持未来本地部署的CICD
- 这篇文章覆盖的仓库类型
- maven
- ==go
- ==docker registry
- nuget
- npm
- 同时这篇文章将会跟cicd相关文章联动,用来支持本地开发部署的仓库存储。这包括:
- 测试版本
- 生产版本
- 环境隔离与同步
使用的环境:
- 群晖DS1921+ 虚拟机环境 1core/4G/100G系统盘/500G数据盘
- 操作系统:windows server 2019
- 采用windows的原因是,不想过多的关心操作系统环境的配置细节,尽可能快速搭建一个nexus私服
- 虚拟机IP配置: 192.168.31.205
一、环境准备
下载nexus
从nexus的官网 https://www.sonatype.com/products/repository-oss-download 下载nexus开源版
得到文件:nexus-3.37.0-01-win64.zip
这个文件中已经包含了jre环境,可以不用安装jdk在操作系统中。这是相当便利了
安装windows server 2019环境
在群晖虚拟机中安装windows server 2019操作系统
同时命名为: softwarelifecycle
官方安装文档
请参考这里 https://help.sonatype.com/repomanager3/installation-and-upgrades
其他
TBD
二、安装步骤
解压文件
解压nexus-3.37.0-01-win64.zip到D盘nexus目录下
参数配置
vm参数
在启动之前,可以进行相关的配置
配置文件在: $install-dir/bin/nexus.vmoptions
主要需要修改的是内存、数据存储路径等
这里保持默认,因此就不做任何修改。
其他配置
关于诸如http端口等信息,可以修改: $data-dir/etc/nexus.properties
这里修改这个文件,更改默认端口8081到8091
配置开机启动
安装开机服务 $install-dir/bin/nexus.exe /install softwarelifecycle_nexus
卸载开机服务 $install-dir/bin/nexus.exe /uninstall softwarelifecycle_nexus
配置防火墙
在windows防火墙中,增加一个入站规则
规则允许如下端口进行访问
- 8091端口 – nexus
- 8092端口 – docker registry
登录管理页面
使用浏览器访问 http://192.168.31.205:8091
首次登录管理员账号,账号admin 密码在$data-dir/admin.password 文件里
会提示进行管理员密码修改、是否允许匿名访问等。
三、开启仓库支持
A. go
代理仓库(从上游库中同步+代理)
(这里使用goproxy.cn提供的代理服务作为源)
在Repository->Repositories中选择Create Repository
在弹出的类型中选择 go(proxy) 来新建一个go仓库的proxy
在之后的页面中填写:
- name: goproxy.cn
- remote storage: https://goproxy.cn
- maximum component age: -1 永久保存
- maximum metadata age: -1 永久保存
点击create repository进行保存
然后在Repositories页面选择copy对应创建出来的go仓库的地址,即 http://192.168.31.205:8091/repository/goproxy.cn/
客户端配置
在本地执行
go env -w GO111MODULE=on
go env -w GOPROXY=http://192.168.31.205:8091/repository/goproxy.cn/,direct
go env -w GOSUMDB=”sum.golang.org https://goproxy.cn/sumdb/sum.golang.org”
之后就可以使用go mod进行下载了
本地仓库
TBD
B. Docker registry
代理registry
(参考 https://www.orchome.com/2022)
在 Security > Realms 下将 “Docker Bearer Token Realm” 开启并调高优先级
在 Security > Roles 下 Create Role,ID和name命名为nx-dockerread,并加入如下权限:
- nx-repository-view-docker-*-browse
- nx-repository-view-docker-*-read
在 Security > Users 下 编辑anonymous 账户,增加权限nx-dockerread
在Repository->Repositories中选择Create Repository
在弹出的类型中选择 docker(proxy) 来新建一个docker仓库的proxy
在之后的页面中填写:
- name: dockerproxy
- 启用HTTP,并填写端口8092
- 勾选allow anonymous docker pull
- 启用docker v1 API
- remote storage: https://docker.mirrors.ustc.edu.cn/
- maximum component age: -1 永久保存
- maximum metadata age: -1 永久保存
点击create repository进行保存
然后在Repositories页面选择copy对应创建出来的docker仓库的地址,即 http://192.168.31.205:8091/repository/dockerproxy/
客户端配置
之后修改本地docker配置文件/etc/docker/daemon.json
改成 “insecure-registries” : [“192.168.31.205:8092”]
如果启用了https的endpoint,那么可以使用 “registry-mirrors”: [“http://192.168.31.205:8092”]
详情参见: 迷你服务器集群环境系列(2)——虚拟机安装配置
本地仓库
TBD