阿里云上搭建pypi私有服务器

写在前面

pip安装的python包,默认从 https://pypi.python.org/pypi 上下载的。但是有时候公司内部使用的组件,不方便开放到外网,这时候我们就要搭建自己的pypi服务器了。通过调研,我选择了pypiserver

安装

服务器是一台阿里云的ubuntu。
以我的习惯,每个服务我都会建一个单独的用户,然后代码部署在用户的根目录下。首先用root用户创建pypi用户:

~# useradd pypi
~# mdkir /home/pypi
~# chown pypi:pypi /home/pypi

然后切换到pypi用,并进入/home/pypi
为了不污染全局的python环境,一般我们用 virtualenv来安装各种组件:

~$ virtualenv .venv
~$ source .venv/bin/activate
~$ pip install pypiserver 
~$ mkdir packages # 建立存放packages的文件夹

配置

上传package需要用户名密码,密码文件使用命令htpasswd命令生成

~$ pip install passlib
~$ apt-get install apache2-utils
~$ htpasswd -sc .htaccess user   # 回车后会提示输入密码,输入123456

启动

pypi-server应该在后台运行,简单的话可用使用nohup命令,但一般都用supervisor来管理。在当前目录创建pypi-server.conf,内容如下:

[program:pypi-server]
directory=/home/pypi/
command=/home/pypi/.venv/bin/pypi-server -p 10086 -P /home/pypi/.htaccess /home/pypi/packages
autostart=true
autorestart=true
redirect_stderr=true

其中-p选项指定侦听的端口,-P选项指定密码文件。
将该文件软链到supervisor的配置文件夹下:

  ~$ cd /etc/supervisor/conf.d/
  ~$ sudo ln -s /home/pypi/pypi-supervisor.conf pypi-supervisor.conf

重启supervisor

~$sudo supervisorctl reload

查看pypi-server运行情况:

~$sudo supervisorctl status

可见pypi-server已经运行了:

pypi-server                      RUNNING    pid 27289, uptime 16:41:19

因为是阿里云的服务器,我们还需要在安全组中打开这个端口的访问限制。
然后浏览器访问http://服务器ip:10086,会有如下的欢迎页:

image.png

下一篇介绍私有服务器的使用

推荐阅读更多精彩内容