团队在日常开发和生产部署中,会用到PyPi的仓库,但是由于GFW的原因,经常出现丢包、超时等情况。因此在实验室开源镜像服务器定期同步一个PyPi镜像仓库。
本文不只是创建一个PyPi镜像仓库,同时也包含了CentOS、Red Hat系列下如何部署python 2.7、pip等软件版本。
环境描述
CentOS release 6.7 (Final)
如果你使用Ubuntu,配置非常简单,直接pip install bandersnatch即可,但实验室主要环境是CentOS、Red Hat系列,有点小麻烦,具体过程如下。
安装相关依赖
# yum -y install gcc automake autoconf libtool make //安装python需要 |
安装python
CentOS 6.x自带python 2.6,这里需要python 2.7,目前官网最新版本的python是2.7.10,所以下载最新版本,进行安装。# python -v
# cd /usr/src
# wget https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz
# tar -zxvf Python-2.7.10.tgz
# cd Python-2.7.10
# ./configure --prefix=/usr/local
# make && make altinstall
//make altinstall is used to prevent replacing the default python binary file /usr/bin/python.
# ls -ltr /usr/bin/python*
# ls -ltr /usr/local/bin/python*
# /usr/local/bin/python2.7
安装distribute
# wget https://pypi.python.org/packages/source/d/distribute/distribute-0.7.3.zip |
distribute是setuptools的取代。参考: https://pypi.python.org/pypi/distribute/0.7.3。
- setuptools
setuptools 是一组由PEAK(Python Enterprise Application Kit)开发的 Python 的 distutils 工具的增强工具,可以让程序员更方便的创建和发布 Python的egg 包,特别是那些对其它包具有依赖性的状况。 由 setuptools 创建和发布的包看起来和基于 distutils 发布的包没什么不同。最终用户不需要事先安装 setuptools 甚至根本不需要知道 setuptools 的存在,而程序员也不需要附上完整的 setuptools,只需要包含一个大小约 8K 的ez_setup.py脚本作为启动模块,就可以在最终用户没有安装适当版本的 setuptools 时让这些包自动下载和安装 setuptools。 - easy_install
常使用python的人员,当需要安装第三方python包时,可能会用到easy_install命令。easy_install是由PEAK(Python Enterprise Application Kit)开发的setuptools包里带的一个命令,它用来自动地从http://pypi.python.org/simple/ 来安装egg包,相当于perl中的cpan或PPM、RedHat中的yum命令,但是系统都没有预装easy_install命令。
安装pip
# wget https://pypi.python.org/packages/source/p/pip/pip-7.1.2.tar.gz |
Pip 是安装python包的工具,是对easy_install的取代,提供了和easy_install相同的安装包、列出已经安装的包、查找包的功能。
参考:https://pypi.python.org/pypi/pip/
安装virtualenv
# wget https://pypi.python.org/packages/source/v/virtualenv/virtualenv-13.1.2.tar.gz |
安装bandsnatch
# cd /opt |
或者# pip2.7 install bandersnatch
由于GFW网络问题,可能出现timeout错误,重新执行多次或者自备梯子直到全部下载正常。
参考:https://pypi.python.org/pypi/bandersnatch
配置bandsnatch
# cd /opt/bandersnatch |
编辑/etc/bandersnatch.conf文件,修改pypi源的存储路径。重新执行bin/bandersnatch mirror,就开始同步pip官方源到本地,此过程可能比较长,而且可能会由于网络原因超时报错,需要多次重复执行该命令# mkdir -p /mirror/pypi
# vi /etc/bandersnatch.conf
directory = /mirror/pypi
# bin/bandersnatch mirror
配置WEB,即将pip做成本地web源
实验室原来已经配置了开源镜像服务,只要跟nginx做个链接即可。# ln -s /mirror/pypi/web /usr/share/nginx/html/pypi
设置pip客户端
方法一
配置全局参数# mkdir ~/.pip
# vim ~/.pip/pip.conf
---------------pip.conf---------------
[global]
index-url = http://192.178.102.249/pypi/web/simple/
--trusted-host 192.178.102.249方法二
指定安装源# pip install django -i http://192.178.102.249/pypi/web/simple/ --trusted-host 192.178.102.249
//pip推荐使用https,实验室没有启用,在参数后面添加--trusted-host
至此,pip本地源服务器搭建完毕。