寫在前面
pip安裝的python包,默認從 https://pypi.python.org/pypi 上下載的。但是有時候公司內(nèi)部使用的組件,不方便開放到外網(wǎng),這時候我們就要搭建自己的pypi服務器了。通過調(diào)研,我選擇了pypiserver。
安裝
服務器是一臺阿里云的ubuntu。
以我的習慣,每個服務我都會建一個單獨的用戶,然后代碼部署在用戶的根目錄下。首先用root用戶創(chuàng)建pypi用戶:
~# useradd pypi
~# mdkir /home/pypi
~# chown pypi:pypi /home/pypi
然后切換到pypi用,并進入/home/pypi
為了不污染全局的python環(huán)境,一般我們用 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來管理。在當前目錄創(chuàng)建pypi-server.conf,內(nèi)容如下:
[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已經(jīng)運行了:
pypi-server RUNNING pid 27289, uptime 16:41:19
因為是阿里云的服務器,我們還需要在安全組中打開這個端口的訪問限制。
然后瀏覽器訪問http://服務器ip:10086,會有如下的歡迎頁:

image.png
下一篇介紹私有服務器的使用