內網環境構建pypi倉庫
阿新 • • 發佈:2019-01-09
需求:
Python提供了大量的三方庫元件,在公網環境下,使用者可以通過pip install 的安裝方式進行包的下載及安裝。在整個持續整合階段,為了保證環境的一致性,首先我們需要在客戶端上安裝上相關的依賴庫元件,每次通過公網傳輸,容易受到公網網路環境的影響導致持續部署的整個階段執行時間變長。為了提高持續部署的穩定性,並降低公網頻寬利用率。決定採用在內網環境搭建pypi倉庫。方法:
GitHub上有非常多類似的python開原始碼。本文選用了Flask_pypi_proxy工具。具體的工作方式類似於Java的Nexus倉庫,pypi倉庫作為一個快取倉庫,當從公網上呼叫過某個三方元件時,該元件即被快取到了本地。待下次使用時,即可從本地快取倉庫中拉去。Flask作為一個輕量級的web元件,可以非常容易的通過apache的WSGI模組進行web的釋出。 下面來說說具體的實現方法環境:
步驟:
1. 安裝flask_pypi_proxy、httpd/mod_wsgi 首先,由於pypi倉庫僅僅是通過代理的方式進行工作,所以確保你的pypi伺服器能夠訪問外網。然後安裝flask_pypi_proxy以及apache的相關功能模組。(這裡不介紹httpd及httpd_wsgi的配置方式,請自行百度) pip install flask_pypi_proxyyum 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進行嘗試,成功之後便可正常使用。
有任何配置方面的問題,歡迎留言。