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. Nginx请求转发

    1.比如说我要将127.0.0.1/topics上的所有请求转发到xxx:xxx/上 修改 sudo vim /etc/nginx/nginx.conf server { listen 80; ser ...

  2. 经常开车的朋友必备 它是你的GPS

    经常开车的朋友肯定知道,每天都要查下当天的限行尾号,还有哪条路拥堵.还有,最不想发生的事儿就是车子快没油的时候,附近查不到加油站. 现在用这款小程序,可以轻松解决上述这些头痛的事情.扫描下面二维码,进 ...

  3. Vue 组件封装发布到npm 报错 Uncaught TypeError: Cannot read property 'toLowerCase' of undefined

    Uncaught TypeError: Cannot read property 'toLowerCase' of undefined 原因是 没有导出 export default { name:& ...

  4. Java之输入和输出

    输出 在前面的代码中,我们总是用System.out.println()来向屏幕输出一些内容: println是print line的缩写,表示输出并换行.因此,如果输出后不想换行,可以用print( ...

  5. excel 去掉 空单元格

    Excel 2003 选中这一列,定位(CTRL+G)--定位条件--空值--确定--右键--删除. 1. 然后进行全选已输入的内容,可以使用鼠标拖动已输入的内容,也可以使用快捷键全选内容,按住ctr ...

  6. 百度AI身份证识别demo,使用js提交图片数据

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...

  7. TopShelf+Quartz.net 实现window服务

    Quartz.NET官网   TopShelf 网址 代码地址:https://github.com/SeaLee02/ProjectDemo/tree/master/WindowServerDemo ...

  8. 多分类评测标准(micro 和 macro)

  9. [原创]K8Cscan for Python 2.0

    0x000 简介 K8Cscan扫描器Python版支持Windows和Linux系统 详情参考:https://www.cnblogs.com/k8gege/p/10519321.html 0x00 ...

  10. Linux下C++酒店管理系统

    功能要求: ​ 相关源码:码云:传送门,GitHub:传送门 相关图片: 拆分版 make编译 ​ ./hotel运行 ​ 输入2,进入开房模块 ​ 相关源码: class.cpp #include ...