• 搭建 pip 私源


    搭建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

    操作步骤:

    1. 拉取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
      
      
    2. 将容器制作成镜像

      docker commit -m "new env" -a "ffy" pipserver pip-server:v1
      
    3. 启动容器,启动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
      
    4. 上传:

      打包完成后,在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
      
    5. 下载:

      下载包到本地的当前目录,然后执行安装当前目录下的包

      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/

    1. 进入容器安装好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'
      
    2. 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 &
      
  • 相关阅读:
    汇编Ring 3下实现 HOOK API
    软件调试之INT 3讲解
    Delphi逆向
    XoftSpy 4.13的注册算法分析
    反调试技术揭秘
    jmp && call && ret 特权级转移 & 进程调度
    PHP Warning: Module 'modulename' already loaded in Unknown on line 0
    PhpStorm和PHPstudy配置调试参数(Xdebug),问题描述Error. Interpreter is not specified or invalid. Press “Fix” to edit your project configuration.
    php 安装xdebug进行调试(phpstorm)
    Windows下PHP多线程扩展pthreads的安装
  • 原文地址:https://www.cnblogs.com/fengfengyang/p/15925217.html
Copyright © 2020-2023  润新知