Nexus - 镜像仓库安装

文档

环境准备

官方需要CentOS 7.0以上,测试6.9可正常运行

# 更新
$ sudo yum update

# 安装java 1.8
$ sudo yum install java-1.8.0-openjdk.x86_64
$ java -version

下载安装

# create & enter directory
$ cd /opt

# download
$ sudo curl -O https://sonatype-download.global.ssl.fastly.net/nexus/3/nexus-3.3.1-01-unix.tar.gz

# unzip
$ sudo tar -xzvf nexus-3.3.1-01-unix.tar.gz

# create symbolic link
$ sudo ln -s nexus-3.3.1-01 nexus

# create nexus user
$ sudo useradd nexus

# chown
$ sudo chown -R nexus:nexus /opt/nexus
$ sudo chown -R nexus:nexus /opt/sonatype-work/

# remove commit & add user "nexus"
$ sudo vi /opt/nexus/bin/nexus.rc
run_as_user="nexus"

开机启动

#  Create a symbolic link for nexus service script to /etc/init.d folder
$ sudo ln -s /opt/nexus/bin/nexus /etc/init.d/nexus

# Execute the following commands to add nexus service to boot.开机自启动
$ sudo chkconfig --add nexus
$ sudo chkconfig --levels 345 nexus on

# start(default: 8081 port)
$ sudo service nexus start

# stop
$ sudo service nexus stop

# restart
$ sudo service nexus restart

log文件

cd /opt/sonatype-work/nexus3/log

登陆启动

# visit website
ip:8081

# login
User Name: admin
Password: admin123

创建npm镜像仓库

依照顺序,逐一添加host,proxy,group

权限管理

  • 添加realms

    内部镜像发包需要使用到

  • 配置账户

  • 配置不同人员权限:

    • 内网匿名,普通用户给予除host仓库edit外的所有权限(不包括delete)
    • 发布人员比普通用户增加host的edit权限

使用

  • registry注意事项:

    • 下载需要使用group地址
    • publish需要使用host地址
  • publish注意事项:

    两种方式,一种是Authentication Using Basic Auth,另外一种是Authentication Using Realm and Login

    • Authentication Using Realm and Login
    • 服务端激活*npm Bearer Token Realm*
    • 客户端命令行使用npm login登陆用户,根据提示输如user,password,email

      npm login --registry=http://localhost:8081/repository/npm-internal
    • Authentication Using Basic Auth

    将账号密码转为base64,通过npm config设置:

    $ echo -n 'admin:admin123' | openssl base64
    Out Log:YWRtaW46YWRtaW4xMjM=
    
    $ npm config set _auth=YWRtaW46YWRtaW4xMjM=

    另,给一个node方案:

    # key,value转base64
    > var a = new Buffer('key1=value1&key2=value2').toString('base64');
    undefined
    > a
    'a2V5MT12YWx1ZTEma2V5Mj12YWx1ZTI='
    
    # base64转String
    > new Buffer(a, 'base64').toString()
    'key1=value1&key2=value2'

后续

  • 发布权限管理

    Nexus OSS不支持,需要单独通过写个命令行工具来控制

安装遇到的问题

  • 仓库安装版本与官方提供教程不一致

    3.x与3.0目录不一,配置不同,见参考链接

  • 防火墙关闭,外网访问不到端口

    $ sudo firewall-cmd --zone=public --permanent --add-port=8081/tcp
    $ sudo firewall-cmd --reload 
  • 镜像连接timeout,设置淘宝镜像,下载时报错

    临时改为npm官方镜像,待查明原因:

  • shell中获取_auth报错

    npm做了保护,报错信息:

    error ---sekretz---

    通过npm config get userconfig获取配置文件读取到需要的_auth内容

  • publish报错

    Unable to publish to an NPM Registry (local)

  • 2.x版本不支持下载@类似私有仓库的包

    nexus OSS 2.x不支持@包,需要升级到3.x

REST

nexus提供了restful接口供使用。接口列表,可通过hostname//swagger-ui/查看列表。

提供的端口形式如下:

[ base url: /service/siesta/ , api version: 3.3.1-01 ]
/rest/v1/assets
可通过以下形式获取:
curl -X GET --header 'Accept: application/json' 'https://ynpm.yonyoucloud.com/service/siesta/rest/v1/assets?repositoryId=ynpm-host'

同时可以自定义script接口,官方文档在这里:[REST and Integration API](https://books.sonatype.com/nexus-book/3.3/reference/scripting.html#scripting-introduction

官方demo在这个仓库

官方有篇博客

相关链接

@2017-12-12 15:52