手把手教你用阿里云轻量服务器搭建属于自己的私有PyPI仓库

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

阿里云轻量服务器搭建私有PyPI仓库

为啥要搞私有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",
)

然后安装twinerequests-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

(0)
上一篇 1天前
下一篇 1天前
联系我们
关注微信
关注微信
分享本页
返回顶部