【DevOps】基于Nexus部署内网pypi代理镜像仓库操作手册

下面是使用 Nexus 配置 PyPI 代理和缓存的详细步骤。


Nexus 方案架构

我们将创建三种类型的仓库,并将它们组合成一个 Group 仓库,作为内网用户的唯一入口。

复制代码
+----------------+      +--------------------------------------------------------+      +--------------------------+
|  内网机器 (无公网) |      |  Nexus Repository (内网)                               |      |  公网 |
|                |      |                                                        |      |                          |
| pip install    |----->| pypi-all-group (Group)                                  |      | Aliyun PyPI Mirror       |
| (index-url -> |      |   |                                                    |      | (mirrors.aliyun.com)     |
|  nexus group)  |      |   |--> pypi-internal-hosted (Hosted) [用于私有包]        |      |                          |
|                |<-----|   |--> pypi-aliyun-proxy (Proxy) [代理和缓存] ---------->|----->|                          |
+----------------+      +--------------------------------------------------------+      +--------------------------+

部署步骤(在 Nexus 管理界面操作)

1. 创建 PyPI Proxy 仓库

这是核心,用于代理阿里云 PyPI 镜像并缓存下载的包。

  1. 登录 Nexus 管理界面。
  2. 点击顶部菜单栏的齿轮图标 ⚙️(设置)。
  3. 在左侧菜单中选择 Repository -> Repositories
  4. 点击 Create repository 按钮。
  5. 选择 pypi (proxy)
  6. 配置仓库:
  7. 点击页面底部的 Create repository
  8. 返回列表页,等待Status转换为"Online - Ready to Connect"
2. 创建 PyPI Hosted 仓库 (可选,未部署!)

这个仓库用于存放你们公司内部开发的私有 Python 包。即使现在没有,创建它也是一个好的实践。

  1. 再次点击 Create repository
  2. 选择 pypi (hosted)
  3. 配置仓库:
    • Name : pypi-internal-hosted
    • Storage: 选择一个 Blob Store。
  4. 点击 Create repository
3. 创建 PyPI Group 仓库 (统一入口)

这是内网开发者将要使用的统一地址。它会按顺序从其成员仓库中查找包。

  1. 再次点击 Create repository
  2. 选择 pypi (group)
  3. 配置仓库:
    • Name : pypi-all-group
    • Storage: 选择一个 Blob Store。
    • Group : 在左侧的 Available 列表中,将你刚刚创建的两个仓库(pypi-internal-hostedpypi-proxy移动到右侧的 Members 列表中
    • 重要 : 调整顺序 。将 pypi-internal-hosted 放在 pypi-proxy上面。这样 Nexus 会优先从你的私有仓库查找包,找不到时再去代理仓库查找。
  4. 点击 Create repository

现在,你的仓库列表里就有了这三个仓库,其中 pypi-all-group 就是我们需要的最终地址。

4. 配置内网机器的 pip.conf

修改内网机器的 ~/.pip/pip.conf 文件,将 index-url 指向 Nexus 的 Group 仓库。

复制代码
mkdir ~/.pip
vim ~/.pip/pip.conf
ini 复制代码
[global]
index-url = http://10.2.0.100:8081/nexus/repository/pypi-proxy/simple

[install]
trusted-host = 10.2.0.100
5. 测试和验证

第一次安装(从上游下载并缓存):

在内网机器上执行:

bash 复制代码
[root@10-2-0.2 ~]# pip install requests
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip install --user` instead.
Looking in indexes: http://10.2.0.100:8081/nexus/repository/pypi-proxy/simple
Collecting requests
  Downloading http://10.2.0.100:8081/nexus/repository/pypi-proxy/packages/requests/2.32.5/requests-2.32.5-py3-none-any.whl (64 kB)
     |████████████████████████████████| 64 kB 4.7 MB/s
Collecting charset_normalizer<4,>=2
  Downloading http://10.2.0.100:8081/nexus/repository/pypi-proxy/packages/charset-normalizer/3.4.4/charset_normalizer-3.4.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (153 kB)
     |████████████████████████████████| 153 kB 63.5 MB/s
Collecting urllib3<3,>=1.21.1
  Downloading http://10.2.0.100:8081/nexus/repository/pypi-proxy/packages/urllib3/2.5.0/urllib3-2.5.0-py3-none-any.whl (129 kB)
     |████████████████████████████████| 129 kB 59.3 MB/s
Requirement already satisfied: idna<4,>=2.5 in /usr/lib/python3.9/site-packages (from requests) (3.2)
Collecting certifi>=2017.4.17
  Downloading http://10.2.0.100:8081/nexus/repository/pypi-proxy/packages/certifi/2025.10.5/certifi-2025.10.5-py3-none-any.whl (163 kB)
     |████████████████████████████████| 163 kB 82.4 MB/s
Installing collected packages: urllib3, charset-normalizer, certifi, requests
Successfully installed certifi-2025.10.5 charset-normalizer-3.4.4 requests-2.32.5 urllib3-2.5.0
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

此时,Nexus 的 pypi-aliyun-proxy 仓库会从阿里云下载 requests 包,并缓存到其 Blob Store 中。

验证缓存:

你可以登录 Nexus UI,进入 pypi-aliyun-proxy 仓库的页面,在 BrowseSearch 组件中搜索 requests,你就能看到它已经被成功缓存了。

第二次安装(从本地缓存加载):

bash 复制代码
pip uninstall -y requests
pip install requests

这次安装速度会非常快,因为 pip 直接从 Nexus 的缓存中获取文件,无需访问公网。

相关推荐
ximy13354 小时前
AI服务器工作之线材的接口介绍
运维·服务器
ximy13354 小时前
AI服务器工作之ubuntu系统下的驱动安装
运维·服务器·ubuntu
²º²²এ松4 小时前
蓝牙低功耗(BLE)通信的中心设备/外围设备(连接角色)、主机/从机(时序角色)、客户端/服务器(数据交互角色)的理解
运维·服务器·数据库
Maple_land5 小时前
常见Linux环境变量深度解析
linux·运维·服务器·c++·centos
xx.ii6 小时前
jenkins流水线项目部署
运维·jenkins
小白银子6 小时前
零基础从头教学Linux(Day 53)
linux·运维·python
wanhengidc7 小时前
云手机的安全保护措施有哪些?
运维·服务器·安全·游戏·智能手机·云计算
java_logo8 小时前
Docker 部署微服务项目保姆级教程
java·运维·docker·微服务·容器·eureka·架构
Wang's Blog8 小时前
Linux小课堂: 定时与延时执行机制之date、at、sleep 与 crontab 的深度解析
linux·运维·服务器