Linux Nexus OSS 2.xx 教程(转载)

 
 

本文资料来源:Nexus Documentation - Nexus Repository Manager 2.14

一、Nexus的下载和部署

1、Nexus下载

官方下载地址:Download Nexus Repository OSS

注意选择Nexus2.xx版本,本教程是基于Nexus2.xx。 
如需要Nexus3.xx教程请移步:Maven Nexus OSS 3.xx 教程

2、Nexus部署和配置

配置JDK

参考:JDK配置教程

如果上面教程看不明白可以谷歌或者百度一下、类似有很多 
入门教程不做详细讲解

配置简介

解压后有两个目录:

nexus-2.14.1-01:nexus服务主目录(真正的nexus项目) 
sonatype-work:nexus工作空间(定时任务、用户配置、下载资源)

nexus-2.14.1-01/bin/jsw/conf/wrapper.conf 是基础参数配置、 
例如:指定java执行命令、jvm参数添加、日志级别和文件等其他配置、下面是示例

set.JAVA_HOME=/opt/jdk1.8.0_111/
wrapper.java.command=%JAVA_HOME%/bin/java
wrapper.java.maxmemory=2000

nexus-2.14.1-01/conf/目录下是nexus服务参数配置 
nexus-2.14.1-01/conf/nexus.properties中可以配置ContextPath和端口号 
例如:jetty服务配置、logback日志配置、ContextPath和端口号配置等

Windows环境

进入nexus-2.14.1-01/bin目录下、nexus支持命令如下、 
Usage: nexus { console : start : stop : restart : install : uninstall }

console:控制台启动(退出脚本停止运行) 
start:服务启动(后台运行) 
stop:服务停止(停下后台进程) 
restart:重启服务 
install:安装服务 
uninstall:卸载服务

Linux环境

进入nexus-2.14.1-01/bin目录下、nexus支持命令如下、 
Usage: ./nexus { console | start | stop | restart | status | dump } 
console:控制台启动(退出脚本停止运行) 
start:服务启动(后台运行) 
stop:服务停止(停下后台进程) 
restart:重启服务 
status:输出运行状态(主要是PID)

dump:做了一步正常停止进程的操作、博主也不清楚有啥用 
希望谁知道评论留言、博主会及时更正、 
下面是脚本内容:

dump() {
    echo "Dumping $APP_LONG_NAME..."
    getpid
    if [ "X$pid" = "X" ]
    then
        echo "$APP_LONG_NAME was not running."

    else
        kill -3 $pid

        if [ $? -ne 0 ]
        then
            echo "Failed to dump $APP_LONG_NAME."
            exit 1
        else
            echo "Dumped $APP_LONG_NAME."
        fi
    fi
}

 

Linux配置服务方式

官方提供方法(文档地址):

  1. 创建nexus用户用来运行服务

  2. 复制$NEXUS_HOME/bin/nexus/etc/init.d/nexus

  3. 修改/etc/init.d/nexus权限和所属用户为root

    chmod 755 /etc/init.d/nexus
    chown root /etc/init.d/nexus
  4. 编辑脚本

    1. NEXUS_HOME为真实nexus的绝对路径、
    2. 设置RUN_AS_USER为nexus
    3. 修改PIDDIR到一个nexus有读写权限的用户、大多数linux系统/var/run只有root用户有权限、配置位置wrapper.pidfile、更多wrapper.conf配置请参考官方文档
    4. 修改sonatype-work包括子目录所属nexus用户和其用户组
    5. 配置Java环境变量
  5. 添加服务和自启动

    chkconfig --add nexus
    chkconfig --level 345 nexus on

基于官方方法优化:

  1. 创建nexus用户用来运行服务

  2. 创建软连接$NEXUS_HOME/bin/nexus/etc/init.d/nexus

    ln -s $NEXUS_HOME/bin/nexus /etc/init.d/nexus
    • 1
  3. 修改/etc/init.d/nexus权限和所属用户为root

    chmod 755 /etc/init.d/nexus
    chown root /etc/init.d/nexus
  1. 编辑脚本

    1. 设置RUN_AS_USER为nexus
    2. 修改PIDDIR到一个nexus有读写权限的用户、大多数linux系统/var/run只有root用户有权限、配置位置wrapper.pidfile、更多wrapper.conf配置请参考官方文档
    3. 修改sonatype-work包括子目录所属nexus用户和其用户组
    4. 配置Java环境变量
  2. 添加服务和自启动

    chkconfig --add nexus
    chkconfig --level 345 nexus on

主要优化了复制脚本这一步、本人用的没啥问题、如果这样做有问题欢迎小伙伴指出

二、Nexus的配置和使用

1、整体介绍

启动nexus服务后、打开首页(http://localhost:8081/nexus) 
Nexus服务首页

点开查看仓库、默认已经配置了一些仓库 
Nexus默认仓库

仓库简介

  1. Public Repositories:仓库组
  2. 3rd party:一般自己上传无法从公共仓库获得的第三方发布版本的依赖包、例如oracle的ojdbc等、
  3. Apache Snapshots:用了代理ApacheMaven仓库快照版本的构件仓库、一般不使用
  4. Central:用来代理maven中央仓库中发布版本构件的仓库
  5. Central M1 shadow:用于提供中央仓库中M1格式的发布版本的构件镜像仓库
  6. Releases:用来部署管理内部的发布版本构件的宿主类型仓库
  7. Snapshots:用来部署管理内部的快照版本构件的宿主类型仓库

仓库类型

  1. group:仓库组、仓库组的意思是将多个仓库整合、Public Repositories默认整合了4个仓库Releases、Snapshots、3rd party和Central、功能上展现就是在Releases中找你的依赖包、找到就不往下找了、找不到就到Snapshots中找、依此类推、
  2. hosted:宿主、宿主简单的说就是自己的仓库、自己的包、自己上次、自己管理
  3. proxy:代理、代理仓库是模拟某个远程仓库、使用时先将远程仓库的依赖包下载到nexus服务器、然后在通过nexus服务器下载到本地库、众所周知maven中央库速度很慢、公司开发团队通过这个方式就可以很好的节约带宽
  4. virtual:虚拟、我也不知道有什么用、到目前为止我都没用过

仓库策略

在使用maven过程中、我们在开发阶段经常性的会有很多公共库处于不稳定状态、随时需要修改并发布、可能一天就要发布一次、遇到bug时、甚至一天要发布N次、我们知道、maven的依赖管理是基于版本管理的、对于发布状态的artifact、如果版本号相同、即使我们内部的镜像服务器上的组件比本地新、maven也不会主动下载的、如果我们在开发阶段都是基于正式发布版本来做依赖管理、那么遇到这个问题、就需要升级组件的版本号、可这样就明显不符合要求和实际情况了、但是、如果是基于快照版本、那么问题就自热而然的解决了、而maven已经为我们准备好了这一切、 
maven中的仓库策略分为两种、snapshot快照仓库和release发布仓库、snapshot快照仓库用于保存开发过程中的不稳定版本、release正式仓库则是用来保存稳定的发行版本、定义一个组件/模块为快照版本、只需要在pom文件中在该模块的版本号后加上-SNAPSHOT即可(注意这里必须是大写)、如下:

<groupId>com.accelerator</groupId>
<artifactId>demo</artifactId>
<version>0.1-SNAPSHOT</version>
<packaging>jar</packaging>

maven2会根据模块的版本号(pom文件中的version)中是否带有-SNAPSHOT来判断是快照版本还是正式版本、如果是快照版本、那么在mvn deploy时会自动发布到快照版本库中、而使用快照版本的模块、在不更改版本号的情况下、直接编译打包时、maven会自动从镜像服务器上下载最新的快照版本、如果是正式发布版本、那么在mvn deploy时会自动发布到正式版本库中、而使用正式版本的模块、在不更改版本号的情况下、编译打包时如果本地已经存在该版本的模块则不会主动去镜像服务器上下载、

2、配置说明

感觉这个还真没啥说明的、简单说说~首先以管理员身份登录、默认用户名/密码(admin/admin123)、可以改、登录成功后、多了一些菜单和功能、有些配置我从来没用过、感觉实际生产中也应该用不着、 
这里就只介绍简单的仓库配置、

仓库组配置

仓库组配置 
点开仓库组、可以看到登录后有了configuration选项卡、这里看看就明白了吧~ 
左边整合的仓库排序、右边可以使用的仓库、 
Group ID:仓库唯一ID 
Group Name:仓库名称 
Provider:适配仓库格式 
Format:是根据上面来的 
Publish URL:就当时开启仓库组的开关吧

宿主仓库配置

宿主仓库配置 
已经说过的就不重复了、这里说一下没说过的几个配置 
Repository Policy:这个就是仓库策略、可以看前面、说的很清楚 
Default Local Storage Location:默认依赖包存放位置 
Override Local Storage Location:重写依赖包存放位置 
Deployment Policy:发布策略、是否允许重新发布、只读、作用可以联想一下Repository Policy配置 
Allow File Browsing:是否允许浏览器中以文件管理方式浏览 
Include in Search:包含在搜索中 
Not Found Cache TTL:当包找不到的时候、多久再次查找

代理仓库配置

代理仓库配置 
同样、已经说过的配置就不重复了、 
Remote Storage Location:远程下载地址、代理仓库、总要有代理仓库地址 
其他设置也是差不多、看看英文大概就知道什么意思、就不一一列举了

posted on 2018-02-12 17:32  Java4Life  阅读(202)  评论(0)    收藏  举报

导航