天天看點

Nexus安裝及配置Maven、pip、npm私服

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登入,并修改管理使用者密碼,如圖
    Nexus安裝及配置Maven、pip、npm私服

配置Maven私服

  • 打開管理平台,并使用管理使用者登入。
  • 進入管理頁面,并進入倉庫管理,對倉庫進行增删。新裝的nexus預設倉庫如圖。
    Nexus安裝及配置Maven、pip、npm私服
  • 配置倉庫

    一般情況下,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對應行,進入倉庫配置。勾選如圖的選項,并填入使用者名和密碼。
      Nexus安裝及配置Maven、pip、npm私服
  • 進入df-public,将其餘hosted和proxy類型的倉庫加入組中,如圖:
    Nexus安裝及配置Maven、pip、npm私服
  • 配置好的倉庫清單如圖
    Nexus安裝及配置Maven、pip、npm私服
  • 在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>
                   
    • 在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即可将元件釋出到自有私服。

配置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