首页 > 其他分享 >内网环境下的 Nexus3 部署与代理源配置指南

内网环境下的 Nexus3 部署与代理源配置指南

时间:2024-09-23 16:55:18浏览次数:12  
标签:指南 http repository 8082 代理 Nexus3 conda anaconda tuan

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、Nexus3 安装与初始配置
  • 二、配置内网源(代理)的详细步骤
    • 1、Blob Store
    • 2、Repositories
      • 2.1、apt
      • 2.2、pip
      • 2.3、conda
      • 2.4、docker
  • 三、Nexus权限管理与安全配置
  • 四、代理源的缓存与维护
  • 总结


前言

在内网环境中,公司的服务器无法直接访问外网下载依赖库或软件,这导致安装和更新过程变得复杂。通常,我们会通过二进制安装或使用网络代理来绕过限制,但开网络代理存在较大的安全隐患。为了解决这个问题,搭建一个公司专用的内网源代理是更安全和高效的方案。

Nexus作为一款流行的仓库管理工具,可以在内网环境下通过代理功能缓存和分发外部依赖库,帮助我们避免网络安全风险的同时,提高开发与运维效率。本文将介绍如何部署Nexus,并配置其作为内网代理源的详细步骤。

原理简介:

Nexus的代理功能通过在本地缓存外部库和软件包,将请求从内网转发至外部源,并将结果缓存到内网服务器中。之后,当内网用户再次请求相同资源时,Nexus会直接从本地缓存中提供,避免重复访问外部网络,不仅提高了响应速度,也降低了外网访问带来的安全风险。


一、Nexus3 安装与初始配置

有本地与容器两种部署方式,下面将采取容器方式部署

本地方式部署请参考 Nexus官网

docker 镜像 Nexus3 dockerhub 官网镜像
使用教程 docker-nexus3(github)

启动命令:

docker run -d -p 8082:8081 --name nexus sonatype/nexus3:3.72.0-ubi

测试命令:

curl http://localhost:8082

或浏览器 http://<nexus3_IP>:8082 访问测试

日志命令:

docker logs -f nexus

在浏览器访问 http://<nexus3_IP>:8082 点击 Sign in ,会提示:
Your admin user password is located in
/nexus-data/admin.password on the server.

查看 admin 登录密码:

# 进入容器
docker exec -it nexus bash
# 查看密码
cat /nexus-data/admin.password

通过该账号密码登录并修改密码,勾选 Enable anonymous access (按实际需求选择,这里需匿名下载所以选择 Enable)

PS:
启动要几分钟,启动详细过程可以查看日志。
这里不做数据持久化和数据库拆分,后续将单独开一篇博文讲解。

二、配置内网源(代理)的详细步骤

1、Blob Store

在Nexus的管理界面中,点击 RepositoryBlob StoresCreate blob storeType 选 File → 输入 NamePathSoft Quota 不勾选Save

*PS:
这里是用于创建内网源缓存/存储的空间,
Name是该空间名称,
Path是存储路径,
Soft Quota 是用与限制该空间可用/剩余大小

同个 Blob Store 可以提供多个源共用如apt、pip、conda,但迁移或导出时无法区分这块空间是属于什么源的文件,所以生产环境建议按规范命名创建和使用*

2、Repositories

在Nexus的管理界面中,点击 RepositoryRepositoriesCreate repository → 选择自己需要的源+proxy类型… …
下面就以 apt、pip、conda、docker 几个为例子,搭建Proxy代理源,其他的都大同小异。

下列操作将所有源代理至清华源,docker 源除外。
可访问 清华源官网地址 ,里面包含源的地址和使用方法。

2.1、apt

创建 repository 并选择 apt (proxy) 后:

输入 Name (apt-tuna)
其实就是内网源的仓库名

输入 Distribution (xenial/bionic/focal/jammy)
其实就是描述,填啥都不影响

输入 Proxy → Remote storage (https://mirrors.tuna.tsinghua.edu.cn/)
其实就是代理源的URL

选择 Stoage → Blob store (自己创建的Blob store)
其实就是使用存储空间

点击 Create repository 创建成功

测试(Ubuntu20系统):
点击 copy 复制内网源URL,修改ubuntu源

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo vim /etc/apt/sources.list

# 内容替换如下
deb http://<nexus3_IP>:8082/repository/apt-tuna/ubuntu/ focal main restricted universe multiverse
deb http://<nexus3_IP>:8082/repository/apt-tuna/ubuntu/ focal-updates main restricted universe multiverse
deb http://<nexus3_IP>:8082/repository/apt-tuna/ubuntu/ focal-backports main restricted universe multiverse
deb http://<nexus3_IP>:8082/repository/apt-tuna/ubuntu/ focal-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ focal universe

# 保存后测试
sudo apt update
sudo apt install -y tree

若能安装则成功配置,否则请检查代理地址,内网源地址,是否正确,nexus机是否能访问清华源地址。

PS:Ubuntu16、18 版本都能正常使用,但 20 需要给内网源添加个 https 证书,22能 update 但不能 install(后续debug出来会单独开篇博文更新)

2.2、pip

创建 repository 并选择 pypi (proxy) 后:

输入 Name (pypi-tuna)
其实就是内网源的仓库名

输入 Proxy → Remote storage (https://mirrors.tuna.tsinghua.edu.cn/)
其实就是代理源的URL

选择 Stoage → Blob store (自己创建的Blob store)
其实就是使用存储空间

点击 Create repository 创建成功

测试(Ubuntu20系统):
点击 copy 复制内网源URL,pip下载测试

pip install -i http://<nexus3_IP>:8082/repository/pypi-tuna/simple --trusted-host <nexus3_IP>:8082 soundfile

若是下的库比较大,报超时错那命令该为如下:

pip install --default-timeout=9999 -i http://<nexus3_IP>:8082/repository/pypi-tuna/simple --trusted-host <nexus3_IP>:8082 soundfile

若能安装则成功配置,否则请检查代理地址,内网源地址,是否正确,nexus机是否能访问清华源地址。

PS:pip库是只有 nexus下好了,本地才能下,如果要安装的库特别大,网速不是很快的情况下,建议多下几次或更改pip超时时间和nginx代理超时时间(若有)

2.3、conda

创建 repository 并选择 conda (proxy) 后:

输入 Name (conda-tuna)
其实就是内网源的仓库名

输入 Proxy → Remote storage (https://mirrors.tuna.tsinghua.edu.cn/)
其实就是代理源的URL

选择 Stoage → Blob store (自己创建的Blob store)
其实就是使用存储空间

点击 Create repository 创建成功

测试(Ubuntu20系统):
点击 copy 复制内网源URL,安装好conda后,测试

#生成~/.condarc用户配置文件
conda config --set show_channel_urls yes

#替换为如下内容
channels:
  - http://<nexus3_IP>:8082/repository/conda-tuan/anaconda/cloud/menpo
  - http://<nexus3_IP>:8082/repository/conda-tuan/anaconda/cloud/bioconda/
  - http://<nexus3_IP>:8082/repository/conda-tuan/anaconda/cloud/msys2/
  - http://<nexus3_IP>:8082/repository/conda-tuan/anaconda/cloud/conda-forge/
  - http://<nexus3_IP>:8082/repository/conda-tuan/anaconda/pkgs/free/
  - http://<nexus3_IP>:8082/repository/conda-tuan/anaconda/pkgs/main/
show_channel_urls: true

default_channels:
  - http://<nexus3_IP>:8082/repository/conda-tuan/anaconda/pkgs/main
  - http://<nexus3_IP>:8082/repository/conda-tuan/anaconda/pkgs/r
  - http://<nexus3_IP>:8082/repository/conda-tuan/anaconda/pkgs/msys2

custom_channels:
  conda-forge: http://<nexus3_IP>:8082/repository/conda-tuan/anaconda/cloud
  msys2: http://<nexus3_IP>:8082/repository/conda-tuan/anaconda/cloud
  bioconda: http://<nexus3_IP>:8082/repository/conda-tuan/anaconda/cloud
  menpo: http://<nexus3_IP>:8082/repository/conda-tuan/anaconda/cloud
  pytorch: http://<nexus3_IP>:8082/repository/conda-tuan/anaconda/cloud
  pytorch-lts: http://<nexus3_IP>:8082/repository/conda-tuan/anaconda/cloud
  simpleitk: http://<nexus3_IP>:8082/repository/conda-tuan/anaconda/cloud
  deepmodeling: http://<nexus3_IP>:8082/repository/conda-tuan/anaconda/cloud/

#清除索引缓存
conda clean -i
#运行测试
conda create -n myenv2 numpy pandas pypdf2
source activate myenv2
source deactivate myenv2

若能运行虚拟环境则成功配置,否则请检查代理地址,内网源地址,是否正确,nexus机是否能访问清华源地址。

PS:这个源也是,一般下载的会特别大,网速不是很快的情况下,建议多下几次或更改超时时间和nginx代理超时时间(若有)

2.4、docker

和上面不一样,docker proxy不能直接使用,得单独配置host和proxy和组,比较复杂,后面再更新。。。。

三、Nexus权限管理与安全配置

创建用户与角色:根据公司内不同部门或项目的需求,在"Nexus Security"中创建对应的用户和角色,分配访问权限。可以为不同的仓库和操作(如上传、下载)设置精细的权限控制。

启用身份验证:配置LDAP或其他身份验证方式,以确保只有授权人员能够访问Nexus仓库。

限制外网访问:通过防火墙或Nexus的配置,限制Nexus服务器只能访问指定的外部源,进一步提升安全性。


四、代理源的缓存与维护

定期清理缓存:根据项目需求,定期清理旧的或未使用的包缓存,避免占用过多磁盘空间。(配了quota或全部磁盘就给nexus用的话就不用管)

监控与日志:通过Nexus的日志功能和监控工具,检查代理仓库的状态,确保没有过多的404或缓存失效的问题。

定期更新外部源:确保代理仓库的外部源地址是最新的,有时外部源会更改地址或更新配置,需及时同步。


总结

nexus 结合 LDAP + RBAC 角色,无论是作为代理源加速下载还是内网上传源,都是很好用的。
但有一点注意的是,若nexus部署在 k8s 上, k8s 的容器镜像绝对!一定!千万!不能只存放到nexus上,当k8s自身挂了,在 k8s 上部署的 nexus 也有可能会挂了,其他容器服务重启恢复时无法从 nexus 上拉取镜像,那就真的挂了,恢复成本极高!!!

标签:指南,http,repository,8082,代理,Nexus3,conda,anaconda,tuan
From: https://blog.csdn.net/weixin_41004518/article/details/142379251

相关文章

  • 【艾思科蓝】前端框架巅峰对决:React、Vue与Angular的全面解析与实战指南
    【JPCS独立出版】​第三届能源与动力工程国际学术会议(EPE2024)_艾思科蓝_学术一站式服务平台更多学术会议请看:https://ais.cn/u/nuyAF3 引言在快速发展的前端技术领域,选择合适的框架或库对于项目的成功至关重要。React、Vue和Angular作为当前最流行的三大前端框架/库,各自......
  • 代理模式 - 动态代理
    动态代理的APIProxy动态代理类生成代理对象:Proxy.newProxyInstance(类加载器,接口数组,处理器)类加载器:对象.getClass().getClassLoader()接口数组-被代理类的所有接口:被代理对象.getClass().getInterfaces()处理器:代理对象调用方法时,会被处理器拦截InvocationHa......
  • 数字化转型的实践指南:业务能力建模的全景应用与企业创新路径
    在当今快速变化的商业环境中,数字化转型已成为企业持续创新和提升竞争力的关键战略。然而,如何有效规划、构建并管理企业的核心业务能力,确保企业在数字化时代能够敏捷应对市场变化,是许多企业面临的挑战。《业务能力指南》为这一问题提供了系统化的解决方案,通过业务能力建模的实践......
  • MATLAB代码生成工具箱:从算法到部署的全面指南
    在现代工程实践中,将MATLAB算法高效地转换为C/C++代码对于嵌入式系统开发至关重要。MATLAB代码生成工具箱(MATLABCoder)提供了一套强大的工具,使得这一过程变得简单而直接。本文将详细介绍如何使用MATLAB代码生成工具箱,从准备MATLAB代码到生成C/C++代码,再到代码的测试与部署。......
  • 释放创意潜力! 探索智谱CogVideoX-2b:轻松生成6秒精彩视频的开发者指南!
    文章目录1CogVideoX的背景2创建丹摩实例3配置环境和依赖4模型与配置文件5运行6效果图1CogVideoX的背景CogVideoX的问世标志着视频生成技术的一次质的飞跃。过去,许多技术在效率与质量之间常常难以取得平衡,CogVideoX的3D变分自编码器使得视频数据的压缩......
  • Nginx反向代理
    前言    Nginx是互联网应用的一层网关,是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。它最初是由俄罗斯的伊戈尔·赛索耶夫(IgorSysoev)在2002年开发的,目的是为了解决C10K问题(即同时处理10000个客户端连接的问题)。Nginx以其高稳定性、丰富的功......
  • Dockerfile全面指南:从基础到进阶,掌握容器化构建的核心工具
    目录Dockerfile全面指南:从基础到进阶,掌握容器化构建的核心工具引言一、什么是Dockerfile二、Dockerfile的基本结构三、Dockerfile的常见配置项1、多阶段构建(Multi-stageBuilds)2、缓存优化3、合并RUN命令四、Dockerfile使用须知五、一个完整的Dockerfile实......
  • Stroex快速上手指南
    1、简介StoreX是一个高性能、高可用、配置式、可扩展、容器化、开箱即用的BaaS(BackendasaService)后端服务平台。平台提供了数据存储、身份验证、文件存储等后端服务,能够让开发人员专注于前端开发,而无需花费大量时间和精力来构建和维护后端基础设施,更快地构建产品。下面我......
  • PyTorch 模型调试与故障排除指南
    在当代深度学习领域,PyTorch已成为开发和训练神经网络的主要框架之一。然而随着模型复杂度的增加和数据规模的扩大,开发者常常面临各种调试和优化挑战。本文旨在为PyTorch开发者提供一个全面的调试指南,涵盖从基础概念到高级技术的广泛内容。本指南的目标读者包括:正在学习PyTo......
  • 引领未来的数字化转型指南:全面解读《数字化专业知识体系》的核心策略与实践路径
    数字化时代的企业生存之道在全球商业环境迅速数字化的今天,企业的生存和发展面临着前所未有的挑战。技术的快速更替、市场的不确定性以及客户需求的多样化,迫使企业迅速调整战略和运营模式。《数字化专业知识体系》(《TowardsaDigitalProfessionalBodyofKnowledge》DPBOK)提......