Nexus安裝及配置Maven、pip、npm私服
安裝資訊
- 作業系統 Redhat6.x(Centos6.x)
- nexus-oss版本 nexus-3.13.0-01-unix.tar.gz
- JDK版本:JDK8
- 安裝目錄 /opt/software/nexus
- 應用目錄 /opt/software/nexus/nexus-3.13.0-01
- 應用目錄軟連接配接 /opt/software/nexus/nexus
- 元件目錄 /opt/software/nexus/sonatype-work
- 端口:8081(預設)
- nexus預設管理使用者:admin/admin123
- nexus伺服器域名:nexus.menghuanhua.com(配置方式略,用于在配置中表示nexus伺服器)
常用操作
/opt/software/nexus/nexus/bin/nexus {start|stop|run|run-redirect|status|restart|force-reload}
安裝步驟
- 伺服器參數調整,關閉防火牆等,本文略
- 安裝JDK8,本文略
- 安裝nexus
- 建立安裝目錄及下載下傳目錄 mkdir -p /opt/{software,install}
- 下載下傳Nexus Repository Manager OSS 3.x 社群版,下載下傳位址:https://www.sonatype.com/download-oss-sonatype,并将下載下傳檔案儲存到/opt/install目錄
- 建立nexus目錄 mkdir -p /opt/software/nexus
- 解壓壓縮包到目錄 tar -xvf /opt/install/nexus-3.13.0-01-unix.tar.gz -C /opt/software/nexus
- 建立應用目錄軟連結,友善版本更新 ln -s /opt/software/nexus/nexus-3.13.0-01 /opt/software/nexus/
- 啟動nexus /opt/software/nexus/nexus/bin/nexus start
- 使用浏覽器通路 http://127.0.0.1:8081,進入管理平台,安裝完成。
- (可選)修改配置檔案,并重新開機。配置檔案如下:
-Xms1200M
-Xmx1200M
-XX:MaxDirectMemorySize=G
-XX:+UnlockDiagnosticVMOptions
-XX:+UnsyncloadClass
-XX:+LogVMOutput
-XX:LogFile=../sonatype-work/nexus3/log/jvm.log
-XX:-OmitStackTraceInFastThrow
-Djava.net.preferIPv4Stack=true
-Dkaraf.home=.
-Dkaraf.base=.
-Dkaraf.etc=etc/karaf
-Djava.util.logging.config.file=etc/karaf/java.util.logging.properties
-Dkaraf.data=../sonatype-work/nexus3
-Djava.io.tmpdir=../sonatype-work/nexus3/tmp
-Dkaraf.startLocalConsole=false
- 進入管理平台,使用預設密碼admin/admin123登入,并修改管理使用者密碼,如圖
配置Maven私服
- 打開管理平台,并使用管理使用者登入。
- 進入管理頁面,并進入倉庫管理,對倉庫進行增删。新裝的nexus預設倉庫如圖。
-
配置倉庫
一般情況下,maven私服的功能如下:
- 代理中央倉庫,預設的maven-central即中央倉庫
- 代理常用開源元件庫,如spring(釋出庫/裡程碑庫/快照庫)倉庫、Oracle倉庫
- 建立私有倉庫,分版本庫和快照庫,即預設的maven-releases和maven-snapshots
- 建立third-party庫,用于上傳中央倉庫沒有,第三方的元件
-
建立倉庫組,便于配置使用,即預設的maven-public
預設的maven-central,maven-releases,maven-snapshots,maven-public可以直接使用,如果需要自定義名稱,可以删除重新添加。本文僅保留maven-central,其餘删除并重新添加,并分别命名為df-releases,df-snapshots,df-public。按照下表關鍵屬性添加倉庫:
倉庫名稱 格式 類型 釋出/快照庫 是否允許重新釋出 代理位址 maven-central maven2 proxy release - https://repo1.maven.org/maven2/ df-releases maven2 hosted release disabled redeploy - df-snapshots maven2 hosted snapshot allow redeploy - third-party maven2 hosted release disabled redeploy - df-public maven2 - - - - spring-snapshots maven2 proxy snapshot - https://repo.spring.io/libs-snapshot-local spring-milestones maven2 proxy release - https://repo.spring.io/libs-milestone-local spring-releases maven2 proxy release - https://repo.spring.io/release maven.oracle.com maven2 proxy release - https://maven.oracle.com
- 由于oracle倉庫采用了認證,在按照上表特性進行配置後,需要進行特殊配置,配置方式如下。
- 在oracle官網注冊賬戶,注冊位址:https://profile.oracle.com/myprofile/account/create-account.jspx
- 在清單中,點選maven.oracle.com對應行,進入倉庫配置。勾選如圖的選項,并填入使用者名和密碼。
- 進入df-public,将其餘hosted和proxy類型的倉庫加入組中,如圖:
- 配置好的倉庫清單如圖
- 在maven中配置使用nexus私服
- 在setting.xml中配置
- 配置将組建釋出到倉庫使用的使用者名,在servers标簽下配置,此處使用預設使用者名密碼舉例,server下的id為nexus中配置的倉庫名。
<server> <id>df-releases</id> <username>admin</username> <password>admin123</password> </server> <server> <id>df-snapshots</id> <username>admin</username> <password>admin123</password> </server> <server> <id>third-party</id> <username>admin</username> <password>admin123</password> </server>
- 定義私有倉庫(可以在pom.xml中配置,但會令pom.xml顯得啰嗦,是以優先配置在setting.xml中的profiles中并激活該profile),完整的profiles和activeProfiles參考如下,根據實際情況替換http://nexus.menghuanhua.com:8081:
<profiles> <profile> <id>df-maven</id> <repositories> <repository> <id>df-releases</id> <name>df-releases</name> <url>http://nexus.menghuanhua.com:8081/repository/df-releases/</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> <releases> <enabled>true</enabled> </releases> </repository> <repository> <id>df-snapshots</id> <name>df-snapshots</name> <url>http://nexus.menghuanhua.com:8081/repository/df-snapshots/</url> <layout>default</layout> <snapshots> <enabled>true</enabled> <updatePolicy>always</updatePolicy> </snapshots> <releases> <enabled>false</enabled> </releases> </repository> <repository> <id>third-party</id> <name>third-party</name> <url>http://nexus.menghuanhua.com:8081/repository/third-party/</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> <releases> <enabled>true</enabled> </releases> </repository> </repositories> </profile> <profiles> <activeProfiles> <activeProfile>df-maven</activeProfile> </activeProfiles>
- 配置鏡像,将對所有倉庫的通路指向私服的倉庫組
<mirror> <id>df-public</id> <name>df-public</name> <url>http://nexus.menghuanhua:8081/repository/df-public/</url> <mirrorOf>*</mirrorOf> </mirror>
- 配置将組建釋出到倉庫使用的使用者名,在servers标簽下配置,此處使用預設使用者名密碼舉例,server下的id為nexus中配置的倉庫名。
- 在pom.xml中配置釋出所使用的釋出庫及快照庫,可以配置在父pom.xml中,繼承父pom将繼承該配置
<distributionManagement> <repository> <id>df-releases</id> <name>Releases</name> <url>http://nexus.menghuanhua:8081/repository/dz-kfb-release</url> </repository> <snapshotRepository> <id>df-snapshots</id> <name>Snapshot</name> <url>http://nexus.menghuanhua:8081/repository/dz-kfb-snapshot</url> </snapshotRepository> </distributionManagement>
-
釋出元件
按照上述配置完成後,使用mvn deploy即可将元件釋出到自有私服。
- 在setting.xml中配置
配置npm私服
- 在nexus中添加npm中央倉庫,并建立npm倉庫組,按照下表進行配置
倉庫名稱 格式 類型 釋出/快照庫 是否允許重新釋出 代理位址 npmjs npm proxy - - https://registry.npmjs.org/ df-npm-public npm group - - - - 配置npm,使用私服位址,配置檔案為home目錄下的.npmrc檔案,如果檔案不存在則建立該檔案,并添加配置
- 使用npm指令時,使用 -loglevel參數,列印詳細的日志資訊,如:npm -loglevel info install
配置pip私服
- 在nexus中添加pip倉庫,本例中使用阿裡雲倉庫,如下表:
倉庫名稱 格式 類型 釋出/快照庫 是否允許重新釋出 代理位址 aliyun-pipy pipy proxy - - https://mirrors.aliyun.com/pypi/ df-pipy-public pipy group - - - - 使用pip時,使用-i 指定倉庫位址,并同時使用–trusted-host參數指定信任主機,如下:
- 在配置檔案中配置私服位址,配置檔案位址~/.pip/pip.conf,如不存在則新增該檔案。配置檔案内容如下:
[global] index-url=nexus.menghuanhua.com:/repository/df-pipy-public/simple/ [install] trusted-host=nexus.menghuanhua.com