做过大型项目的同学一定都搞过自定义 yum 仓库,自定义 yum 在网上也有很多种方案,但今天我们来个不一样的玩法!

在开始之前先来抛出几个问题

  • 如何快速的制作一个仓库?

  • 如何快速的制作一个最精简仓库?

  • 如何快速的制作一个包含 docker、pypi、yum 和 maven 等等的 All-in One 仓库?

  • 如何在一个离线环境中快速的安装我们所需要的软件包?


Nexus 是什么?

简单来说 Nexus 是一个全能的仓储管理工具,它能帮我们解决有关软件包的一系列问题。下面我们来还原几个真实的场景,接下来我们就请上今天的主角, Nexus 闪亮全场!

情景一

公司接了一个超大型项目,需要在用户的离线环境中部署公司数十套产品。那么这个光荣而艰巨的任务就交到运维同学身上吧!

吃饭时间看见运维同学闷闷不乐,于是不解的过去问他,公司有大项目了,为啥还愁眉苦脸的呀?运维同学说,这十几套产品,要安装的软件一大堆,软件包依赖问题一大堆,这可如何是好呀。

我拍了拍运维同学的肩膀对他说,信杰哥,杰哥带你飞!

安装 Nexus 服务

在内网找一台可以访问公网的机器,安装 Nexus 服务

解压软件

tar xzf nexus-3.14.0-04-unix.tar.gz -C /data/sonatype-work/nexus3
echo 'NEXUS_HOME="/data/nexus-3.14.0-04"' >> ~/.bashrc
echo 'run_as_user="root"' >> /data/nexus-3.14.0-04/bin/nexus.rc

服务配置

shell> vim /etc/systemd/system/nexus.service
[Unit]
Description=nexus service
After=network.target
[Service]
Type=forking
LimitNOFILE=65536
ExecStart=/data/nexus-3.14.0-04/bin/nexus start
ExecStop=/data/nexus-3.14.0-04/bin/nexus stop
User=root
Restart=on-abort
[Install]
WantedBy=multi-user.target

启动服务

systemctl reload-daemon
systemctl start nexus

登录

http://10.200.60.21:8081/

默认账号密码: admin/admin123

登录后记得修改 admin 密码

配置 yum proxy

创建 repository

选择 "yum(proxy)"

确定清华 Yum 仓库地址

填写 "name" 和 "Remote storage",注意 "Remote storage" 需要以 "/" 结尾

Repository 创建完成后

确定 Repository 的状态,"Online - Remote Available" 才是正确状态哦

编写客户端 Yum 配置文件,注意 "baseurl" 也需要以 "/" 结尾!

shell> vim tsinghua.repo
[tsinghua]
name=Tsinghua RHEL/CentOS $releasever - $basearch
baseurl=http://admin:admin123@10.200.60.21:8081/repository/tsinghua/$releasever/os/$basearch/
enabled=1
gpgcheck=0

执行安装

yum clean all; yum makecache
yum install http

安装完成后查看仓储中已经有了已安装过的 rpm 包

看到这里,不知道各位小伙伴有没有看明白,以上操作是我们使用 Nexus 仓库中 Yum proxy 的功能,创建了一个代理清华 Yum 源的 Repository,然后在内网的机器上,配置好指向 Nexus 中的 Repository,这时再安装软件,就会通过 Nexus 找到清华 Yum 源中的软件包进行安装。

只要运维同学使用了配置好的 Yum 源,所有安装过的软件都会记录在这里。到时测试完成后,批量把软件包进行下载,再通过 Nexus 创建私有仓储即可完美使用。

软件包有两种情况

  • 如果软件包不存在,则 Nexus 会从 Proxy 端远程下载软件包

  • 如果软件包存在,则直接返回给客户端使用

那可能有同学问了,如果清华 Yum 源的包不够用怎么办?我们还可以再添加 163、 epel 的源呀,所以只要能找到提供 Yum 的地址,都可以尽情的使用 Nexus yum proxy。并且以上配置不区别操作系统版本,如 CentOS 6 也可以使用,不信?我们来瞧瞧~

shell> cat /etc/*release*
CentOS release 6.9 (Final)
LSB_VERSION=base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
cat: /etc/lsb-release.d: Is a directory
CentOS release 6.9 (Final)
CentOS release 6.9 (Final)
cpe:/o:centos:linux:6:GA
yum clean all; yum makecache
yum install httpd -y

可以看到,出现了一个 "6" 的目录,分支下也生成了 http 相关的 rpm 包

大家想想看,这是为什么呢?

情景二

一个 DB 小 A 跑来找我,说杰哥,我要装个 MySQL 8.0,可是咱们内网 Yum 源里没安装包呀,公司下载又特别慢,你有没有办法呀?

我看了他一眼,告诉他,信杰哥,不翻车。大家说说我们有什么办法来帮助他呢?

找到 MySQL 官方 Yum 源

下载下来,定晴一看,怎么是个 rpm 包呀?不慌,rpm 本身就是个压缩包,我们用压缩工具打开看看

原来 repo 文件藏在里面呀,这里有两个 repo 文件

  • mysql-community-source.repo

  • mysql-community.repo

让我们来猜猜,带有 source 的,是有关源码的仓库,不带 source 的,是编译好打包的 rpm 包,我们直接打开 mysql-community.repo,赫然看到,原来 MySQL 官方 Yum 源都在这里呢,里面内容相信大家都不陌生吧。

看到这里,是不是大家又明白点什么了!没错,有了官方 Yum 源地址,我们就可以在 Nexus 上创建 Yum proxy

编写 repo 文件

shell> cat mysql8.repo
[mysql8]
name=Mysql for RHEL/CentOS $releasever - $basearch
baseurl=http://admin:admin123@10.200.60.21:8081/repository/MySQL8.0/$releasever/$basearch/
enabled=1
gpgcheck=0

执行安装

yum install yum install mysql-community-client-8.0.11 mysql-community-server-8.0.11

同样,此 Yum 源同时支持 CentOS 6 和 CentOS 7,把同样的 repo 文件放到 CentOS 6 机器上,执行安装。

情景三

这一天,又一个运维小哥跑来找我,说杰哥杰哥,我们这次有好多需求,要下载好多 docker 镜像,又要下载好多 pypi 镜像,还要安装各个版本的 MySQL,我们搞不定啦,快来支持我们一下啊~~~

我吐……这下杰哥帮不了你了,给你份文档自己看着办吧。哈哈

尾声

结合以上几个情景,相信大家对 Nexus 都有一个大致的了解,Nexus 的权限管理、LDAP,还有 https 都有相应的支持,我们甚至可以把它当做 FTP 服务器来用,我们的 CI/CD 流程也已经集成了 Nexus 。所以 Nexus 还有好多好玩的,等着大家探(入)索(坑)哈!

| 作者简介

刘志杰 | 现就职于国双科技,高级数据库工程师。

大型项目交付经验,丰富的数据库管理经验,主要负责 MySQL、PostgresSQL 和 Oracle 相关的数据库运维工作。

喜欢学习分享技术,和大家共同提高!

  • 知数堂精品课程,MySQL、SQL优化、Python、Elastic等。

    MySQL课程已全面升级到MySQL 8.0版本,现在上车刚刚好,一起开启MySQL 8.0的修行之旅吧。

    加入知数堂

    挑战50万+年薪!

    知数堂《MySQL实战优化课》已正式上线腾讯课堂,扫码入群了解课程详情吧,撩助教妹子还有优惠哟

如何优雅的打造 All-in One 仓库相关推荐

  1. (附源码)springboot超市仓库管理系统 毕业设计 164555

    摘 要 本论文主要论述了如何使用java语言开发一个springboot超市仓库管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发.在引言中,作者将 ...

  2. 内网自建yum源和apt源(含各信创系统)

    现在Linux下面软件基本是通过yum/apt等从软件仓库在线安装,大的Linux发行版都有自己的软件仓库.如CentOS/RedHat使用yum方式仓库,ubuntu使用apt方式仓库. 很多政企单 ...

  3. 卧槽!这网站也太全了吧!!!学习、设计、开发、资源下载等各类高质量网站推荐【建议收藏】

    有了这些网站,开发,设计速度提升了n倍,效率提升了,薪资自然就涨涨涨 声明: 本网址从网上搜寻而来,有的网址在使用时如出现过期情况,请反馈 欢迎有好的网站的私聊进行分享 本帖会不定期更新,建议收藏 设 ...

  4. 告别2019,写给2020:干好技术,要把握好时光里的每一步

    本文来自:长沙.NET技术社区 邹溪源 不知不觉,一晃年关将近,即将翻开2019,进入新的一页.(本文写于2019年12月27日) 这周已经在朋友圈看到了来自公众号<恰同学少年><E ...

  5. 消费新品周报 | AWE海尔推出无尘洗衣机;卡西欧F1红牛车队合作新款运动手表...

    摘要 海尔.卡萨帝.A.O.史密斯.摩摩哒.荣泰.智晶.日立.iRobot.KitchenAid.惠而浦.Kamado Joe.九阳.飞利浦 秀.泽尼特.迪士尼.李宁.Calzedonia.Intim ...

  6. Qt on Android 核心编程

    Qt on Android 核心编程(最好看的Qt编程书!CSDN博主foruok倾力奉献!) 安晓辉 著   ISBN 978-7-121-24457-5 2015年1月出版 定价:65.00元 4 ...

  7. kubernetes在腾讯游戏的应用实践

    黄惠波,腾讯互娱高级工程师 目前主要负责游戏计算资源容器化平台的研发工作,包括kubernetes/docker研究以及定制化开发,主导腾讯游戏万级容器资源调度平台的建设工作. 大家好!今天我分享的主 ...

  8. ESP-ADF入门——从play_mp3_control入门adf

    什么是ESP-ADF? ESP-ADF是乐鑫基于自家的SDK--esp-idf开发的音频开发框架 创建第一个esp-adf工程 本文主要为了方便大家对esp-adf的了解,抛弃了官方的流程.将esp- ...

  9. HUAWEI悦盒ec6108v9c 如何刷成海纳思系统(家用低功耗服务器,使用Home Assistant服务)

    环境: 1.HW悦盒ec6108v9c一套 2.16G U盘 3.格式化软件USB_format.exe 4.固件 mv100-mdmo1g-usb-flash.zip(底层是Ubuntu 20.04 ...

最新文章

  1. 如何二值图转化为灰度图_木工真空吸附雕刻机如何用精雕5.21把精雕图模型转为灰度图...
  2. Python3 学习第十一弹: 模块学习四之sys库
  3. 怎么将零件整合到一起_Fraunhofer ILT用于大型零件3D打印的“边飞行边加工”的LPBF概念...
  4. 探讨ASP.NET 2.0中的Web控件改进技术(2)
  5. php根据循环条件切换图片,根据条件循环复框,麻烦各位朋友帮小弟我看一下应该怎样改...
  6. JAVA操作数据库调试经验
  7. 写程序需要做的几件事
  8. Android系统源码学习步骤
  9. matlab画图常用符号,matlab画图特殊符号
  10. ActiveX控件注册的几种方法
  11. MySQl学习(从入门到精通 1.1)
  12. 新闻与Android相关的话题,热门话题 - 换个角度看新闻 #iOS #Android
  13. 菜鸟IT技术杂谈(一)——从多任务系统原理说起
  14. centos 8 的图形操作界面在哪_【行测备考】立体图形截面有哪些实用技法?
  15. 将你的Android平板电脑变为笔记本电脑方法
  16. 【系统分析师之路】计算机组成原理章节错题集锦
  17. HashMap底层——解决Hash冲突(链地址法)
  18. python无法写入文件夹_python write无法写入文件的解决方法
  19. 百度知道引流有哪些方法?一个互动式的疑问解答
  20. HTTP500内部服务器错误

热门文章

  1. 二维码签到技术的后端开发
  2. 数据分析-主成分分析
  3. 使用极算GPU云的三个理由!?入门深度学习,还在自己配电脑?
  4. YAESU FT-891 短波电台使用心得
  5. 抛弃AVANT用世界之窗了
  6. 中国医科大学计算机基础与应用在线作业,2017秋中国医科大学《计算机基础与应用》在线作业满分...
  7. flash cs3 pro 写了脚本说java运行环境出错,Flash CS3动作面板打开出错[Java运行时环境初始化时出现错误,你可能需要重......
  8. 智能云工厂模式普惠中小企业,千鸟互联或成纸包装产业链“带头大哥”
  9. Cocos2d-x学习之路(一)
  10. 资本押注云原生数据库,偶数完成B轮融资