<六>企業級開源倉庫nexus3實戰應用–使用nexus3配置yum私有倉庫


一兩個星期之前,你如果在我跟前說起私服的事情,我大概會繞着你走,因為我對這個東西真的一竅不通。事實上也正如此,開發同學曾不止一次的跟我說公司的私服版本太舊了,許多新的依賴編譯之后不會從遠程倉庫自動緩存下來,然后每次就需要手動的上傳,不方便極了。我聽了之后,一方面確實因為各種忙碌沒有抽開時間,但另一方面,則是每當打開私服面對着滿屏的英文時,我都覺得眼前私服畢竟還能用,就不折騰了。

 

直到偶然一個契機,在網上看到一篇介紹nexus3.x的文章,文章寫得也比較清晰,我也有興致細讀下去,就這樣,開啟了我的nexus3私服之旅。

開始我以為這個只是針對maven私服而存在的工具,后來才發現它所支持的,竟然將運維日常所面臨的各種私服都包括了,這就極大的引發了我的鑽研興致,從maven私服的研究開始,一發不可收拾的,就又寫出了一個nexus3系列教程,涵蓋了安裝,配置,maven私服,maven私服從2.x到3.x的遷移,docker私服,npm私服,yum私服,縱觀全網絡,大概也找不到一個人如此這般的,傾盡所有的,知無不言的,言無不盡的將nexus3作為一個系列寫成文章的了。而現在,如果再有人與我說起私服的事情,至少我不會跑了,或許更想停下來了,,,哈哈。這就是付出學習所給人帶來的心境上的轉化!

前言啰嗦幾句,願您在這個小系列中,學習愉快!

想要查看本系列其他文章:請點此處跳轉

希望正在讀這段話的你能夠在這個小系列中獲得自信以及喜悅!

yum相較於rpm,能夠更好地解決安裝軟件時的依賴包問題,使用yum安裝更簡單更方便。搭建本地YUM源服務器,可以避免升級安裝軟件時占用公網帶寬;有了本地YUM源服務器,可以解決無法連接Internet的其他YUM客戶端的軟件升級和安裝。

搭建yum私服,我們依舊使用nexus3,這個強大的讓人忍不住想保住它親一親的優秀開源工具,再增添多少的贊美也不為過。

與其他私服一樣的,yum私服同樣有三種類型:

  • hosted : 本地存儲,即同 yum 官方倉庫一樣提供本地私服功能
  • proxy : 提供代理其他倉庫的類型,如我們常用的163倉庫
  • group : 組類型,實質作用是組合多個倉庫為一個地址,相當於一個透明代理。

那么就來一個一個創建。

1,創建blob存儲。

為其創建一個單獨的存儲空間,命名為yum-hub

2,創建hosted類型的yum庫。

后來才發現,其實每次創建的這個hosted類型的,並沒有什么用。不過照例創建一波吧。

  • Name::定義一個名稱local-yum
  • Storage:Blob store,我們下拉選擇前面創建好的專用blob:yum-hub。
  • Hosted:開發環境,我們運行重復發布,因此Delpoyment policy 我們選擇Allow redeploy。這個很重要!

整體配置截圖如下:

3,創建一個proxy類型的yum倉庫。

其他的均是默認。

這里就先創建一個代理163的倉庫,其實還可以多創建幾個,諸如阿里雲的,搜狐的,等等,這個根據個人需求來定義。

整體配置截圖如下:

4,創建一個group類型的yum倉庫。

  • Name:group-yum
  • Storage:選擇專用的blob存儲yum-hub。
  • group : 將左邊可選的2個倉庫,添加到右邊的members下。

整體配置截圖如下:

這些配置完成之后,就可以使用了。

5,構建緩存。

新建一台環境干凈的主機,此時需要保證這台主機能夠上網,因為私服當中還沒有進行初始化。

先簡單配置一下,將yum源指向到私服中來。

1,將原有的移走。

  1. [root@7-3 ~]$cd /etc/yum.repos.d/
  2. [root@7-3 yum.repos.d]$ls
  3. CentOS-Base.repo CentOS-CR.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-Sources.repo CentOS-Vault.repo
  4. [root@7-3 yum.repos.d]$mkdir bak
  5. [root@7-3 yum.repos.d]$mv * bak
  6. mv: cannot move bak to a subdirectory of itself, bak/bak
  7. [root@7-3 yum.repos.d]$ls
  8. bak

2,創建一個新的源。

  1. [root@7-3 yum.repos.d]$vim nexus.repo

添加如下內容:

其中的url就是私服當中創建的group的對外地址,后面的$releasever/os/$basearch/不要漏掉了。

  1. [nexus]
  2. name=Nexus Repository
  3. baseurl=http://192.168.106.65:8081/repository/group-yum/$releasever/os/$basearch/
  4. enabled=1
  5. gpgcheck=0
注意這還不是完整內容,我第一次構建的時候只寫了這些內容,以求私服自己能夠通過剛剛配置的proxy將遠程的包拉下來,最后發現這種方式,死活都是無法成功的。

因此,這里還應該將163的源配置添加進來。

完整內容應該如下:

  1. [root@7-3 yum.repos.d]$cat nexus.repo
  2. [nexus]
  3. name=Nexus Repository
  4. baseurl=http://192.168.106.65:8081/repository/group-yum/$releasever/os/$basearch/
  5. enabled=1
  6. gpgcheck=0
  7.  
  8. #released updates
  9. [updates]
  10. name=CentOS-$releasever-Updates-163.com
  11. #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
  12. baseurl=http://mirrors.163.com/centos/$releasever/updates/$basearch/
  13. gpgcheck=1
  14. gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
  15.  
  16. #additional packages that may be useful
  17. [extras]
  18. name=CentOS-$releasever-Extras-163.com
  19. #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
  20. baseurl=http://mirrors.163.com/centos/$releasever/extras/$basearch/
  21. gpgcheck=1
  22. gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
  23.  
  24. #additional packages that extend functionality of existing packages
  25. [centosplus]
  26. name=CentOS-$releasever-Plus-163.com
  27. baseurl=http://mirrors.163.com/centos/$releasever/centosplus/$basearch/
  28. gpgcheck=1
  29. enabled=0
  30. gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7

3,構建緩存。

現在,就可以通過makecache將遠程的包拉到內部私服當中了。

操作之前,就像古代變戲法一般的,依舊先去私服看一眼group-yum當中是否有包存在,這是一個固定流程哈。

可以看到空空如也,那么通過如下三步操作創建緩存。

  1. [root@7-3 yum.repos.d]$yum clean all
  2. Loaded plugins: fastestmirror
  3. Cleaning repos: extras nexus updates
  4. Cleaning up everything
  5. Cleaning up list of fastest mirrors
  6. [root@7-3 yum.repos.d]$yum makecache
  7. Loaded plugins: fastestmirror
  8. extras | 3.4 kB 00:00:00
  9. nexus | 1.8 kB 00:00:00
  10. updates | 3.4 kB 00:00:00
  11. (1/12): extras/7/x86_64/prestodelta | 100 kB 00:00:00
  12. (2/12): extras/7/x86_64/primary_db | 204 kB 00:00:00
  13. (3/12): extras/7/x86_64/other_db | 126 kB 00:00:00
  14. (4/12): extras/7/x86_64/filelists_db | 604 kB 00:00:00
  15. (5/12): nexus/7/x86_64/group_gz | 167 kB 00:00:00
  16. (6/12): nexus/7/x86_64/primary | 2.9 MB 00:00:00
  17. (7/12): nexus/7/x86_64/other | 1.6 MB 00:00:00
  18. (8/12): nexus/7/x86_64/filelists | 7.1 MB 00:00:00
  19. (9/12): updates/7/x86_64/prestodelta | 679 kB 00:00:00
  20. (10/12): updates/7/x86_64/filelists_db | 3.4 MB 00:00:00
  21. (11/12): updates/7/x86_64/other_db | 578 kB 00:00:00
  22. (12/12): updates/7/x86_64/primary_db | 6.0 MB 00:00:01
  23. Determining fastest mirrors
  24. nexus 9911/9911
  25. nexus 9911/9911
  26. nexus 9911/9911
  27. Metadata Cache Created
  28.  
  29. [root@7-3 yum.repos.d]$yum update -y #這個過程比較長,內容比較多,不完全復制了。

當上邊的第三步執行完成之后,此時我們可以回到剛剛那個空白的頁面,看看內容是否上來了。

就是這么神奇。

6,驗證一下效果。

驗證的方式其實也很簡單,找一台不能上網但是可以與剛剛私服通信的主機,將其yum源指向的配置好的私服,看看安裝軟件什么的是否可以so easy。

或者是將其他的源都切斷,然后yum源僅僅指向私服,看看安裝是否順利。

這里采用第二種方式簡單試驗一下。

1,將原有的移走。

  1. [root@7-2 ~]$cd /etc/yum.repos.d/
  2. [root@7-2 yum.repos.d]$ls
  3. CentOS-Base.repo CentOS-CR.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-Sources.repo CentOS-Vault.repo
  4. [root@7-2 yum.repos.d]$mkdir bak
  5. [root@7-2 yum.repos.d]$mv * bak
  6. mv: cannot move bak to a subdirectory of itself, bak/bak
  7. [root@7-2 yum.repos.d]$ls
  8. bak

此時嘗試一下安裝。

  1. [root@7-2 yum.repos.d]$yum -y install httpd
  2.  
  3. Loaded plugins: fastestmirror
  4.  
  5. Determining fastest mirrors
  6. There are no enabled repos.
  7. Run "yum repolist all" to see the repos you have.
  8. To enable Red Hat Subscription Management repositories:
  9. subscription-manager repos --enable <repo>
  10. To enable custom repositories:
  11. yum-config-manager --enable <repo>

2,創建一個新的源。

  1. [root@7-2 yum.repos.d]$cat nexus.repo
  2. [nexus]
  3. name=Nexus Repository
  4. baseurl=http://192.168.106.65:8081/repository/group-yum/$releasever/os/$basearch/
  5. enabled=1
  6. gpgcheck=0

再嘗試安裝:

  1. [root@7-2 yum.repos.d]$yum -y install httpd
  2. Loaded plugins: fastestmirror
  3. nexus | 1.8 kB 00:00:00
  4. (1/2): nexus/7/x86_64/group_gz | 167 kB 00:00:00
  5. (2/2): nexus/7/x86_64/primary | 2.9 MB 00:00:00
  6. Loading mirror speeds from cached hostfile
  7. nexus 9911/9911
  8. Resolving Dependencies
  9. --> Running transaction check
  10. ---> Package httpd.x86_64 0:2.4.6-80.el7.centos will be installed
  11. --> Processing Dependency: httpd-tools = 2.4.6-80.el7.centos for package: httpd-2.4.6-80.el7.centos.x86_64
  12. --> Processing Dependency: /etc/mime.types for package: httpd-2.4.6-80.el7.centos.x86_64
  13. --> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.4.6-80.el7.centos.x86_64
  14. --> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.4.6-80.el7.centos.x86_64
  15. --> Running transaction check
  16. ---> Package apr.x86_64 0:1.4.8-3.el7_4.1 will be installed
  17. ---> Package apr-util.x86_64 0:1.5.2-6.el7 will be installed
  18. ---> Package httpd-tools.x86_64 0:2.4.6-80.el7.centos will be installed
  19. ---> Package mailcap.noarch 0:2.1.41-2.el7 will be installed
  20. --> Finished Dependency Resolution
  21.  
  22. Dependencies Resolved
  23.  
  24. ==========================================================================================================================================================================================
  25. Package Arch Version Repository Size
  26. ==========================================================================================================================================================================================
  27. Installing:
  28. httpd x86_64 2.4.6-80.el7.centos nexus 2.7 M
  29. Installing for dependencies:
  30. apr x86_64 1.4.8-3.el7_4.1 nexus 103 k
  31. apr-util x86_64 1.5.2-6.el7 nexus 92 k
  32. httpd-tools x86_64 2.4.6-80.el7.centos nexus 89 k
  33. mailcap noarch 2.1.41-2.el7 nexus 31 k
  34.  
  35. Transaction Summary
  36. ==========================================================================================================================================================================================
  37. Install 1 Package (+4 Dependent packages)
  38.  
  39. Total download size: 3.0 M
  40. Installed size: 10 M
  41. Downloading packages:
  42. (1/5): apr-1.4.8-3.el7_4.1.x86_64.rpm | 103 kB 00:00:00
  43. (2/5): apr-util-1.5.2-6.el7.x86_64.rpm | 92 kB 00:00:00
  44. (3/5): httpd-tools-2.4.6-80.el7.centos.x86_64.rpm | 89 kB 00:00:00
  45. (4/5): mailcap-2.1.41-2.el7.noarch.rpm | 31 kB 00:00:00
  46. (5/5): httpd-2.4.6-80.el7.centos.x86_64.rpm | 2.7 MB 00:00:03
  47. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  48. Total 880 kB/s | 3.0 MB 00:00:03
  49. Running transaction check
  50. Running transaction test
  51. Transaction test succeeded
  52. Running transaction
  53. Installing : apr-1.4.8-3.el7_4.1.x86_64 1/5
  54. Installing : apr-util-1.5.2-6.el7.x86_64 2/5
  55. Installing : httpd-tools-2.4.6-80.el7.centos.x86_64 3/5
  56. Installing : mailcap-2.1.41-2.el7.noarch 4/5
  57. Installing : httpd-2.4.6-80.el7.centos.x86_64 5/5
  58. Verifying : httpd-tools-2.4.6-80.el7.centos.x86_64 1/5
  59. Verifying : apr-1.4.8-3.el7_4.1.x86_64 2/5
  60. Verifying : mailcap-2.1.41-2.el7.noarch 3/5
  61. Verifying : httpd-2.4.6-80.el7.centos.x86_64 4/5
  62. Verifying : apr-util-1.5.2-6.el7.x86_64 5/5
  63.  
  64. Installed:
  65. httpd.x86_64 0:2.4.6-80.el7.centos
  66.  
  67. Dependency Installed:
  68. apr.x86_64 0:1.4.8-3.el7_4.1 apr-util.x86_64 0:1.5.2-6.el7 httpd-tools.x86_64 0:2.4.6-80.el7.centos mailcap.noarch 0:2.1.41-2.el7
  69.  
  70. Complete!

就是這個feel,爽爽爽。

到此地,關於nexus3所支持的私服類型,基本上生產中常用的,都一一介紹過了,到目前為止,我也沒有在網上看到過任何一個寫,針對nexus寫一個系列的教程並分享出來的,啥也不說了,鄉親們吶,我心情激動,我驕傲!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM