最佳体验请使用Chrome67及以上版本、火狐、Edge、Safari浏览器 ×

创建银行
创建开票

    搭建本地私有yum仓库

    编者:全 然@勾股弦数据 阅读85 来源: 互联网 2024/09/11 01:50:42 文章 外链 公开

    1. 部署配置rsync+nginx

    # 安装依赖
    yum -y install glibc-common glibc glibc-devel glibc-header libgcc libgomp gcc libstdc++ libstdc++-devel gcc-c++ kernel-headers keyutils-libs-devel libselinux-devel krb5-devel libcom_err-devel libkadm5 libmpc libselinux-devel libsepol-devel libverto-devel mpfr openssl-devel pcre-devel zlib-devel
    # 下载nginx
    wget http://nginx.org/download/nginx-1.19.0.tar.gz
    # 解压
    tar -zxvf nginx-1.19.0.tar.gz 
    # 进入目录
    cd nginx-1.19.0
    # 编译源码
    ./configure --prefix=/usr/local/nginx
    # 开始安装
    make && make install
    # 建立软连接
    ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
    # 重写nginx文件配置(先备份)
    vim /usr/local/nginx/conf/nginx.conf
    
    #user  nobody;
       worker_processes  1;
    
       #error_log  logs/error.log;
       #error_log  logs/error.log  notice;
       #error_log  logs/error.log  info;
    
       #pid        logs/nginx.pid;
    
       events {
       	worker_connections  1024;
       }
       http {
       	include       mime.types;
       	default_type  application/octet-stream;
    
       	#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
       	#                  '$status $body_bytes_sent "$http_referer" '
       	#                  '"$http_user_agent" "$http_x_forwarded_for"';
    
       	#access_log  logs/access.log  main;
    
       	sendfile        on;
       	#tcp_nopush     on;
    
       	#keepalive_timeout  0;
       	keepalive_timeout  65;
    
       	#gzip  on;
    
       	server {
       		listen       80;  # 监听 80 端口,按需求也可以配置一个前台服务器作子域名转发
       		# index index.html default.html; # 默认首页文件
       		root  /var/www/file;   #文件服务器的根路径
    
       		autoindex on;
       		autoindex_exact_size on;
       		autoindex_localtime on;
    
       		charset utf-8;
    
       		# 这里配置拒绝访问的目录或文件
       		location ~ (repos) 
       		{
       			deny all;
       		}
    
       		 # 静态文件的过期时间,可以不需要此配置
       		location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
       		{
       			expires      30d;
       		}
    
       		# 静态文件的过期时间,可以不需要此配置
       		location ~ .*\.(js|css)?$
       		{
       			expires      12h;
       		}
       	}
    
       }
    启动nginx
    /usr/local/nginx/sbin/nginx

    2. rsync 同步官方提供的yum源

    注:选择http://mirrors.ustc.edu.cn/,进行同步。(该站点必须支持sync协议)

    注:高效同步避免报错:切记rsync 参数 -av  --append --partial

    注:限制带宽 --bwlimit=5000

    注:使用crontab定时任务进行同步

    注:rsync用法:

    选项说明和示例
    接下来是rsync的选项说明。
    -a、--archive参数表示存档模式,保存所有的元数据,比如修改时间(modification time)、权限、所有者等,并且软链接也会同步过去。
    
    --append参数指定文件接着上次中断的地方,继续传输。
    
    --append-verify参数跟--append参数类似,但会对传输完成后的文件进行一次校验。如果校验失败,将重新发送整个文件。
    
    -b、--backup参数指定在删除或更新目标目录已经存在的文件时,将该文件更名后进行备份,默认行为是删除。更名规则是添加由--suffix参数指定的文件后缀名,默认是~。
    
    --backup-dir参数指定文件备份时存放的目录,比如--backup-dir=/path/to/backups。
    
    --bwlimit参数指定带宽限制,默认单位是 KB/s,比如--bwlimit=100。
    
    -c、--checksum参数改变rsync的校验方式。默认情况下,rsync 只检查文件的大小和最后修改日期是否发生变化,如果发生变化,就重新传输;使用这个参数以后,则通过判断文件内容的校验和,决定是否重新传输。
    
    --delete参数删除只存在于目标目录、不存在于源目标的文件,即保证目标目录是源目标的镜像。
    
    -e参数指定使用 SSH 协议传输数据。
    
    --exclude参数指定排除不进行同步的文件,比如--exclude="*.iso"。
    
    --exclude-from参数指定一个本地文件,里面是需要排除的文件模式,每个模式一行。
    
    --existing、--ignore-non-existing参数表示不同步目标目录中不存在的文件和目录。
    
    -h参数表示以人类可读的格式输出。
    
    -h、--help参数返回帮助信息。
    
    -i参数表示输出源目录与目标目录之间文件差异的详细情况。
    
    --ignore-existing参数表示只要该文件在目标目录中已经存在,就跳过去,不再同步这些文件。
    
    --include参数指定同步时要包括的文件,一般与--exclude结合使用。
    
    --link-dest参数指定增量备份的基准目录。
    
    -m参数指定不同步空目录。
    
    --max-size参数设置传输的最大文件的大小限制,比如不超过200KB(--max-size='200k')。
    
    --min-size参数设置传输的最小文件的大小限制,比如不小于10KB(--min-size=10k)。
    
    -n参数或--dry-run参数模拟将要执行的操作,而并不真的执行。配合-v参数使用,可以看到哪些内容会被同步过去。
    
    -P参数是--progress和--partial这两个参数的结合。
    
    --partial参数允许恢复中断的传输。不使用该参数时,rsync会删除传输到一半被打断的文件;使用该参数后,传输到一半的文件也会同步到目标目录,下次同步时再恢复中断的传输。一般需要与--append或--append-verify配合使用。
    
    --partial-dir参数指定将传输到一半的文件保存到一个临时目录,比如--partial-dir=.rsync-partial。一般需要与--append或--append-verify配合使用。
    
    --progress参数表示显示进展。
    
    -r参数表示递归,即包含子目录。
    
    --remove-source-files参数表示传输成功后,删除发送方的文件。
    
    --size-only参数表示只同步大小有变化的文件,不考虑文件修改时间的差异。
    
    --suffix参数指定文件名备份时,对文件名添加的后缀,默认是~。
    
    -u、--update参数表示同步时跳过目标目录中修改时间更新的文件,即不同步这些有更新的时间戳的文件。
    
    -v参数表示输出细节。-vv表示输出更详细的信息,-vvv表示输出最详细的信息。
    
    --version参数返回 rsync 的版本。
    
    -z参数指定同步时压缩数据。

    同步 centos 里的内容到本地,有些文件不需要同步下载,需要排除,将这些需要排除的文件列在exclude_repo.cnf中(ccentos7 和 centos8 不同):

    --centos 8
    # 创建同步文件夹
    # 排除其他选项
    cat >> /home/centos8_exclude_repo.cnf <<EOF
    AppStream
    Devel
    HighAvailability
    cloud
    configmanagement
    cr
    fasttrack
    isos
    messaging
    nfv
    opstools
    storage
    virt
    COMPOSE_ID
    EOF
    
    # 单独同步或者直接同步整个centos8
    #rsync -avt rsync://rsync.mirrors.ustc.edu.cn/centos/8/BaseOS/x86_64/os/ /var/www/file/centos/8/BaseOS/x86_64/os/
    #rsync -avt rsync://rsync.mirrors.ustc.edu.cn/centos/8/extras/x86_64/os/  /var/www/file/centos/8/extras/x86_64/os/
    #rsync -avt rsync://rsync.mirrors.ustc.edu.cn/centos/8/PowerTools/x86_64/os/  /var/www/file/centos/8/PowerTools/x86_64/os/
    #rsync -avt rsync://rsync.mirrors.ustc.edu.cn/centos/8/centosplus/x86_64/os/  /var/www/file/centos/8/centosplus/x86_64/os/
    # 可后台nohup &运行
    rsync -avt --exclude-from=centos8_exclude_repo.cnf rsync://rsync.mirrors.ustc.edu.cn/centos/8/   /var/www/file/centos/8/
    --centos 7
    # 创建同步文件夹
    排除其他选项
    cat >> /home/exclude_repo.cnf <<EOF
    atomic
    cloud
    configmanagement
    updates/x86_64/drpms
    cr
    centosplus
    dotnet
    opstools
    fasttrack
    isos
    nfv
    paas
    rt
    sclo
    storage
    virt
    EOF
    
    # 单独同步或者直接同步整个centos7
    #rsync -vrt rsync://rsync.mirrors.ustc.edu.cn/centos/7/os/x86_64/ /var/www/file/centos/7/os/x86_64/
    #rsync -vrt rsync://rsync.mirrors.ustc.edu.cn/centos/7/extras/x86_64/ /var/www/file/centos/7/extras/x86_64/
    #rsync -vrt rsync://rsync.mirrors.ustc.edu.cn/centos/7/updates/x86_64/ /var/www/file/centos/7/updates/x86_64/
    
    rsync -avt --exclude-from=exclude_repo.cnf rsync://rsync.mirrors.ustc.edu.cn/centos/7/   /var/www/file/centos/7/
    --添加到定时任务执行
    
    30 0 * * * rsync -vrt rsync://rsync.mirrors.ustc.edu.cn/centos/7/os/x86_64/ /data/repo/centos/7/os/x86/
    30 0 * * * rsync -avz --delete --exclude='repodata' rsync://rsync.mirrors.ustc.edu.cn/centos/7/updates/x86_64 /data/repo/centos/7/updates/x86_64
    30 0 * * * rsync -vrt rsync://rsync.mirrors.ustc.edu.cn/centos/7/extras/x86_64/ /data/repo/centos/7/extras/x86_64/
    30 0 * * * rsync -vrt --bwlimit=3000 --exclude=debug/ rsync://rsync.mirrors.ustc.edu.cn/epel/7/x86_64/ /data/repo/epel/
    30 0 * * * rsync -vrt rsync://rsync.repo.zabbix.com/mirror/zabbix/5.0/rhel/7/x86_64/ /data/repo/zabbix/
    30 0 * * * rsync -avt --exclude=debug rsync://rsync.mirrors.ustc.edu.cn/ubuntu/ /data/repo/ubuntu/
    --同步epel源
    # 创建同步文件夹
    mkdir -p /var/www/file/epel/7/x86_64/
    rsync -avt --exclude=debug rsync://rsync.mirrors.ustc.edu.cn/epel/7/x86_64/  /var/www/file/epel/7/x86_64/
    rsync -avt --exclude=debug rsync://rsync.mirrors.ustc.edu.cn/epel/8/Everything/x86_64/  /var/www/file/epel/8/x86_64/
    # 目录结构如下
    ├── centos
      │   └── 7
      │       ├── extras
      │       ├── os
      │       └── updates
      ├── docker-ce
      │   └── linux
      │       └── centos
      └── epel
          └── 7
              └── x86_64

    3. 配置repo源

    在需要配置的客户机配置repo源(以centos7为例)

    vim /etc/yum.repos.d/CentOS7-Base.repo
    
    #base
    [centos-media]
    name=CentOS-$releasever - Media
    baseurl=http://10.160.145.98/centos/7/os/x86_64
    gpgcheck=1
    enabled=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    [epel]
    name=Extra Packages for Enterprise Linux 7 - $basearch
    baseurl=http://10.160.145.98/centos/epel/7/$basearch
    enabled=1
    gpgcheck=0

    以ubuntu18为例

    # 编辑 /etc/apt/sources.list 文件,修改镜像源
    deb http://10.39.193.20/ubuntu/ bionic main restricted universe multiverse
    deb http://10.39.193.20/ubuntu/ bionic-updates main restricted universe multiverse
    deb http://10.39.193.20/ubuntu/ bionic-backports main restricted universe multiverse
    deb http://10.39.193.20/ubuntu/ bionic-security main restricted universe multiverse
    deb http://10.39.193.20/ubuntu/ bionic-proposed main restricted universe multiverse
     
    # 运行 sudo apt-get update 命令更新索引文件,之后即可使用 sudo apt-get install 命令从本地仓库中安装软件包了。


    声明:本网站部分内容来源于网络,版权归原权利人所有,其观点不代表本网站立场;本网站视频或图片制作权归当前商户及其作者,涉及未经授权的制作均须标记“样稿”。如内容侵犯了您相关权利,请及时通过邮箱service@ichub.com与我们联系。
     0  0

    微信扫一扫:分享

    微信里点“+”,扫一扫二维码

    便可将本文分享至朋友圈。

      
    
    
    分享
     0
      验证