你是不是也遇到过这种情况:团队开发Python项目时,每次更新内部包都得手动发文件、写文档,甚至还得提醒同事“记得拉最新代码啊”。时间一长,版本混乱、依赖冲突、协作效率低……各种问题接踵而至。别急,今天我就来给你支个大招——用阿里云的轻量服务器,从零开始搭一个专属的私有PyPI仓库!整个过程不复杂,只要跟着我一步步来,哪怕你是Linux新手也能搞定。

为啥要搞私有PyPI仓库?
首先咱们得说清楚,这玩意儿到底有啥用?简单来说,PyPI就是Python的官方包管理平台,我们平时用pip install requests,其实就是在从PyPI上下载包。但如果你公司有些核心工具包不想开源,又想让团队成员能像装第三方库一样方便地安装和升级,这时候你就需要一个“私人版PyPI”。
有了它,你们可以:
- 一键发布内部包:
pip install mycompany-utils,干净利落; - 统一版本管理:再也不用担心谁用了旧版本导致bug;
- 提升协作效率:新人入职,一条命令搞定所有依赖;
- 安全可控:代码不外泄,权限自己定。
听起来是不是很香?接下来,咱们就用阿里云的轻量应用服务器来实现它。
第一步:买台阿里云轻量服务器(便宜又好用)
说到服务器,很多人第一反应是贵、难操作。但阿里云的轻量应用服务器完全打破了这种印象。它特别适合个人开发者、小团队做测试、部署小项目,价格亲民,配置够用,管理界面还特别友好。
我建议选个基础款就行,比如2核4G内存、5M带宽、80G SSD硬盘,系统选Ubuntu 22.04 LTS。这个配置跑个私有PyPI绰绰有余,一个月也就几十块钱,比你点外卖还便宜。
对了,现在新用户注册还能领优惠券,直接省一笔!赶紧行动起来吧:点击这里领取阿里云优惠券,买服务器能立减,别错过这个羊毛!
第二步:登录服务器,准备环境
买了服务器之后,阿里云会给你公网IP、用户名和密码(或者密钥)。你可以直接在控制台用网页版SSH登录,也可以用本地终端连上去。
登录成功后,先更新一下系统软件包:
sudo apt update && sudo apt upgrade -y
然后安装几个必要的工具:
sudo apt install python3-pip nginx supervisor -y
解释一下这几个东西是干啥的:
- python3-pip:用来装Python相关的包;
- nginx:反向代理,把你的服务暴露到外网,还能加HTTPS;
- supervisor:守护进程,保证你的PyPI服务一直运行,崩了也能自动重启。
第三步:安装并配置私有PyPI服务
目前最流行、最简单的私有PyPI方案是 pypiserver。它轻量、易部署,几条命令就能跑起来。
我们先用pip安装它:
pip3 install pypiserver
然后创建一个专门放包的目录:
mkdir ~/pypi-packages
现在启动服务试试:
pypi-server -p 8080 ~/pypi-packages
这时候服务已经跑在8080端口了,但只是临时运行。我们要让它开机自启、后台运行,所以得配合supervisor来管理。
配置Supervisor让服务常驻后台
在/etc/supervisor/conf.d/下创建一个配置文件:
sudo nano /etc/supervisor/conf.d/pypiserver.conf
写入以下内容:
[program:pypiserver]
command=/usr/local/bin/pypi-server -p 8080 /root/pypi-packages
directory=/root
user=root
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/pypiserver.log
保存退出后,重载supervisor配置:
sudo supervisorctl reload
然后启动服务:
sudo supervisorctl start pypiserver
输入sudo supervisorctl status能看到服务状态是running,说明没问题了!
第四步:用Nginx做反向代理 + 加HTTPS
虽然服务跑起来了,但现在只能通过IP:8080访问,不够专业,也不安全。我们用Nginx做个反向代理,比如用pypi.yourcompany.com来访问,再顺手加上免费的SSL证书,走HTTPS更安心。
先安装Certbot获取Let’s Encrypt证书:
sudo apt install certbot python3-certbot-nginx -y
然后配置Nginx。编辑默认站点配置:
sudo nano /etc/nginx/sites-available/default
把里面的内容改成这样:
server {
listen 80;
server_name pypi.yourcompany.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
保存后,重启Nginx:
sudo systemctl restart nginx
接着申请SSL证书:
sudo certbot --nginx -d pypi.yourcompany.com
按提示操作,Certbot会自动帮你配置好HTTPS,以后访问就是https://pypi.yourcompany.com,安全又体面。
第五步:发布你的第一个私有包
现在仓库搭好了,轮到发布包了。假设你有个叫myutils的小工具包,结构如下:
myutils/
├── myutils/
│ ├── __init__.py
│ └── helpers.py
├── setup.py
在setup.py里写好包信息:
from setuptools import setup, find_packages
setup(
name="myutils",
version="0.1.0",
packages=find_packages(),
description="Internal utility functions",
)
然后安装twine和requests-toolbelt(上传要用):
pip install twine requests-toolbelt
上传包到你的私有仓库:
python setup.py sdist twine upload --repository-url https://pypi.yourcompany.com simple/ dist/第一次会提示输入用户名密码,但我们还没设认证。别慌,pypiserver支持基本HTTP认证,后面可以加上。你现在可以先关掉认证测试流程,回头再补。
第六步:团队成员如何安装?
同事想用这个包,只需要一条命令:
pip install --index-url https://pypi.yourcompany.com/simple/ myutils如果你想让他们不用每次都加URL,可以配置pip全局源。在用户家目录创建
~/.pip/pip.conf(Windows是%APPDATA%pippip.ini):[global] index-url = https://pypi.yourcompany.com/simple/ trusted-host = pypi.yourcompany.com这样以后他们执行
pip install myutils就会自动从你的私有仓库拉取,跟装requests一样丝滑。安全建议:加上用户认证
现在仓库是公开可读写的,任何人都能上传包,显然不行。我们可以给pypiserver加上密码保护。
先生成一个htpasswd文件:
sudo apt install apache2-utils -y htpasswd -sc /root/.htpasswd admin然后修改supervisor的启动命令,在原有基础上加上认证参数:
command=/usr/local/bin/pypi-server -p 8080 -P /root/.htpasswd -A . /root/pypi-packages重启服务后,上传包就需要用户名密码了:
twine upload -u admin -p yourpassword --repository-url https://pypi.yourcompany.com/simple/ dist/安全等级瞬间拉满!
你值得拥有一个私有PyPI
看到这儿,你应该已经意识到,搭建私有PyPI并没有想象中那么难。借助阿里云轻量服务器,你花不了多少钱,半天时间就能搞定整套流程。它不仅能提升团队开发效率,还能让你在技术架构上更有话语权。
而且这套方案非常灵活,后续你还可以:
- 对接CI/CD,提交代码自动打包发布;
- 集成LDAP做企业级账号统一管理;
- 加个前端页面,展示包列表和文档。
只要你敢动手,玩法多的是。
最后再提醒一次:想省钱的朋友赶紧去领阿里云优惠券,新用户福利超多,搭服务器正合适。别等涨价了才后悔没早点下手!
好了,今天的内容就到这里。如果你按照步骤成功搭建了私有PyPI,欢迎留言告诉我你的使用体验。
内容均以整理官方公开资料,价格可能随活动调整,请以购买页面显示为准,如涉侵权,请联系客服处理。
本文由星速云发布。发布者:星速云。禁止采集与转载行为,违者必究。出处:https://www.67wa.com/149828.html