安装及配置
安装依赖包
pip install devpi devpi-server devpi-web
初始化
devpi-init --serverdir /var/www/devpi
配置 systemd
修改文件:vim /etc/systemd/system/devpi.service
[Unit]
Description=A minimal PyPI server for use with pip/easy_install.
After=network.target
[Service]
Type=simple
# systemd requires absolute path here too.
PIDFile=/var/run/devpi.pid
User=root
Group=root
ExecStart=/usr/local/bin/devpi-server --host 0.0.0.0 --port 3141 --serverdir /var/www/devpi
ExecStop=/bin/kill -TERM $MAINPID
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
WorkingDirectory=/var/www/devpi
TimeoutStartSec=3
RestartSec=5
[Install]
WantedBy=multi-user.target
运行 devpi-server
systemctl daemon-reload
systemctl start devpi
systemctl enable devpi
配置 Nginx
修改文件:vim /etc/nginx/conf.d/nginx-devpi.conf
server {
server_name www.devpi.com;
listen 443 ssl http2;
listen [::]:443 ssl http2;
add_header Strict-Transport-Security "max-age=15552000; includeSubDomains";
ssl_certificate /etc/nginx/ssl/server.cer;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
ssl_prefer_server_ciphers on;
charset utf-8;
client_max_body_size 10M;
access_log /var/log/nginx/access.log;
location /devpi/ {
proxy_pass http://localhost:3141/;
proxy_set_header Host $proxy_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-outside-url $scheme://$http_host/devpi;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
运行 nginx -s reload
使配置生效。
配置参考:
devpi-gen-config
It is highly recommended to use a configuration file for devpi-server, see --configfile option. wrote gen-config/crontab wrote gen-config/net.devpi.plist wrote gen-config/launchd-macos.txt wrote gen-config/nginx-devpi.conf wrote gen-config/supervisor-devpi.conf wrote gen-config/supervisord.conf wrote gen-config/devpi.service wrote gen-config/windows-service.txt
账户配置
修改默认镜像源
devpi use https://www.devpi.com/devpi/
devpi login root --password=''
devpi index pypi type=mirror mirror_url=https://pypi.douban.com/simple mirror_web_url_fmt=https://pypi.doubanio.com/simple/{name}/
创建/删除用户
devpi use https://www.devpi.com/devpi/
devpi user -c devpiuser password=''
devpi login devpiuser --password=''
devpi index -c dev bases=root/pypi
devpi user devpiuser -y --delete # 删除用户
客户端应用
登录并上传
devpi use https://www.devpi.com/devpi/
devpi login devpiuser --password=''
devpi use dev
devpi upload # setup.py 目录
devpi upload --from-dir dist
查看包
devpi list example
查找包
pip search --index https://www.devpi.com/devpi/ example
删除过时的包
devpi remove -y example==1.0.0
安装源配置
# pip config set global.index-url https://pypi.doubanio.com/simple
# pip config set global.extra-index-url https://www.devpi.com/devpi/devpiuser/dev/+simple/
devpi use --set-cfg devpiuser/dev