https://segmentfault.com/a/1190000013968371

私有yum仓库在企业中的应用还是比较广泛,有方便、快捷、灵活等优势。如某公司安全部门不允许大批量的主机连接互联网、自己单独制作的rpm包需要存放、节省出口带宽、公有仓库下载安装比较慢、等等吧. 迫使我们需要建立一个私有的软件仓库。然而私有的软件仓库构建比较简单,无非是从互联网上的公有仓库中同步文件到本地然后再装个ftp、http等能提供yum客户端访问的服务将仓库发布出去即可。但有没有想过一个问题我们自己构建的私有仓库在提供内部机器使用的时候需要修改yum配置文件是一件很痛苦的事情(别往里钻,钻就没意思了,有同学就说了可以用自动化工具去同步所有主机的配置文件...您且往下看,机器比较少(十台八台的)的话构建私有仓库是一种奢侈排除在外),那么这么痛苦的事情怎么解决?...运维的核心观念--能简单一步到位解决的事情就别大费周章去搞其他的了,至于怎么选择那是你的事情了?

这里简单说下是怎么实现的如下:

1、且看默认的yum配置文件内容(摘其中一段) CentOS-Base.repo

[base]

name=CentOS-$releasever - Base

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra

#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

我们看mirrorlist=xxxxxx.... 这行,实际是去请求的不是真正的仓库,而是去取的一个 仓库的列表,这个列表里包含一堆的实际仓库的url,有看到这行包含几个变量

release=$releasever为系统的发行版本是CentOS/redhat系列的 5、6 、7

arch=$basearch为当前系统的平台是x86_64的还是i386的

repo=os为仓库名

我们需要的就是如上几个了,这里来拼凑成一个实际请求的url如下:

http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os

http://mirrorlist.centos.org/?release=6&arch=i386&repo=os

在浏览器中打开此链接看看是不是返回了一堆实际仓库的路径

2、得到如上的url后我们需要自己写一个web的程序来提供在浏览器中打开上述链接         返回的内容,具体实现也很简单对于会点开发的人来说,就是根据请求不同的参数来返         回不同的内容,而里面的内容就是我们自己构建的私有仓库地址,代码见MList项目

3、好了,仓库有了,程序也有了下面就需要将默认请求的域名(mirrorlist.centos.org)     通过私有dns解析到2中程序部署的地址即可,且要配置nginx或apache的域名虚   拟主机

4、慢慢享受吧. 我不知道这么讲大伙能不能理解.不能理解的可以单独找我,网络班企         业教练 Andy_f

有同学就说了,看你说这么一大通感觉也很复杂,还不如我一个一个修改配置文件呢.

而我觉得这样很方便一劳永逸,再也不用担心私有仓库的问题了.简单总结下几点

A、构建私有仓库

B、写代码(代码比较简单我已经写好提供使用)响应默认配置文件中请求的内容并部         署nginx反带,域名形式的虚拟主机

C、构建内部dns解析默认配置文件中的域名及私有仓库的域名

D、O了.这么一总结是不是就感觉简单多了...

一、环境介绍

IP

应用名称

备注

10.57.1.206

yum仓库、nginx、MList、dns

CenOS7.x

二、安装配置

# 小提示,确保selinux及防火墙是关闭状态

1、构建私有CentOS仓库

yum仓库里的包我们从中国科技大学的公有仓库中同步CentOS的整个仓库,整个centos的仓库大概有三百多G,里面包含iso,rpm包等等

http://mirrors.ustc.edu.cn/ 中国科技大学的公共仓库主页,里面包含很多系统及开源软件的仓库,可根据自己需要参考如下方式同步其他的.

A、 首先建立一个统一存放的目录

mkdir /data/soft_repos/centos -pv

# 统一放在/data/soft_repos/目录下,如果其他的仓库也可放在此目录下

B、 同步CentOS仓库至本地

#中国科技大学的公有软件仓库提供了rsync同步服务,只要服务上安装有rsync即可使用

vim /data/soft_repos/centos.sh

#!/bin/bash

rsync -avrtH --bwlimit=3850 \

rsync://rsync.mirrors.ustc.edu.cn/centos/ /data/soft_repos/centos/

由于整个仓库比较大同步可能会比较耗时,慢慢等待吧, --bwlimit参数是限制流量的,可根据自己的出口带宽来调整

C、 配置nginx来发布仓库

# 安装nginx,安装方式可根据自己喜好,这里使用epel仓库中的rpm包

yum install epel-release -y

yum install nginx -y

修改nginx主配置文件

vim /etc/nginx/nginx.conf

# 内容如下,可不必跟我这一样,参考主要配置为如下标红色的三个配置项

user nginx;

worker_processes auto;

error_log /var/log/nginx/error.log;

pid /run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

events {

worker_connections 1024;

}

http {

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  /var/log/nginx/access.log  main;

sendfile            on;

tcp_nopush          on;

tcp_nodelay         on;

keepalive_timeout   65;

types_hash_max_size 2048;

#开启目录索引,以便在浏览器中访问

autoindex on;

gzip  on;

include             /etc/nginx/mime.types;

default_type        application/octet-stream;

include /etc/nginx/conf.d/*.conf;

}

# end

添加yum仓库的虚拟主机

vim /etc/nginx/conf.d/mirror.conf

# 内容如下

server {

listen       80;

# 这几个域名待会要用私有dns服务器来解析,

server_name mirror.xxxxx.com yum.xxxxx.com mirror.centos.org;

# 下载流量限制

limit_rate 50M;

charset utf8;

location / {

root   /data/soft_repos/;

access_log  /var/log/nginx/mirror.log  main;

}

}

启动nginx并设置开机启动

systemctl start nginx

systemctl enable nginx

至此私有CentOS仓库已经建好, 可能同步没那么快,如果想更快的看到效果可将iso挂载至对应目录

2、部署MList并配置Nginx

MList程序是用python的tornado web框架写的一个简单的程序,作用在上面已经介绍过了.这里不过多的阐述.直接开干.

将MList-2019-03-30.tar.gz  文件上传至服务器/usr/local/目录下

ls /usr/local/MList-2019-03-30.tar.gz

/usr/local/MList-2019-03-30.tar.gz

安装tornado

yum install python-setuptools -y

easy_install tornado==5.1.1

解压MList-2019-03-30.tar.gz

cd /usr/local

tar xvf MList-2019-03-30.tar.gz

# 修改仓库列表配置

vim MList/views.py

# 修改18行那个列表中的值,其他别动

def centos(request):

# 这里是定义yum仓库的url,域名要内部dns能够解析, 如果内部yum仓库使用的是IP这里的域名替换为IP也是可以的

repoUrl=[

'http://mirror.xxxxx.com/centos',

'http://yum.xxxxx.com/centos',

'http://mirror.centos.org/centos'

]

# 保存退出

启动MList

nohup python /usr/local/MList/Mlist.py --port=8080 &

# 加入开机启动

echo 'nohup python /usr/local/MList/Mlist.py --port=8080 &' >> /etc/rc.local

chmod a+x /etc/rc.d/rc.local

curl http://127.0.0.1:8080  # 显示如下信息表示正常

Welcome MList

使用nginx代理MList来工作

vim /etc/nginx/conf.d/MList.conf

server {

listen       80;

# 不知道大家还有印象没,这个MList程序的作用,这里为什么要配置这个域名呢?

server_name mirrorlist.centos.org;

access_log  /var/log/nginx/MList.log  main;

location / {

proxy_pass   http://127.0.0.1:8080/centos/;

}

}

重启nginx

systemctl restart nginx

至此MList已经配置好了,接下来就比较简单了,解析下如上配置的域名到对应的IP

mirrorlist.centos.org  # 默认yum配置文件中的域名,A记录到MList的nginx主机IP

mirror.xxxxx.com    # 以下三个域名是实际私有的yum仓库的域名,需要解析到yum仓库的IP

yum.xxxxx.com

mirror.centos.org

3、部署私有DNS

dns的开源软件有很多,如bind/powerdns/dnsmasq等,这里使用比较简单的dnsmasq

一般来说dnsmasq承载几百台机器的解析工作还是没有问题的

安装dnsmasq

yum install dnsmasq -y

添加解析记录

vim /etc/dnsmasq.d/test.conf

# MList

address=/mirrorlist.centos.org/10.57.1.206

# YUM Repos

address=/mirror.xxxxx.com/10.57.1.206

address=/yum.xxxxx.com/10.57.1.206

address=/mirror.centos.org/10.57.1.206

启动dnsmasq

systemctl start dnsmasq

systemctl enable dnsmasq

至此基本已经配置完成了,接下来做下测试

三、测试验证

找一台centos6.x 或centos7.x 的主机将dns服务器指向 dnsmasq的地址

然后在nginx的主机上 查看日志

tail -f /var/log/nginx/MList.log

# 多开俩窗口查看日志

tail -f /var/log/nginx/mirror.log

最后在测试机上安装ntp

yum install ntp -y

# 查看yum客户端是否去MList上请求仓库列表

# 查看rpm包是否是去私有仓库中下载并安装的

yum仓库的部署的更多相关文章

  1. 自动化部署必备技能—部署yum仓库、定制rpm包

    部署yum仓库.定制rpm包 目录 第1章 扩展 - yum缓存 1.1 yum缓存使用步骤... 1 1.1.1 导言... 1 1.1.2 修改配置文件... 1 1.1.3 使用缓存... 1 ...

  2. Service系统服务(二):补充应用技巧、软连接与硬连接、man手册、zip备份、vim效率操作、自定义yum软件仓库、发布及测试yum仓库、编译安装软件包

    一.补充应用技巧 目标: 本例要求掌握在运维中比较常用的一些扩展命令技巧的使用,完成下列小技巧操作: 1> 采用数值形式将目录/root的权限调整为 rwx------   2> 将记录的 ...

  3. 自定义yum仓库

                                             自定义yum仓库 案例4:自定义yum软件仓库 4.1问题 本例要求在CentOS真机上利用RHEL7的光盘镜像文件准 ...

  4. 公网定制化yum仓库部署

    公网定制化yum仓库部署 (1)搭建公网源yum仓库 安装wget aliyun源 # wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun ...

  5. Linux系统——本地定制化yum仓库部署

    1)开启yum仓库配置文件 /etc/yum.conf的keepcache功能 (开启一个新的虚拟机) 将keepcache=0改为1,修改配置文件后重新清空缓存(1默认下载的安装包不删除,才可以实现 ...

  6. yum仓库配置与内网源部署记录

    使用yum的好处主要就是在于能够自动解决软件包之间的依赖.这使得维护更加容易.这篇文章主要就是记录部署内网源的操作过程以及yum工具如何使用 因为需要.数据库要从Oracle迁移至MySQL.在部署M ...

  7. Linux网络服务第四章部署yum仓库

    第四章部署yum仓库服务 1.笔记 systemctl start 命令 :重启 systemctl enable 命令 :开机自启动 netstat -anput | grep 命令:查看是否开启 ...

  8. 部署YUM仓库 (最近睡眠质量很差,你什么时候搬过来住)

    部署YUM仓库 1.YUM概述 YUM(Yellow dog Updater Modified) 基于RPM包构建的软件更新机制 可以自动解决依赖关系 所有软件由集中的YUM软件仓库提供 2.主备安装 ...

  9. 部署YUM仓库及NFS共享服务

    部署YUM仓库及NFS共享服务 目录 部署YUM仓库及NFS共享服务 一.YUM仓库服务 1. YUM概述 2. 部署YUM软件仓库 (1)准备安装源 ①YUM仓库的种类 ②RPM软件包的来源 ③构建 ...

随机推荐

  1. docker试水

    1.清理旧版本yum remove docker \                  docker-common \                  docker-selinux \        ...

  2. Hive学习笔记——metadata

    Hive结构体系 https://blog.csdn.net/zhoudaxia/article/details/8855937 可以在hive的jdbc接口中使用getMetaData方法来获取hi ...

  3. {Redis}NOAUTH Authentication required. Linux.cenOS

    问题 [root@VM_0_12_centos redis]# ./bin/redis-cli -p 6379 127.0.0.1:6379> INFO NOAUTH Authenticatio ...

  4. java.lang.ClassNotFoundException: org.apache.http.impl.client.HttpClientBuilder

    添加依赖即可:compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.6' ,注意是apache的包

  5. Arch Linux 启用 MTU 探测

    最近在家里经常遇到 ssh 超时的问题,一开始也没太当回事,感觉是网络不稳定导致的,但是后来慢慢的发现这种超时问题只会出现在跟 ssh 相关的程序中,例如 git.ssh.这成功的引起了我的注意,于是 ...

  6. Google Adsense(谷歌网站联盟)广告申请指南

    Google AdSense 是一种获取收入的快速简便的方法,适合于各种规模的网站发布商.它可以在网站的内容网页上展示相关性较高的 Google 广告,并且这些广告不会过分夸张醒目.由于所展示的广告同 ...

  7. day25——私有成员、类方法、静态方法、属性、isinstance和issubclass的区别

    day25 类的私有成员 当你遇到重要的数据,功能(只允许本类使用的一些方法,数据)设置成私有成员 python所有的私有成员都是纸老虎,形同虚设 类从加载时,只要遇到类中的私有成员,都会在私有成员前 ...

  8. ZYNQ笔记(1):PL端——led灯

    ZYNQ分为PS和PL,此博客实际上是FPGA中一个完整的FPGA工程的创建. PS:处理系统 (Processing System) 即ARM的Soc部分 PL:可编程逻辑(Programable ...

  9. Vivado关联Notepad++

    Vivado自带的编辑器非常难看,我习惯用Notepad++,这里记录一下二者的关联. 1.打开Vivado,点击 Tools --- Settings --- Text Editor,右侧选择 Cu ...

  10. JVM与并发

    1.jvm内存模型 硬件内存模型 处理器-->高速缓存-->缓存一致性协议-->主存 java内存模型 线程<-->工作内存<-->save和load < ...