搭建pip 私源
环境准备:
机器IP地址:192.168.10.11
使用docker容器搭建,基础镜像是centos7
软件包:pypiserver
查看pypiserver 项目位置,
/usr/local/python3/lib/python3.9/site-packages/pypiserver
安装后,找到了他,进入目录发现他是一个 类似的 flask 或者 django 的应用,难怪可以用gunicorn 使用
github 地址:https://github.com/pypiserver/pypiserver
操作步骤:
-
拉取centos7 镜像,启动容器,之后进入容器,初始化容器环境
docker pull centos:7 docker run -itd --name pipserver -h pypi -p 12000:12000 centos:7 bash docker exec -it pipserver bash
检查yum 源,python3 的环境,pip3 的环境,pypiserver 和其他相关的pip包。
yum install vim python3 -y #修改python 和pip 的软链接 rm /usr/bin/python ln -s /usr/bin/python3 /usr/bin/python ln -s /usr/bin/pip3 /usr/bin/pip #验证修改是否成功 python -V pip -V #也可以使用python 脚本安装更新的python 和pip,因为上面的pip3.6 版本实在太低了,pip 没有config 指令。使用宿主机的升级pyhton 脚本安装python 即可。 #设置pip 服务器地址,换成国内pip源 mkdir ~/.pip cat << EOF > ~/.pip/pip.conf [global] timeout = 6000 index-url = https://pypi.tuna.tsinghua.edu.cn/simple trusted-host = https://pypi.tuna.tsinghua.edu.cn/simple EOF #安装pip 相关包 pip install pypiserver flask gunicorn #修改PATH 变量,将/usr/bin/python3/bin 加入到PATH 中 ,这样才能找到pypi-server 命令 将下面 变量声明加到 /etc/bashrc 中,因为如果使加到/etc/profile里,进入容器后不生效 export PATH=$PATH:/usr/local/python3/bin
-
将容器制作成镜像
docker commit -m "new env" -a "ffy" pipserver pip-server:v1
-
启动容器,启动pypiserver 设置pypi
docker run -itd --name pip_container -h pypi -p 11000:12000 -v /opt/pip_packages:/root/packages pip-server:v1 #进入容器 docker exec -it pip_container bash #启动pypi-server pypi-server -p 12000 -P. -a . &
https://www.linuxidc.com/Linux/2018-06/152692.htm
# -p 参数后接端口号,-P 和 -a 后面接点表示不用密码验证, 最后面的包的目录 pypi-server -p port -P . -a . packages_dir
无密码上传项目包
默认情况下, pypiserver 的上传操作是密码保护的, 不过可以通过以下启动参数来关闭密码保护:
pypi-server -P . -a .上述命令中的-P参数用来指定密码文件, -a用来指定需要密码保护的操作. 当这两个参数同时指定为.时, 表示所有的操作都不需要密码保护。pypi-server -h 中有这个说明。
然后在项目里创建setup.py 这个 启动文件,使用命令 setup.py 打包项目
#可以在项目文件夹下使用 python setup.py sdist 生成tar.gz 的包或者其他类型的包 bdist_wheel create a wheel distribution sdist create a source distribution (tarball, zip file, etc.) bdist_rpm create an RPM distribution bdist create a built (binary) distribution bdist_wininst create an executable installer for MS Windows
-
上传:
打包完成后,在Python项目的根目录下, 执行远程安装命令来上传包. 比如在本地项目中, 执行以下命令:
python setup.py sdist upload -r http://192.168.10.11:11000
这时, upload 命令仍然会提示输入密码, 此时直接回车确认就可以了.
还可以时用 twine 命令 上传
twine upload dist/* --repository-url http://192.168.10.11:11000
-
下载:
下载包到本地的当前目录,然后执行安装当前目录下的包
cd /opt/pip_down pip download own-ftp -i http://192.168.10.11:11000 --trusted-host 192.168.10.11 #离线安装pip包直接接包的全路径即可 pip install /opt/pip_down/own_ftp-1.0-py3-none-any.whl
使用gunicorn 启动 pipserver
gunicron 详解:https://www.jianshu.com/p/69e75fc3e08e
https://docs.gunicorn.org/en/stable/
-
进入容器安装好gunicorn 和 pipserver 后,可以先写一下 gunicorn 的 配置文件。
import multiprocessing bind = '127.0.0.1:8000' workers = multiprocessing.cpu_count() * 2 + 1 backlog = 2048 worker_class = "gevent" worker_connections = 1000 daemon = False debug = True proc_name = 'gunicorn_demo' pidfile = './log/gunicorn.pid' errorlog = './log/gunicorn.log'
-
gunicorn 常用命令:
-b ADDRESS, --bind ADDRESS 绑定我们服务的ip 和 端口 -w INT, --workers INT The number of worker processes for handling requests. -w 后面假一个数字表示 处理请求的最大进程数 -c CONFIG : CONFIG,配置文件的路径,通过配置文件启动;生产环境使用;
启动gunicorn,请注意 gunicorn 后面 是
pypiserver
,而非pypi-server
gunicorn 'pypiserver:app(root="/root/packages",fallback_url="http://mirrors.aliyun.com/pypi/simple/",password_file=".",authenticated=[])' -c /home/gunicorn_conf.py &