一、实验背景
在生产环境中,我们不可能所有的服务器都能连接外网更新rpm包,比较理想的环境是:有一台Linux服务器可以连接外网,剩余的服务器通过这台yum服务器更新。
传统的做法是先把包下载到内网中的yum服务器上,然后通过createrepo命令生成本地仓库,其余服务器通过HTTP/FTP访问这个链接,这种做法比较费时费事。有没有一种比较好的方式,让我们直接通过这台服务器代理连接到公网的163、阿里云yum仓库呢?
这就是本次介绍的Nexus代理,无论你的客户机是CentOS6还是CentOS7又或者是Ubuntu,不论你是想用yum还是pip又或者是npm包管理器,Nexus都能满足你的需求。
你只需要将nexus放到能连外网的服务器上,通过nexus暴露服务就可以了。
二、实验环境
操作系统:CentOS7.5 Minimal
nexusServer: 192.168.1.107
yumClient:192.168.1.103
三、安装nexus,创建yum私有仓库
在nexusServer服务器
关闭selinux
# setenforce 0
# sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
安装docker
# yum -y install yum-utils device-mapper-persistent-data lvm2
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# yum list docker-ce --showduplicates | sort -r
# yum -y install docker-ce-18.06.0.ce
# systemctl start docker
# systemctl status docker
# systemctl enable docker
# docker version
拉取镜像,运行nexus服务
在nexusServer 服务器
# docker pull sonatype/nexus3:3.16.0
# docker images
# mkdir /opt/nexus-data
# chown -R 200 /opt/nexus-data
注:容器中nexus的默认运行用户是nexus,uid和gid为200
用命令行形式运行nexus容器
# docker run -d \
--name nexus \
--ulimit nofile=65536:65536 \
-p 192.168.1.106:8081:8081 \
-v /opt/nexus-data:/nexus-data \
sonatype/nexus3:3.16.0
# docker logs -f nexus
# docker ps -a
# ss -tan
浏览器访问: http:192.168.1.107:8081
默认登录用户名密码:admin/admin123
创建yum私有仓库
yum私服有三种类:
创建blob存储,为其创建一个单独的存储空间,命名为yum
创建hosted类型的yum库
Name::定义一个名称yumDev
Storage:Blob store,我们下拉选择前面创建好的专用blob:yum。
Hosted:开发环境,我们运行重复发布,因此Delpoyment policy 我们选择Allow redeploy
创建一个proxy类型的yum仓库
Name: yumProxy
Proxy:Remote Storage: 远程仓库地址,写: http://mirrors.163.com/centos
Storage: yum
其他设置,使用均是默认。
这里就先创建一个代理163的仓库,其实还可以多创建几个,诸如阿里云,搜狐等等,这个根据个人需求来定义。
创建一个group类型的yum仓库
Name:yumGroup
Storage:选择专用的blob存储yum
group : 将左边可选的2个仓库,添加到右边的members
可以创建多个prxoy类型的yum仓库,通过同一个group暴露给客户端使用
构建yum缓存
新建一台环境干净的主机,此时需要保证这台主机能够上网,因为私服当中还没有进行初始化。
先简单配置一下,将yum源指向到私服中来。
# cd /etc/yum.repos.d
# mkdir repoBackup
# mv *.repo repoBackup
# vim nexus.repo
####################################################################
[nexus]
name=Nexus Yum Repository
baseurl=http://192.168.1.107:8081/repository/yumGroup/$releasever/os/$basearch/
enabled=1
gpgcheck=0
#######################################################################
# yum clean all
# yum makecache
现在,我们可以从页面上看缓存包了
服务端启动方式改进,将nexus注册成系统服务
编写unit文件
# vim /etc/systemd/system/nexus.service
####################################################
[Unit]
Description=Nexus
Documentation=https://www.sonatype.com
After=network-online.target firewalld.service docker.service
Requires=docker.service
[Service]
ExecStartPre=-/usr/bin/docker rm -f nexus
ExecStart=/usr/bin/docker run \
--name nexus \
--ulimit nofile=65536:65536 \
-p 192.168.1.107:8081:8081 \
-v /opt/nexus-data:/nexus-data \
sonatype/nexus3:3.16.0
ExecStop=/usr/bin/docker stop nexus
LimitNOFILE=65535
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
#####################################################
停止和删除命令行启动的nexus服务
# docker stop nexus
# docker rm nexus
用systemd启动服务
# systemctl daemon-reload
# systemctl start nexus
# systemctl enable nexus
# systemctl status nexus
# docker logs -f nexus
四、测试nexus的yum私服
在yumClient服务器
用一台不能上网但是可以与刚刚私服通信的主机,将其yum源指向的配置好的私服,或者是将其他的源都切断,然后yum源仅仅指向私服,看看安装是否顺利。
# cd /etc/yum.repos.d
# mkdir repoBackup
# mv *.repo repoBackup
# vim nexus.repo
####################################################################
[nexus]
name=Nexus Yum Repository
baseurl=http://192.168.1.107:8081/repository/yumGroup//$releasever/os/$basearch/
enabled=1
gpgcheck=0
#######################################################################
# yum clean all
# yumrepolist
# yum -y install httpd
五、参考
nexus3搭建yum源
https://blog.51cto.com/daibaiyang119/2116205
http://limingming.org/index.php/2018/12/nexus3-yum-repo
企业级开源仓库nexus3实战应用
http://www.eryajf.net/category/%E6%9C%AF%E4%B8%9A%E4%B8%93%E6%94%BB/%E6%9C%8D%E5%8A%A1%E7%B1%BB%E7%9B%B8%E5%85%B3/nexus
Nexus OSS配置yum代理
https://qgdlsj.com/nexus-oss-yum-proxy
Nexus Repository Manager 3.5: Yum Proxy Support Now Available
https://blog.sonatype.com/nexus-repository-manager-3.5
Nexus System Requirements
https://help.sonatype.com/repomanager3/system-requirements
国内yum源列表记录
http://limingming.org/index.php/2018/12/yum-repo-china
用nexus3.x 官方镜像搭建docker私有镜像仓库
https://www.jianshu.com/p/86e573f18df3