搭建私服

本次基于docker搭建,相关技能掌握见 docker

部署

查找nexus镜像

docker search nexus

拉取nexus3镜像

docker pull sonatype/nexus3

查看镜像

docker images

建立数据目录,并且赋权

mkdir -p /data/nexus-data
chmod 777 /data/nexus-data

运行nexus容器

docker run -d --restart=always --privileged=true -p 7081:8081 -p 7082:8082 -p 7083:8083 -p 7084:8084  -p 7085:8085 -v /data/nexus-data:/nexus-data --name nexus sonatype/nexus3 

访问Nexus

注意:Nexus启动较慢,稍等几分钟

我们通过docker logs -f nexus3查看启动进度!

开放防火墙端口

见《linux 防火墙》

访问方式

到这里,你已经可以通过ip:port访问nexus3了

如果你想在nginx做一层代理的话,参考我下面提供的两种解决方案:

方式二:nginx代理端口

 server {
    listen       9002;
    server_name  192.168.3.88;
    charset utf-8;
    location / {
        proxy_pass http://192.168.3.88:7081;
        # 如果不加这段,主页面其他资源的路径会有问题
        # 会变成2.54:7081/static
        # 我们希望是2.54:9002/static
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    location @router {
        rewrite ^.*$ /index.html last;
    }
}

方式三:nginx代理端口,特定location转发

location /nexus3/ {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forward-For $remote_addr;
    proxy_pass http://192.168.3.88:7081;
}

测试发现,如下通过/nexus3代理不行!nexus页面可以访问,但页面加载资源时basePath会有问题(安装路径下面也找不到源码,不知道源码代码怎么写的,很奇怪,有点谜)。
我们注意到安装路径下有这份文件,里面有个参数是path配置,可能这个是解决问题的关键!

vim /data/nexus-data/etc/nexus.properties

我改成和nginx location对应之后,页面正常访问了!http://192.168.3.88:9001/nexus3

私服管理

登录

点击右上角Log In

此时网页提示我们去/nexus-data/admin.password下面获取admin的密码。

我们打开文件获取密码为2f258989-1949-43eb-89af-8078a47ed045

登录系统…

此时依照引导重置密码。(我设置成了Accessingexproperty)

设置匿名访问

默认情况下,启用匿名访问将允许未经身份验证的下载、浏览和搜索存储库内容。

可以通过编辑分配给匿名用户的角色来更改未经身份验证用户的权限。

添加管理员

新建二级管理员admin2方便管理,具体操作略。

新建publish角色

目的是方便开发者发布构件

我们接下来新增用户并其授权publish角色。

配置一个角色,使其具备查询、上传、删除等功能

MAVEN仓库管理

右侧的列表中,可以看到nexus预设的几个仓库。

我们下面逐一介绍下

其中nuget是.net用的,下文会忽略掉

1、public

类型为group,这个简单理解为仓库的集合,下面的仓库就是可以加入到这个集合的元素。它对外可以只提供一个单独的url。大部分的终端用户,只需要配置这一个单独的聚合后的url,而不用单独配置多个仓库。用户也不需要知道某个jar包具体来源于Maven 中央仓库,或者是Apache Snapshots,或者是我们自己添加的其他仓库。

这样的好处在于:如果我们要新增某个仓库(如开源中国、阿里云),客户端不需要做任何更改,只需要在nexus上将要新增的仓库加入到对外提供服务的仓库 group中就可以。

如何使用?

从列表点击进去

左边是我们配置所有仓库,右边是当前public集合包含的仓库。

通过图中四个方向按钮操作,添加\移除集合,调整优先级

最后,记得保存。

2、Releases(常用)

用于存放开发团队内部用的正式版的依赖。

默认不允许重复发布同一个版本,如需覆盖发布,设置:

3、Snapshots(常用)

用于存放开发团队内部日常构建的频率更新较快的依赖包。

4、3rd party(常用)

nexus2中有此默认仓库,Releases和Snapshots一样,类型为hosted,意思是由nexus本机管理的仓库。

该仓库用于商业化的,第三方提供的非开源的依赖仓库,如oracle jdbc driver、ding API、bmap API。

我觉得还挺实用的,不知为什么nexus3中取消了,我们现在新建下:

填写名称Maven-3rdparty,并且保存

新增完成后,维护下public,追加到 Maven-public的members中。

使用阿里云代理(重要)

Maven官方的代理访问速度太慢了,使用阿里云的Maven代理更好

http://Maven.aliyun.com/nexus/content/groups/public

新增完成后,维护下public,追加到 Maven-public的members中。
移除Maven-center,再添加,此时完成优先级排序:

NPM仓库管理

建三个仓库,第一个是淘宝镜像、第二个是公司内部组件发布库、第三个是仓库组。

代理仓库(淘宝镜像)

配置页面无特殊配置,第一个淘宝镜像配置下URL即可

公司内部组件发布库

配置页面无特殊配置,填写个名字即可。

仓库组

配置页面无特殊配置,添加上面两个库即可。

配置匿名访问(重要!)

避免终端401等问题,做如下配置:


转载请注明来源。 欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。 可以在下面评论区评论,也可以邮件至 sharlot2050@foxmail.com。

文章标题:搭建私服

字数:1.4k

本文作者:夏来风

发布时间:2019-06-25, 22:08:36

原始链接:http://www.demo1024.com/blog/nexus3-install/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。