Nexus入门

1:简介

1:什么是Nexus
Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。
利用Nexus你可以只在一个地方就能够完全控制访问 和部署在你所维护仓库中的每个Artifact。
Nexus是一套“开箱即用”的系统不需要数据库,它使用文件系统加Lucene来组织数据。
Nexus 使用ExtJS来开发界面,利用Restlet来提供完整的REST APIs,通过m2eclipse与Eclipse集成使用。
Nexus支持WebDAV与LDAP安全身份认证

2:它适用于什么场景
	2.1:当java构建拉取网上包时时间过长
	2.2:当你部署一个容器镜像仓库时
	2.3:当你的系统(如CentOS/RedHat/Debian)安装软件包需要配置加速时
	---
# 这本是一家做付费软件的公司,但是他们的免费版本的工具已经完全满足当下的要求
3:官网:https://help.sonatype.com/docs

2:环境简介

服务器 IP 配置 软件包
Agent 10.0.0.17 1C1G python3 pip3
Nexus3 10.0.0.16 2C4G Docker Nginx

3:部署Nexus

1:部署docker
[root@agent ~]# yum install -y docker-ce
[root@agent ~]# systemctl enable docker --now
[root@nexus3 ~]# cat << eof>>/etc/docker/daemon.json 
{
  "registry-mirrors": ["https://6ze43vnb.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
eof
[root@nexus3 ~]# systemctl daemon-reload && systemctl reestart docker

2:拉取Nexus镜像
[root@nexus3 ~]# docker pull sonatype/nexus3

3:启动Nexus
[root@nexus3 ~]# docker volume create nexus  #创建Nexus的存储(数据持久化)
nexus
[root@nexus3 ~]# docker run -d --name nexus3 --restart=always -v /etc/localtime:/etc/localtime -v nexus:/nexus-data -p 127.0.0.1:8081:8081 sonatype/nexus3:latest #可以根据hub.docker.com上搜索这个包,有更详细的操作
7960dcb8aee894a32f76e42765c57499bf94dc8cc68a081c9f8d8bfd1f55a8f2
# 这里映射127.0.0.1的地址到容器内,但是只能通过nginx反向代理才可以访问到,虽说安全但是如果nginx出故障,无法即使处理此问题的话就无法临时切换地址了,所以我这里并没有使用127.0.0.1来映射

4:部署Nginx
[root@nexus3 ~]# yum install -y nginx

5:配置Nginx SSL反向代理nexus
[root@nexus3 nginx]# cat /etc/nginx/nginx.conf  #此配置为住配置
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
    worker_connections 1024;
}
http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    server_tokens	off;
    types_hash_max_size 4096;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
    include /etc/nginx/conf.d/*.conf;
}

[root@nexus3 ssl]# cat << eof>> /etc/nginx/conf.d/nexus.conf 
[root@nexus3 ssl]# cat /etc/nginx/conf.d/nexus.conf 
upstream nexus {
    server 127.0.0.1:8081;
}

server {
    listen 80;
    server_name  nexus.kubernetes-devops.cn;

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_redirect off;
        proxy_pass http://nexus;
        client_max_body_size       1000m;
    }
    access_log  /var/log/nginx/nexus.log  main;
}

server {
    listen 443 ssl http2;
    server_name  nexus.kubernetes-devops.cn;

    ssl_certificate /etc/nginx/ssl/server.pem;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto "https";
        proxy_redirect off;
        proxy_pass http://nexus;
        client_max_body_size       1000m;
    }
    access_log  /var/log/nginx/nexus.log  main;
}
eof
6:启动Nginx
[root@nexus3 ssl]# nginx
# 访问此地址 https://nexus.kubernetes-devops.cn即可访问到Nexus3
# 因为是内网,所以访问nexus的UI的时候走https,但是为了保证拉取效率,使用http拉取

4:验证

image

5:初始化Nexus

image

根据提示通过持久化路径获取密码
[root@nexus3 ssl]# cat /var/lib/docker/volumes/nexus/_data/admin.password 
a113fb09-6779-4845-b3fb-5ed6926e003f

image

image

image

根据需求看您需不需要开启匿名访问

image

初始化完成之后就是这样子了

6:创建python缓存仓库

image

我这里先清除无用的仓库

image

image

image

1:给你的仓库起个名字
2:选择你要从哪儿里缓存包到你的服务器
3:勾选获取目标站点的证书
4:将证书信任添加一下

image

image

image

使用地址:http://nexus.kubernetes-devops.cn/repository/devops_pypi/simple
# 关于simple:pypi官网拉取包也是需要指定这个路径的
即可在客户端拉取软件包,此时Nexus就会从目标站点拉取包并缓存到本地

7:测试

因为是内网,所以本地机器需要进行host绑定
[root@agent ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.16   nexus.kubernetes-devops.cn

测试pip3 指定仓库拉取软件包
[root@agent ~]# pip3 install mycli -i "http://nexus.kubernetes-devops.cn/repository/devops_pypi/simple" --trusted-host nexus.kubernetes-devops.cn
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.
Collecting mycli
  Downloading http://nexus.kubernetes-devops.cn/repository/devops_pypi/packages/mycli/1.25.0/mycli-1.25.0-py2.py3-none-any.whl (97kB)
    100% |████████████████████████████████| 102kB 41.7MB/s 
Collecting pyaes>=1.6.1 (from mycli)
---

# --trusted-host 信任您的主机

这边装完之后可以在nexus上查看您的缓存包

image

image

这样子其他机器即使无法上网也可以通过指定:http://nexus.kubernetes-devops.cn/repository/devops_pypi/simple
此地址下载在线的包了
posted @ 2022-04-15 12:33  Layzer  阅读(161)  评论(0)    收藏  举报