当前位置:   article > 正文

nexus搭建_nexus 搭建

nexus 搭建

搭建说明

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

一、安装

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

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

  1. [root@zhgd-jumpserver-prod scripts]# cat nexus.sh
  2. docker rm -f zhgd-nexus
  3. docker run -d --user root \
  4. -p 8081:8081 -p 8082:8082 -p 8083:8083 -p 8084:8084 \
  5. -v /opt/nexus/nexus-data:/nexus-data \
  6. --name zhgd-nexus sonatype/nexus3:3.47.1

二、基本配置

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

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

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

 三、代码pom适配

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

  1. <repositories>
  2. <repository>
  3. <id>pms-nexus-zhgd</id>
  4. <name>PMS Repository</name>
  5. <url>https://zhgd-nexus.xingshicloud.com/repository/zhgd/</url>
  6. <releases>
  7. <enabled>true</enabled>
  8. </releases>
  9. <snapshots>
  10. <enabled>true</enabled>
  11. </snapshots>
  12. </repository>
  13. </repositories>
  14. <distributionManagement>
  15. <repository>
  16. <id>pms-nexus-zhgd</id>
  17. <name>Nexus Release Repository</name>
  18. <url>https://zhgd-nexus.xingshicloud.com/repository/zhgd/</url>
  19. </repository>
  20. <snapshotRepository>
  21. <id>pms-nexus-zhgd</id>
  22. <name>Nexus Snapshot Repository</name>
  23. <url>https://zhgd-nexus.xingshicloud.com/repository/zhgd/</url>
  24. </snapshotRepository>
  25. </distributionManagement>

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

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

  1. <pluginRepositories>
  2. <pluginRepository>
  3. <id>nexus</id>
  4. <url>http://zhgd-nexus.xingshicloud.com/repository/maven-public/</url>
  5. <releases>
  6. <enabled>true</enabled>
  7. </releases>
  8. <snapshots>
  9. <enabled>true</enabled>
  10. </snapshots>
  11. </pluginRepository>
  12. </pluginRepositories>

四、编译环境适配

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

  1. <server>
  2. <id>pms-nexus-zhgd</id>
  3. <username>admin</username>
  4. <password>qDsU#Nl%orDo</password>
  5. </server>
  6. <server>
  7. <id>nexus</id>
  8. <username>admin</username>
  9. <password>qDsU#Nl%orDo</password>
  10. </server>

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

  1. <server>
  2. <id>pms-nexus-thirdparty</id>
  3. <configuration>
  4. <httpConfiguration>
  5. <all>
  6. <connectionTimeout>100</connectionTimeout>
  7. <readTimeout>100</readTimeout>
  8. </all>
  9. </httpConfiguration>
  10. </configuration>
  11. </server>
  12. <server>
  13. <id>pms-nexus-snapshots</id>
  14. <configuration>
  15. <httpConfiguration>
  16. <all>
  17. <connectionTimeout>100</connectionTimeout>
  18. <readTimeout>100</readTimeout>
  19. </all>
  20. </httpConfiguration>
  21. </configuration>
  22. </server>
  23. <server>
  24. <id>pinming-nexus-snapshots</id>
  25. <configuration>
  26. <httpConfiguration>
  27. <all>
  28. <connectionTimeout>100</connectionTimeout>
  29. <readTimeout>100</readTimeout>
  30. </all>
  31. </httpConfiguration>
  32. </configuration>
  33. </server>
  34. <server>
  35. <id>pms-nexus-releases</id>
  36. <configuration>
  37. <httpConfiguration>
  38. <all>
  39. <connectionTimeout>100</connectionTimeout>
  40. <readTimeout>100</readTimeout>
  41. </all>
  42. </httpConfiguration>
  43. </configuration>
  44. </server>
  45. <server>
  46. <id>3rd-party</id>
  47. <configuration>
  48. <httpConfiguration>
  49. <all>
  50. <connectionTimeout>100</connectionTimeout>
  51. <readTimeout>100</readTimeout>
  52. </all>
  53. </httpConfiguration>
  54. </configuration>
  55. </server>
  56. <server>
  57. <id>pinming-nexus</id>
  58. <configuration>
  59. <httpConfiguration>
  60. <all>
  61. <connectionTimeout>100</connectionTimeout>
  62. <readTimeout>100</readTimeout>
  63. </all>
  64. </httpConfiguration>
  65. </configuration>
  66. </server>

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

五、nexus备份

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

  1. ###以nexus部署机器做为rsync服务端,安装rsync及服务端配置略
  2. ###编写备份脚本并放到crontab中定期执行
  3. [root@zhgd-mysql-cloudcanal-kubepi-prod ~]# cat /k8slog/10.100.10.206/nexus_backup/rsync_nexus.sh
  4. #!/bin/bash
  5. remote_ip=10.100.10.206
  6. rsync_user=opshaibo
  7. rsync_dir=/k8slog/$remote_ip/nexus_backup/nexus-data
  8. DATE=`date +%Y%m%d%H%M%S`
  9. LogFile=/k8slog/$remote_ip/nexus_backup/nexusbackup.log
  10. echo -e "\033[36m ---------------------开始备份 $DATE -----------------\033[0m">>$LogFile
  11. #备份命令如下:
  12. ##--delete删除目标目录比源目录中多的文件
  13. rsync -avzu --delete --progress rsync://${rsync_user}@${remote_ip}/nexusdata ${rsync_dir} --password-file=/etc/rsync_client.pas
  14. if [ $? -eq 0 ];
  15. then
  16. echo -e " \033[32m 三局私有nexus仓库 rsync备份成功\033[0m">>$LogFile
  17. #微信报警
  18. curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=126acc51-3bd8-421d-ae1c-19bfdbff70e2' \
  19. -H 'Content-Type: application/json' \
  20. -d '
  21. {
  22. "msgtype": "markdown",
  23. "markdown": {
  24. "content": "<font color=\"warning\">三局私有nexus仓库 rsync备份成功</font>"
  25. }
  26. }'
  27. else
  28. echo -e "\033[31m 三局私有nexus仓库 rsync备份失败\033[0m">>$LogFile
  29. #微信报警
  30. curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=126acc51-3bd8-421d-ae1c-19bfdbff70e2' \
  31. -H 'Content-Type: application/json' \
  32. -d '
  33. {
  34. "msgtype": "markdown",
  35. "markdown": {
  36. "content": "<font color=\"warning\">三局私有nexus仓库 rsync备份失败,请快速解决问题!!</font>"
  37. }
  38. }'
  39. fi
  40. now_time=`date +%Y%m%d%H%M%S`
  41. echo -e "\033[36m ---------------------结束备份 $now_time -----------------\033[0m">>$LogFile
  42. tar -czPf nexus-${now_time}.tar.gz /k8slog/$remote_ip/nexus_backup/nexus-data
  43. mv nexus-${now_time}.tar.gz /k8slog/$remote_ip/nexus_backup/tar/
  44. find /k8slog/$remote_ip/nexus_backup/tar -name "*.tar.gz" -mtime +7 -exec rm -f {} \;
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/399137
推荐阅读
相关标签
  

闽ICP备14008679号