本地镜像站搭建

一、基础软件同步站搭建

1、创建用户及用户组

展开源码

groupadd -g 2001 mirrorgroup

useradd -u 2101 -g mirrorgroup mirrors

passwd mirrors

2、创建数据同步目录

展开源码

mkdir /mirrors

chown -R mirrors:mirrorgroup /mirrors

3、安装tunasync同步软件

展开源码

切换到 mirrors账户

su - mirrors

mkdir /home/mirrors/tunasync

mkdir /home/mirrors/tunasync/conf

mkdir /home/mirrors/tunasync/db

下载在软件https://github.com/tuna/tunasync/releases/tag/v0.8.0/tunasync-linux-bin.tar.gz 到/home/mirrors/tunasync 并解压;

编辑 ~/.bash_profile 文件,增加 TUNAPATH:

TUNAPATH=/home/mirrors/tunasync

PATH=$PATH:$TUNAPATH

source ~/.bash_profile 生效

4、同步配置

创建服务端配置文件 /home/mirrors/tunasync/conf/manager.conf

展开源码

debug = false

[server]

addr = "127.0.0.1"

port = 14242

ssl_cert = ""

ssl_key = ""

[files]

db_type = "bolt"

db_file = "/home/mirrors/tunasync/db/manager.db"

ca_cert = ""

配置说明:

port:监听端口,由于我下载的预编译版 tunasync 的一个小 bug,这里的 port 需固定配置为 14242

ssl_cert与ssl_key:ssl 配置,不需要 ssl 的同学不用配置

db_file:数据库文件,目前统一放在 /home/mirrors/tunasync/db/ 目录

根据需要创建需同步的镜像配置文件,创建 /home/mirrors/tunasync/conf/worker-centos.conf

展开源码

[global]

name = "worker-repo"

log_dir = "/home/mirrors/tunasync/log/tunasync/{{.Name}}"

mirror_dir = "/mirrors"

concurrent = 10

interval = 60

[manager]

api_base = "http://localhost:14242"

token = "some_token"

ca_cert = ""

[cgroup]

enable = false

base_path = "/sys/fs/cgroup"

group = "tunasync"

[server]

hostname = "localhost"

listen_addr = "127.0.0.1"

listen_port = 16010

ssl_cert = ""

ssl_key = ""

[[mirrors]]

name = "centos"

provider = "rsync"

upstream = "rsync://mirrors.tuna.tsinghua.edu.cn/centos/"

use_ipv6 = false

[[mirrors]]

name = "epel"

provider = "rsync"

upstream = "rsync://mirrors.tuna.tsinghua.edu.cn/epel/"

use_ipv6 = false

[[mirrors]]

name = "ubuntu"

provider = "rsync"

upstream = "rsync://mirrors.tuna.tsinghua.edu.cn/ubuntu/"

use_ipv6 = false

[[mirrors]]

name = "ubuntu-cdimage"

provider = "rsync"

upstream = "rsync://mirrors.tuna.tsinghua.edu.cn/ubuntu-cdimage/"

use_ipv6 = false

[[mirrors]]

name = "ubuntu-cloud-images"

provider = "rsync"

upstream = "rsync://mirrors.tuna.tsinghua.edu.cn/ubuntu-cloud-images/"

use_ipv6 = false

[[mirrors]]

name = "ubuntu-releases"

provider = "rsync"

upstream = "rsync://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/"

use_ipv6 = false

[[mirrors]]

name = "ceph"

provider = "rsync"

upstream = "rsync://mirrors.tuna.tsinghua.edu.cn/ceph/"

use_ipv6 = false

[[mirrors]]

name = "docker-ce"

provider = "rsync"

upstream = "rsync://mirrors.tuna.tsinghua.edu.cn/docker-ce/"

use_ipv6 = false

[[mirrors]]

name = "kernel"

provider = "rsync"

upstream = "rsync://mirrors.tuna.tsinghua.edu.cn/kernel/"

use_ipv6 = false

[[mirrors]]

name = "mysql"

provider = "rsync"

upstream = "rsync://mirrors.tuna.tsinghua.edu.cn/mysql/"

use_ipv6 = false

[[mirrors]]

name = "ELK"

provider = "rsync"

upstream = "rsync://mirrors.tuna.tsinghua.edu.cn/ELK/"

use_ipv6 = false

[[mirrors]]

name = "anaconda"

provider = "rsync"

upstream = "rsync://mirrors.tuna.tsinghua.edu.cn/anaconda/"

use_ipv6 = false

[[mirrors]]

name = "apache"

provider = "rsync"

upstream = "rsync://mirrors.tuna.tsinghua.edu.cn/apache/"

use_ipv6 = false

[[mirrors]]

name = "centos-stream"

provider = "rsync"

upstream = "rsync://mirrors.tuna.tsinghua.edu.cn/centos-stream/"

use_ipv6 = false

[[mirrors]]

name = "grafana"

provider = "rsync"

upstream = "rsync://mirrors.tuna.tsinghua.edu.cn/grafana/"

use_ipv6 = false

[[mirrors]]

name = "jenkins"

provider = "rsync"

upstream = "rsync://mirrors.tuna.tsinghua.edu.cn/jenkins/"

use_ipv6 = false

[[mirrors]]

name = "kubernetes"

provider = "rsync"

upstream = "rsync://mirrors.tuna.tsinghua.edu.cn/kubernetes/"

use_ipv6 = false

[[mirrors]]

name = "mariadb"

provider = "rsync"

upstream = "rsync://mirrors.tuna.tsinghua.edu.cn/mariadb/"

use_ipv6 = false

[[mirrors]]

name = "mongodb"

provider = "rsync"

upstream = "rsync://mirrors.tuna.tsinghua.edu.cn/mongodb/"

use_ipv6 = false

[[mirrors]]

name = "zabbix"

provider = "rsync"

upstream = "rsync://mirrors.tuna.tsinghua.edu.cn/zabbix/"

use_ipv6 = false

配置说明:

global name:worker 进程名称,用于程序识别

log_dir:tunasync 的日志路径

mirror_dir:镜像下载地址

concurrent:并发线程数

interval:rsync 同步周期,以分钟为单位

api_base:manager 地址,注意,此处需与 manager 所在服务器配置保持一致

server listen_port:该 worker 自身的监听端口,如果同一台服务器上有多个 worker,各个 worker 的配置文件中务必配置不同端口

mirrors name:镜像名称,tunasync 会在镜像根目录下建立一个该名称的目录用于下载镜像

upstream:同步地址,注意,参数最后需要有“/”,否则启动 tunasync 时会报错

5、启动同步服务,配置后自动按照配置文件需求,周期性和主站同步。

展开源码

开启manager服务(后台守护进程):

tunasync manager --config /home/mirrors/tunasync/conf/manager.conf >> /mirrors/log/plog/manager.log &

开启 worker 服务(后台守护进程):

tunasync worker --config /home/mirrors/tunasync/conf/worker-centos.conf >> /mirrors/log/plog/worker-centos.log &

6、配置web服务:

展开源码

安装apache 服务,开启服务和开机启动

确认防火墙和selinux关闭状态。

yum install httpd -y

systemctl enable httpd

systemctl start httpd

修改默认web目录

vi /etc/httpd/conf/httpd.conf

DocumentRoot "/mirrors"

添加目录访问权限:

<Directory "/mirrors">

Options Indexes FollowSymLinks

AllowOverride None

Require all granted

</Directory>

重启服务

systemctl restart httpd

7、生产repo文件。

同步完成后,可将web 绑定域名。测试安装相关软件的包路径和正确性。

二、pypi本地源搭建

1、安装docker

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

2、开启服务

systemctl start docker

systemctl enable docker

3、下载镜像并运行开启容器

docker pull pypa/bandersnatch

docker run -it -v /srv/pypi:/srv/pypi pypa/bandersnatch:latest bash

4、生成配置文件

第一次执行,需要执行一次bandersnatch mirror才会生成/etc/bandersnatch.conf配置文件,才能对配置进行修改。

bandersnatch mirror

编辑 /etc/bandersnatch.conf文件,主要是修改一下存放文件的路径

directory = /srv/pypi

再次执行 bandersnatch mirror进行同步。

bandersnatch mirror

5、使用设置

展开源码

pip install <package> -i http://xx.xx.xx.xx/pypi/simple/ --trusted-host xx.xx.xx.xx或者配置~/.pip/pip.conf文件

cat ~/.pip/pip.conf

[global]

index-url = http://xx.xx.xx.xx/pypi/simple

[install]

trusted-host=xx.xx.xx.xx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值