【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 的缓存中获取文件,无需访问公网。

相关推荐
行初心3 小时前
uos基础 dmesg 查看内核的实时日志
运维
行初心3 小时前
uos基础 journalctl 查看系统的实时日志
运维
行初心3 小时前
uos基础 ffmpeg 查看多媒体解码的配置信息
运维
路人甲ing..3 小时前
Ubuntu 怎么把树莓派内存卡备份制作成为镜像
linux·运维·ubuntu
QMY5205204 小时前
爬虫技术抓取网站数据的方法
运维·爬虫·自动化
zz-zjx4 小时前
docker进阶---docker底层实践2025
运维·docker·容器
Fanmeang5 小时前
华为SRv6技术:引领IP网络进入新时代的智能导航系统
运维·网络·华为·vpn·ipv6·srv6
我科绝伦(Huanhuan Zhou)5 小时前
【免费】MySQL自动化巡检工具,一键生成WORD巡检报告
运维·mysql·自动化
SiriusSun_5 小时前
Windows10 wsl2 ubuntu22.04 docker安装
运维·docker·容器
longerxin20205 小时前
ubuntu所有版本镜像下载链接
linux·运维·ubuntu