nexus搭建

搭建说明

        nexus做为后端java项目的maven私服。目前统一将私服依赖上传到zhgd这个repository,nexus部署在内网IP为10.100.10.100的ECS上。

一、安装

        ###使用docker一键安装nexus3.47.1,低于此版本阿里云基线扫描会扫出漏洞。

        ###镜像来源于官方配置。

[root@zhgd-jumpserver-prod scripts]# cat nexus.sh

docker rm -f zhgd-nexus

docker run -d --user root \

-p 8081:8081 -p 8082:8082 -p 8083:8083 -p 8084:8084 \

-v /opt/nexus/nexus-data:/nexus-data \

--name zhgd-nexus sonatype/nexus3:3.47.1

二、基本配置

        创建一个项目统一使用的repository。

        同时为了拉取非私有的公共组件时能够走代理仓库从阿里云拉取,将zhgd加入maven-public组中。

         由于上线时没有做充分的低权限角色调试,nexus目前分发给开发者都是admin账号,未做角色区分。

 三、代码pom适配

        由于nexus存在一次迁移,并且老的依赖包都统一放在了zhgd这个repository,为保障迁移后代码都能正常编译,各后端项目pom文件都需要按此修改适配。

  <repositories>
        <repository>
            <id>pms-nexus-zhgd</id>
            <name>PMS  Repository</name>
            <url>https://zhgd-nexus.xingshicloud.com/repository/zhgd/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>

      <distributionManagement>
        <repository>
            <id>pms-nexus-zhgd</id>
            <name>Nexus Release Repository</name>
            <url>https://zhgd-nexus.xingshicloud.com/repository/zhgd/</url>
        </repository>
        <snapshotRepository>
            <id>pms-nexus-zhgd</id>
            <name>Nexus Snapshot Repository</name>
            <url>https://zhgd-nexus.xingshicloud.com/repository/zhgd/</url>
        </snapshotRepository>
    </distributionManagement>

        注意,上传和下载的逻辑都要到一个仓库zhgd下,不然新deploy的包会下载不到。

        如果代码中还配置了公共插件的下载逻辑,可以不写成zhgd库,连nexus上的阿里云代理仓库去下载即可,私有的包都要到zhgd下。

    <pluginRepositories>
        <pluginRepository>
            <id>nexus</id>
            <url>http://zhgd-nexus.xingshicloud.com/repository/maven-public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

四、编译环境适配

        考虑在公网,nexus取消了匿名用户拉包的权限,目前统一使用admin账号,本地的setting文件中需要配置仓库id和密码

    <server>
      <id>pms-nexus-zhgd</id>
      <username>admin</username>
      <password>qDsU#Nl%orDo</password>
    </server>
    <server>
      <id>nexus</id>
      <username>admin</username>
      <password>qDsU#Nl%orDo</password>
    </server>

        同时,由于智慧工地存在一次迁移逻辑,部分被依赖的依赖还存在nexus.pinming.org这个内网无法被连接的maven私服中,本地编译环境需要做超时配置,快速过掉连不上的pinming仓库的包。

    <server>
      <id>pms-nexus-thirdparty</id>
      <configuration>
        <httpConfiguration>
          <all>
            <connectionTimeout>100</connectionTimeout>
            <readTimeout>100</readTimeout>
          </all>
        </httpConfiguration>
      </configuration>
    </server>
    <server>
      <id>pms-nexus-snapshots</id>
      <configuration>
        <httpConfiguration>
          <all>
            <connectionTimeout>100</connectionTimeout>
            <readTimeout>100</readTimeout>
          </all>
        </httpConfiguration>
      </configuration>
    </server>
    <server>
      <id>pinming-nexus-snapshots</id>
      <configuration>
        <httpConfiguration>
          <all>
            <connectionTimeout>100</connectionTimeout>
            <readTimeout>100</readTimeout>
          </all>
        </httpConfiguration>
      </configuration>
    </server>
    <server>
      <id>pms-nexus-releases</id>
      <configuration>
        <httpConfiguration>
          <all>
            <connectionTimeout>100</connectionTimeout>
            <readTimeout>100</readTimeout>
          </all>
        </httpConfiguration>
      </configuration>
    </server>
    <server>
      <id>3rd-party</id>
      <configuration>
        <httpConfiguration>
          <all>
            <connectionTimeout>100</connectionTimeout>
            <readTimeout>100</readTimeout>
          </all>
        </httpConfiguration>
      </configuration>
    </server>
    <server>
      <id>pinming-nexus</id>
      <configuration>
        <httpConfiguration>
          <all>
            <connectionTimeout>100</connectionTimeout>
            <readTimeout>100</readTimeout>
          </all>
        </httpConfiguration>
      </configuration>
    </server>

        否则会由于层层依赖,导致外部开发者下不到metadata文件

五、nexus备份

        由于高权限账号的不安全性,运维利用了rsync将nexus的数据目录定期增量备份到了nas存储中(IP为10.100.10.202的ECS挂载了NAS存储)。

###以nexus部署机器做为rsync服务端,安装rsync及服务端配置略
###编写备份脚本并放到crontab中定期执行
[root@zhgd-mysql-cloudcanal-kubepi-prod ~]# cat /k8slog/10.100.10.206/nexus_backup/rsync_nexus.sh
#!/bin/bash
remote_ip=10.100.10.206
rsync_user=opshaibo
rsync_dir=/k8slog/$remote_ip/nexus_backup/nexus-data
DATE=`date +%Y%m%d%H%M%S`
LogFile=/k8slog/$remote_ip/nexus_backup/nexusbackup.log

echo -e "\033[36m ---------------------开始备份 $DATE -----------------\033[0m">>$LogFile
#备份命令如下:
##--delete删除目标目录比源目录中多的文件
rsync -avzu --delete --progress rsync://${rsync_user}@${remote_ip}/nexusdata ${rsync_dir} --password-file=/etc/rsync_client.pas

if [ $? -eq 0 ]; 
        then
                echo -e " \033[32m 三局私有nexus仓库 rsync备份成功\033[0m">>$LogFile
                #微信报警
                curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=126acc51-3bd8-421d-ae1c-19bfdbff70e2' \
                -H 'Content-Type: application/json' \
                -d '
                {
                        "msgtype": "markdown",
                        "markdown": {
                                "content": "<font color=\"warning\">三局私有nexus仓库 rsync备份成功</font>"
                        }
                }'           
        else
                echo -e "\033[31m  三局私有nexus仓库 rsync备份失败\033[0m">>$LogFile
                #微信报警
                curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=126acc51-3bd8-421d-ae1c-19bfdbff70e2' \
                -H 'Content-Type: application/json' \
                -d '
                {
                        "msgtype": "markdown",
                        "markdown": {
                                "content": "<font color=\"warning\">三局私有nexus仓库 rsync备份失败,请快速解决问题!!</font>"
                        }
                }'
fi
now_time=`date +%Y%m%d%H%M%S`
echo -e "\033[36m ---------------------结束备份 $now_time -----------------\033[0m">>$LogFile
tar -czPf nexus-${now_time}.tar.gz /k8slog/$remote_ip/nexus_backup/nexus-data
mv nexus-${now_time}.tar.gz /k8slog/$remote_ip/nexus_backup/tar/
find /k8slog/$remote_ip/nexus_backup/tar -name "*.tar.gz" -mtime +7 -exec rm -f {} \;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值