如何优雅的打造 All-in One 仓库
做过大型项目的同学一定都搞过自定义 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 源![](/assets/blank.gif)
下载下来,定晴一看,怎么是个 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 仓库相关推荐
- (附源码)springboot超市仓库管理系统 毕业设计 164555
摘 要 本论文主要论述了如何使用java语言开发一个springboot超市仓库管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发.在引言中,作者将 ...
- 内网自建yum源和apt源(含各信创系统)
现在Linux下面软件基本是通过yum/apt等从软件仓库在线安装,大的Linux发行版都有自己的软件仓库.如CentOS/RedHat使用yum方式仓库,ubuntu使用apt方式仓库. 很多政企单 ...
- 卧槽!这网站也太全了吧!!!学习、设计、开发、资源下载等各类高质量网站推荐【建议收藏】
有了这些网站,开发,设计速度提升了n倍,效率提升了,薪资自然就涨涨涨 声明: 本网址从网上搜寻而来,有的网址在使用时如出现过期情况,请反馈 欢迎有好的网站的私聊进行分享 本帖会不定期更新,建议收藏 设 ...
- 告别2019,写给2020:干好技术,要把握好时光里的每一步
本文来自:长沙.NET技术社区 邹溪源 不知不觉,一晃年关将近,即将翻开2019,进入新的一页.(本文写于2019年12月27日) 这周已经在朋友圈看到了来自公众号<恰同学少年><E ...
- 消费新品周报 | AWE海尔推出无尘洗衣机;卡西欧F1红牛车队合作新款运动手表...
摘要 海尔.卡萨帝.A.O.史密斯.摩摩哒.荣泰.智晶.日立.iRobot.KitchenAid.惠而浦.Kamado Joe.九阳.飞利浦 秀.泽尼特.迪士尼.李宁.Calzedonia.Intim ...
- Qt on Android 核心编程
Qt on Android 核心编程(最好看的Qt编程书!CSDN博主foruok倾力奉献!) 安晓辉 著 ISBN 978-7-121-24457-5 2015年1月出版 定价:65.00元 4 ...
- kubernetes在腾讯游戏的应用实践
黄惠波,腾讯互娱高级工程师 目前主要负责游戏计算资源容器化平台的研发工作,包括kubernetes/docker研究以及定制化开发,主导腾讯游戏万级容器资源调度平台的建设工作. 大家好!今天我分享的主 ...
- ESP-ADF入门——从play_mp3_control入门adf
什么是ESP-ADF? ESP-ADF是乐鑫基于自家的SDK--esp-idf开发的音频开发框架 创建第一个esp-adf工程 本文主要为了方便大家对esp-adf的了解,抛弃了官方的流程.将esp- ...
- HUAWEI悦盒ec6108v9c 如何刷成海纳思系统(家用低功耗服务器,使用Home Assistant服务)
环境: 1.HW悦盒ec6108v9c一套 2.16G U盘 3.格式化软件USB_format.exe 4.固件 mv100-mdmo1g-usb-flash.zip(底层是Ubuntu 20.04 ...
最新文章
- 如何二值图转化为灰度图_木工真空吸附雕刻机如何用精雕5.21把精雕图模型转为灰度图...
- Python3 学习第十一弹: 模块学习四之sys库
- 怎么将零件整合到一起_Fraunhofer ILT用于大型零件3D打印的“边飞行边加工”的LPBF概念...
- 探讨ASP.NET 2.0中的Web控件改进技术(2)
- php根据循环条件切换图片,根据条件循环复框,麻烦各位朋友帮小弟我看一下应该怎样改...
- JAVA操作数据库调试经验
- 写程序需要做的几件事
- Android系统源码学习步骤
- matlab画图常用符号,matlab画图特殊符号
- ActiveX控件注册的几种方法
- MySQl学习(从入门到精通 1.1)
- 新闻与Android相关的话题,热门话题 - 换个角度看新闻 #iOS #Android
- 菜鸟IT技术杂谈(一)——从多任务系统原理说起
- centos 8 的图形操作界面在哪_【行测备考】立体图形截面有哪些实用技法?
- 将你的Android平板电脑变为笔记本电脑方法
- 【系统分析师之路】计算机组成原理章节错题集锦
- HashMap底层——解决Hash冲突(链地址法)
- python无法写入文件夹_python write无法写入文件的解决方法
- 百度知道引流有哪些方法?一个互动式的疑问解答
- HTTP500内部服务器错误
热门文章
- 二维码签到技术的后端开发
- 数据分析-主成分分析
- 使用极算GPU云的三个理由!?入门深度学习,还在自己配电脑?
- YAESU FT-891 短波电台使用心得
- 抛弃AVANT用世界之窗了
- 中国医科大学计算机基础与应用在线作业,2017秋中国医科大学《计算机基础与应用》在线作业满分...
- flash cs3 pro 写了脚本说java运行环境出错,Flash CS3动作面板打开出错[Java运行时环境初始化时出现错误,你可能需要重......
- 智能云工厂模式普惠中小企业,千鸟互联或成纸包装产业链“带头大哥”
- Cocos2d-x学习之路(一)
- 资本押注云原生数据库,偶数完成B轮融资