内网环境构建pypi仓库

来源:互联网 发布:网站如何做好seo 编辑:程序博客网 时间:2024/06/07 17:39

需求:

  Python提供了大量的三方库组件,在公网环境下,用户可以通过pip install 的安装方式进行包的下载及安装。在整个持续集成阶段,为了保证环境的一致性,首先我们需要在客户端上安装上相关的依赖库组件,每次通过公网传输,容易受到公网网络环境的影响导致持续部署的整个阶段执行时间变长。为了提高持续部署的稳定性,并降低公网带宽利用率。决定采用在内网环境搭建pypi仓库。

方法:

  GitHub上有非常多类似的python开源代码。本文选用了Flask_pypi_proxy工具。具体的工作方式类似于Java的Nexus仓库,pypi仓库作为一个缓存仓库,当从公网上调用过某个三方组件时,该组件即被缓存到了本地。待下次使用时,即可从本地缓存仓库中拉去。Flask作为一个轻量级的web组件,可以非常容易的通过apache的WSGI模块进行web的发布。

下面来说说具体的实现方法

环境:

Centos7.2 请先确保关闭selinux及防火墙

步骤:

1. 安装flask_pypi_proxy、httpd/mod_wsgi
  首先,由于pypi仓库仅仅是通过代理的方式进行工作,所以确保你的pypi服务器能够访问外网。然后安装flask_pypi_proxy以及apache的相关功能模块。(这里不介绍httpd及httpd_wsgi的配置方式,请自行百度)

pip install flask_pypi_proxy
yum install httpd mod_wsgi -y
systemctl start httpd

2. 修改httpd配置文件
touch pypi_proxy.conf
cat pypi_proxy.conf

<VirtualHost *:80>
    ServerName pypi.domain.com
    WSGIDaemonProcess pypi_proxy threads=5
    WSGIScriptAlias / /var/www/cgi-bin/flask_pypi_proxy.wsgi
</VirtualHost>
3. 编辑flask_pypi_proxy.wsgi,配置代理仓库,日志位置以及代理地址。注意:/data/pypi/simple路径需存在
mkdir -p /data/pypi/simple
mkdir -p /var/log/pypi
chown apache:apache /data/pypi/simple
chown apache:apache /var/log/pypi

vim /var/www/cgi-bin/flask_pypi_proxy.wsgi
import os
os.environ['PYPI_PROXY_BASE_FOLDER_PATH'] = '/data/pypi/simple'
os.environ['PYPI_PROXY_LOGGING_PATH'] = '/var/log/pypi/proxy.logs'
os.environ['PYPI_URL'] = 'http://pypi.python.org'

from flask_pypi_proxy.views import app as application

5. 重启apache服务
systemctl restart httpd

6. 在客户端进行配置
在~/.pip/pip.conf文件中添加或修改
[global]
index-url = http://pypi.domain.com/simple/
[install]
trusted-host=pypi.domain.com


  配置完成之后,可使用pip install命令进行下载安装,若成功,则在server的代理仓库路径下会将包进行缓存,这样下次使用时即可从缓存仓库中拉取。
注:有一定概率可能会下发失败。这时可以尝试使用pip install -i http://pypi.domain.com/simple进行尝试,成功之后便可正常使用。

有任何配置方面的问题,欢迎留言。
0 0
原创粉丝点击