前言
Nuget是ASP .NET Gallery的一员,是免费、开源的包管理工具,专注于在.Net / .Net Core应用开发过程中第三方组件库的管理,相对于传统单纯的dll引用要方便、科学得多。其中nuget.org是最著名的Nuget公开库,但是企业内部开发的(业务)公共组件不可能都往公开库上传,所以,企业内部需要一个私有的Nuget仓库来支持。虽然微软有提供的Nuget Server,但Nuget Server用起来并不那么顺手,或者说感觉有点low。因此,本文将介绍Nexus搭建的Nuget仓库,希望能给大家多一个选择。
安装步骤
安装环境
Centos 7+, docker
1. 安装docker
如果已安装的docker,可跳过此步骤。
# 更新服务器上所有的包 yum update # 更新docker包 yum install -y docker # 关闭开机启动(docker) systemctl enable docker #开启开机启动(docker) systemctl start docker
2. 拉取Nexus的镜像
补充说明:
因为在下载官方镜像点的镜像国内访问速度太慢,所以报错,使用加速器就可以解决这个问题【备注:更换镜像源】
首先打开配置文件daemon.json,centos上安装后有此文件,但是ubuntu上需要自己创建文件:
# 编辑 daemon.json vim /etc/docker/daemon.json
在文件中加入:
{ "registry-mirrors":["https://docker.mirrors.ustc.edu.cn", "https://9cpn8tt6.mirror.aliyuncs.com"]}
然后重启守护进程:
# 重载所有修改过的配置文件 sudo systemctl daemon-reload # 重启docker sudo systemctl restart docker # 拉取镜像 docker pull sonatype/nexus3:3.25.1
镜像详细说明:https://hub.docker.com/r/sonatype/nexus3/
3. 运行Nexus并把数据持久化到服务器
# 数据持久化 mkdir /opt/nexus && chown -R 200 /opt/nexus # 运行Nexus docker run -d -p 8081:8081 --name nexus -v /opt/nexus:/nexus-data sonatype/nexus3:3.25.1
稍等片刻,可能是几分钟,通过http://serverip:8081就能访问Nexus了。
Nexus说明
1. 默认帐号
Nexus的默认管理员帐号:admin,密码:admin123。点击界面右上角可以登录。
3.17版本之后的Nexus默认密码在配置文件里面/nexus-data/admin.password
因为是docker安装
#查询容器id docker ps #进入容器里面(补充:进入容器里面相当于从新进了一个系统,独立的系统) docker exec -it 容器id bash
找到admin.password文件,默认位置在
# 这个就是密码,没有加密,直接使用登录就行 vi /opt/sonatype/sonatype-work/nexus3/admin.password
登录完后,可以看到一个设置按钮:
点击Repositories,查看内置的默认仓库:
2. 仓库说明
其实Nexus默认已经创建好了Nuget的仓库,并且是创建了3个不同类型的仓库:nuget-group,nuget-hosted,nuget.org-proxy。
a. nuget.org-proxy
类型是proxy,表示代理仓库。我们向它请求包(package)的时候,如果本地有,它就从本地提供,如果本地没有,它会从nuget.org下载到本地,然后给我提供这个包。
b. nuget-hosted
类型是hosted,表示托管仓库。我们一般把自己开发的包上传到该仓库中。
c. nuget-group
类型是group,表示仓库组,它结合了nuget.org-proxy和nuget-hosted,能对外提供上述两者中的包。
简而言之,nuget-hosted负责包上传,nuget.org-proxy负责代理包,nuget-group负责提供包。
d. maven2(group) 聚合仓库
将多个宿主仓库聚合到同一个group中,使用中统一指定聚合仓库的仓库地址可以获取到同一group下的所有包,免去多仓库多地址的配置繁琐。
聚合仓库的聚合成员可以在仓库设置中添加和移除。
e. maven2(hosted) 宿主仓库
平常使用的仓库,不多说明。需要注意的是宿主仓库有两种日常开发可以使用到的类型。
- release
release 仓库不能重复上传同一版本号,版本不能覆盖,只能迭代,所以开发的稳定版本可以统一放置在release仓库中。
- snapshot
snapshot 仓库允许版本覆盖,当多次上传同一个版本到 snapshot 仓库,会自动在版本号上添加时间戳来区分。建议在开发测试时使用。
f. maven2(proxy) 远程代理仓库
这种类型的仓库,可以设置一个远程仓库的链接。当用户向 proxy 类型仓库请求下载一个依赖构件时,就会先在自己的库里查找,如果找不到的话,就会从设置的远程仓库下载到自己的库里,然后返回给用户,相当于起到一个中转的作用。
后续遇到的问题:
https://www.cnblogs.com/Huanggang-like/articles/14841878.html