写在前面
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,会有如下的欢迎页:
下一篇介绍私有服务器的使用
网友评论