热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CentOS7搭建nexus私服仓库(含k8s部署方式)

目录Nexus简介一、安装nexus1.方式一:使用压缩包安装nexus1)下载安装包2)修改配置3)启动nexus4)修改密码4)将nexus添加为service

目录

Nexus简介

一、安装nexus

1. 方式一: 使用压缩包安装nexus

1) 下载安装包

2) 修改配置 

3) 启动nexus

4) 修改密码

4) 将nexus添加为service

2. 方式二: 使用Kubernetes 部署nexus

二、使用Nexus创建仓库

1、创建一个代理仓库

2、查看私服连接

3、配置pom.xml

4、配置maven的settings.xml 

5、将本地项目发布到私服。




Nexus简介

        Nexus是一款开源的仓库管理软件,我们可以借助nexus搭建一个私有的依赖(jar)仓库, 并且我们可以手动将jar 传到nexus上, 由nexus帮你生成maven坐标,管理方便。


一、安装nexus

        本文介绍2种方式安装nexus, 一种采用压缩包的方式直接执行.sh文件启动, 另一种方式采用kubernets部署nexus。


1. 方式一: 使用压缩包安装nexus


1) 下载安装包

下载 nexus安装包, 我用的是3.19.1版本:

 丢到centos服务器里后,使用命令解压

tar -zxvf nexus-3.19.1-01-unix.tar.gz

另贴上我的网盘连接,需要自取。

链接:https://pan.baidu.com/s/1bQO6dPn3LYPHO2xzY7XbOQ 
提取码:dc85 

解压到 /usr/local路径下:


2) 修改配置 

进入到nexs-3.19.1-01目录,修改~/etc/nexus-default.properties, 可指定启动的端口:

 配置好后,进入到bin目录下启动nexus

cd /usr/local/nexus-3.19.1-01/bin/


3) 启动nexus

执行命令

./nexus start 

访问: 192.168.232.129:8081, 出现如下画面说明安装成功:  


4) 修改密码

登录用户: admin,  登录默认密码存放在/usr/local/sonatype-work/nexus3/admin.password 路径,登录成功后,需要提醒你修改密码:

 修改成功后,会进入到首页:

同样也可以执行 ./nexus stop 命令停止 nexus server。 


4) 将nexus添加为service

安装成功后,接着可以设置开机自启 nexus, 在路径/etc/rc.d/init.d添加文件nexusd, 直接使用如下命令:

vim /etc/rc.d/init.d/nexusd

编写shell脚本配置如下,

注: 开头的chkconfig, description都要有,要不然会出现不支持chk的报错!

#!/bin/bash
#chkconfig:345 61 61
#description:nexus
. /etc/rc.d/init.d/functions
. /etc/sysconfig/network
[ "$NETWORKING" = "no" ] && exit 0
nexus=/usr/local/nexus-3.19.1-01
startup=/usr/local/nexus-3.19.1-01/bin/nexus
shutdown=/usr/local/nexus-3.19.1-01/bin/nexus
start(){
echo -n $"Starting nexus service:"
sh $startup start
echo $?
}
stop(){
echo -n $"Stoping nexus service:"
sh $shutdown stop
echo $?
}
restart(){
stop
start
}
status(){
ps -ef|grep nexus
}
if "$1" in
(start|stop|restart|status)
then echo $1
elseecho "not support operation!"
fi

保存退出后,加载并启用nexusd, 由chkconfig去加载

chkconfig -add nexusd
chkconfig nexusd on

如果修改nexusd文件,需要重新刷新配置,执行如下命令即可:

systemctl daemon-reload

启动nexus:

systemctl start nexusd

 

停止nexus:

systemctl stop nexusd

还可以重启:

systemctl restart nexusd

 查看nexus的服务状态:

 启动成功! 访问 http://192.168.232.129:8081 ,如果能出现nexus首页,表明nexus启动成功!

        这样配置完后,重新启动机器,nexus仓库可以自启。 


2. 方式二: 使用Kubernetes 部署nexus

        编写nexus-persisit.yaml文件放在centos 系统指定路径: /root/kubernetes/config/nexus下

apiVersion: v1
kind: PersistentVolume
metadata:name: nexus-data
spec:capacity:storage: 3GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: nexus-nfscinder:volumeID: a198bce4-ba0f-7e13-8f0c-55e3126-nexus # 改路径为映射到本机的 /var/lib/kubelet/plugins/kubernetes.io/cinder/mountsfsType: ext4
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: nexus-data-pvc
spec:accessModes:- ReadWriteOncevolumeMode: Filesystemresources:requests:storage: 3GistorageClassName: nexus-nfs
---
apiVersion: apps/v1
kind: Deployment
metadata:name: nexus-deployment
spec:replicas: 1selector:matchLabels:app: nexustemplate:metadata:labels:app: nexusspec:containers:- name: nexusimage: sonatype/nexus3imagePullPolicy: IfNotPresentports:- containerPort: 8081- containerPort: 8082- containerPort: 8083volumeMounts:- mountPath: /nexus-dataname: nexus-datavolumes:- name: nexus-datapersistentVolumeClaim:claimName: nexus-data-pvc
---
apiVersion: v1
kind: Service
metadata:name: nexus-svc
spec:selector:app: nexustype: NodePortports:- name: webprotocol: TCPport: 8081targetPort: 8081nodePort: 30081- name: dockerprotocol: TCPport: 8082targetPort: 8082nodePort: 30082- name: mavenprotocol: TCPport: 8083targetPort: 8083nodePort: 30083

        执行命令 kubectl apply  -f  nexus-persist.yaml, 执行成功后,查看pod。

        查看service:  

         访问: http://192.168.31.129:30081/, 能进入首页表示搭建成功。

        注意: 挂载数据时,kubernetes为会pv提供一个存储路径volumeID, 然后会在

 /var/lib/kubelet/plugins/kubernetes.io/cinder/mounts 路径下去寻找该volumeID, 如果不存在那么需要手动创建并授权给目录读写权限。

        如果没有cinder指定的目录,那么会出现mount failed的报错问题。


二、使用Nexus创建仓库

         进入到首页后,我们可以在Repositories下看到4个主要的默认仓库:  maven-central、maven-public、maven-releases、maven-snapshots。 


  • maven-central:核心中央仓库,是nexus的最重要的仓库。
  • maven-public:公共仓库,所有仓库。
  • maven-releases:存放jar的release仓库。
  • maven-snapshots:保存快照的仓库。

        平时我们用的比较多阿里云镜像,如果我们本地没有一些jar, 也不想手动一个一个的把镜像上传到nexus仓库,那我们可以先把阿里云仓库作为一个代理仓库,就是说先从阿里云的仓库中将需要的镜像pull 到nexus上,然后本地仓库根据需要再向nexus拉取。


1、创建一个代理仓库

        点击create repositories---> maven2(proxy)

         阿里云仓库地址:  https://maven.aliyun.com/repository/public

         可以添加用户名和密码进行认证,根据需要设置: 

         最关键的一步: 将刚创建的 proxy仓库加入到 maven-public仓库中:


2、查看私服连接

        上面的操作是为了后面的使用做准备,我们可以将私服的地址配置到自己的project里了, 下面是我们的仓库的镜像地址:


http://192.168.232.129:8081/repository/maven-public/

        接着我们只需要将该地址配置到maven里就可以访问了。


3、配置pom.xml

        将url配置到pom里,父标签为Project标签

nexushttp://192.168.232.129:8081/repository/maven-public/

        插件仓库的配置可暂时使用阿里云:

centralhttps://maven.aliyun.com/repository/public


4、配置maven的settings.xml 

        在settings.xml添加mirror:


F:/local-repo

nexus admin

nexus847652.
Snapshots admin

nexus847652.

Releases admin

nexus847652.

dev nexus http://192.168.31.129:30081/repository/maven-public/ true true

centralpublic pluginhttps://maven.aliyun.com/nexus/content/groups/public/defaulttruefalse
dev

        1. 如果在idea里的终端里执行的mvn命令,那么idea会默认读取到用户文件夹里.m2/里面的settings.xml。

        2. 如果在coonfigurations里面配置的mvn命令,那么会适应自己maven工具所在的config目录里的settings.xml。

        进入项目,刷新maven依赖,刷新页面,在终端执行mvn clean isntall 会发现已经开始下载依赖了:

下载完成后,项目中会出现jar, 如上图,我们也可以从nexus里的Browse面板里查看依赖占内存,jar的路径等。

 另外在更新maven依赖的时候可以到nexus仓库中看到已经缓存到里面的jar包:

至此nexus 私服搭建流程结束。 


5、将本地项目发布到私服。

        在项目的pom.xml文件里project标签下添加distributionManagement属性,设置好仓库后,执行mvn clean package deploy命令。

        pom.xml 文件如下,需要添加maven-deploy-plugin和maven-release-plugin两个插件。

4.0.0

org.springframework.bootspring-boot-starter-parent2.3.8.RELEASE com.bingbing.shhire-management-user-service0.0.1-RELEASEhire-management-user-serviceDemo project for Spring Boot

112.2.1.RELEASE

pomorg.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-devtoolsruntimetrueorg.springframework.bootspring-boot-starter-testtestmysqlmysql-connector-javacom.alibabadruid1.1.18org.springframework.bootspring-boot-starter-data-jdbcorg.springframework.bootspring-boot-configuration-processortrueuser-servicecom.alibaba.cloudspring-cloud-alibaba-dependencies${spring.cloud.alibaba.version}pomimport

org.springframework.bootspring-boot-maven-plugin

maven-compiler-plugin3.8.1${java.version}${java.version}

org.apache.maven.pluginsmaven-surefire-plugin2.22.2true

org.apache.maven.pluginsmaven-release-plugin2.4.1

org.apache.maven.pluginsmaven-deploy-plugin2.7

centralhttps://maven.aliyun.com/repository/publicmaven-releaseshttp://192.168.31.129:30081/repository/maven-releases/maven-snapshotsInternal Snapshotshttp://192.168.31.129:30081/repository/snapshots/

        这样配置完后,需要在maven的settings.xml里加一个server配置, 其中id对应pom.xml文件里的id, pom.xml文件里的repository的id与nexus私服仓库里的id保持一致,比如我的nexus的release仓库叫maven-releases,那么id 都要用maven-releases。

maven-snapshots admin

nexus847652.

maven-releases admin

nexus847652.

 发布成功后,进入到release仓库和public仓库都可以看到刚发布的服务:

        再次执行同样的命令,idea报错:

Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project user-service: Failed to deploy artifacts: Could not transfer artifact com.bingbing.sh:user-service:jar:0.0.1-RELEASE from/to maven-releases (http://192.168.31.129:30081/repository/maven-releases/): Failed to transfer file: http://192.168.31.129:30081/repository/maven-releases/com/bingbing/sh/user-service/0.0.1-RELEASE/user-service-0.0.1-RELEASE.jar. Return code is: 400, ReasonPhrase: Repository does not allow updating assets: maven-releases.

        我们只需要进入nexus,重新设置repositry的deployment policy 为allow redeploy即可:


推荐阅读
  • 安装oracle软件1创建用户组、用户和目录bjdb节点下:[rootnode1]#groupadd-g200oinstall[rootnode1]#groupad ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • Linux下安装免费杀毒软件ClamAV及使用方法
    本文介绍了在Linux系统下安装免费杀毒软件ClamAV的方法,并提供了使用该软件更新病毒库和进行病毒扫描的指令参数。同时还提供了官方安装文档和下载地址。 ... [详细]
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • Jboss的EJB部署描述符standardjaws.xml配置步骤详解
    本文详细介绍了Jboss的EJB部署描述符standardjaws.xml的配置步骤,包括映射CMP实体EJB、数据源连接池的获取以及数据库配置等内容。 ... [详细]
  • 【重识云原生】第四章云网络4.8.3.2节——Open vSwitch工作原理详解
    2OpenvSwitch架构2.1OVS整体架构ovs-vswitchd:守护程序,实现交换功能,和Linux内核兼容模块一起,实现基于流的交换flow-basedswitchin ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
author-avatar
1403390367_f5c8a8
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有