Ricerca nel sito web

Come installare e configurare Nexus Repository Manager su Ubuntu 20.04


Questo tutorial esiste per queste versioni del sistema operativo

  • Ubuntu 22.04 (Jammy Jellyfish)
  • Ubuntu 20.04 (Focal Fossa)

Su questa pagina

  1. Prerequisiti
  2. Per iniziare
  3. Installa Java
  4. Installa Nexus
  5. Crea un file di servizio Systemd per Nexus
  6. Configura Nginx come proxy inverso per Nexus
  7. Accedi all'interfaccia web di Nexus
  8. Conclusione

Nexus è un repository gestito che fornisce una piattaforma che protegge l'intero ciclo di vita dello sviluppo del software. Ti consente di raccogliere e gestire le tue dipendenze e semplifica la distribuzione del tuo software. È un'unica origine di tutti i componenti, i file binari e gli artefatti di compilazione. Fornisce supporto per Gradle, Ant, Maven e Ivy e consente agli sviluppatori di gestire i componenti tramite binari, contenitori, assiemi e prodotti finiti. Puoi anche integrare Nexus con i tuoi sistemi di autenticazione e utente esistenti come LDAP e Atlassian Crowd.

In questo tutorial, ti mostreremo come installare il gestore di repository Nexus su Ubuntu 20.04.

Prerequisiti

  • Un server che esegue Ubuntu 20.04.
  • Il server è configurato con una password di root.

Iniziare

Prima di iniziare, dovrai aggiornare i tuoi pacchetti di sistema all'ultima versione. Puoi aggiornarli usando il seguente comando:

apt-get update -y

Una volta aggiornato il server, puoi procedere al passaggio successivo.

Installa Java

Nexus è basato su Java, quindi dovrai installare Java versione 8 nel tuo sistema. Puoi installarlo con il seguente comando:

apt-get install openjdk-8-jdk -y

Una volta installato Java, puoi verificare la versione installata di Java con il seguente comando:

java -version

Dovresti ottenere il seguente output:

openjdk version "1.8.0_282"
OpenJDK Runtime Environment (build 1.8.0_282-8u282-b08-0ubuntu1~20.04-b08)
OpenJDK 64-Bit Server VM (build 25.282-b08, mixed mode)

Una volta installato Java, puoi procedere al passaggio successivo.

Installa Nexus

Prima di iniziare, dovrai creare un utente separato per eseguire Nexus. Puoi crearlo eseguendo il seguente comando:

useradd -M -d /opt/nexus -s /bin/bash -r nexus

Successivamente, consente all'utente nexus di eseguire tutti gli utenti con sudo senza alcuna password. Puoi farlo con eseguendo il seguente comando:

echo "nexus ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/nexus

Successivamente, crea una directory per Nexus e scarica l'ultima versione di Nexus con il seguente comando:

mkdir /opt/nexus
wget https://sonatype-download.global.ssl.fastly.net/repository/downloads-prod-group/3/nexus-3.29.2-02-unix.tar.gz

Una volta completato il download, estrai il file scaricato nella directory /opt/nexus eseguendo il seguente comando:

tar xzf nexus-3.29.2-02-unix.tar.gz -C /opt/nexus --strip-components=1

Successivamente, imposta la proprietà corretta sulla directory nexus eseguendo il seguente comando:

chown -R nexus:nexus /opt/nexus

Successivamente, modifica il file di configurazione nexus.vmoptions e definisci la dimensione massima della memoria:

nano /opt/nexus/bin/nexus.vmoptions

Imposta la dimensione massima della memoria Java e sostituisci \../sonatype-work\ con \./sonatype-work\:

-Xms1024m
-Xmx1024m
-XX:MaxDirectMemorySize=1024m

-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
-Dkaraf.log=./sonatype-work/nexus3/log
-Djava.io.tmpdir=./sonatype-work/nexus3/tmp

Salva e chiudi il file, quindi modifica il file nexus.rc e definisci l'esecuzione come utente:

nano /opt/nexus/bin/nexus.rc

Rimuovere il commento e modificare la seguente riga con l'utente nexus:

run_as_user="nexus"

Salva e chiudi il file quindi avvia il servizio Nexxus con il seguente comando:

sudo -u nexus /opt/nexus/bin/nexus start

Successivamente, verifica il Nexus con il seguente comando:

tail -f /opt/nexus/sonatype-work/nexus3/log/nexus.log

Dovresti ottenere il seguente output:

2021-02-23 12:20:51,839+0000 INFO  [jetty-main-1]  *SYSTEM com.softwarementors.extjs.djn.servlet.DirectJNgineServlet - Servlet GLOBAL configuration: registryConfiguratorClass=
2021-02-23 12:20:51,853+0000 INFO  [jetty-main-1]  *SYSTEM com.softwarementors.extjs.djn.jscodegen.CodeFileGenerator - Creating source files for APIs...
2021-02-23 12:20:52,582+0000 INFO  [jetty-main-1]  *SYSTEM org.sonatype.nexus.siesta.SiestaServlet - JAX-RS RuntimeDelegate: org.sona649a69ca
2021-02-23 12:20:52,611+0000 INFO  [jetty-main-1]  *SYSTEM org.jboss.resteasy.plugins.validation.i18n - RESTEASY008550: Unable to find CDI supporting ValidatorFactory. Using default ValidatorFactory
2021-02-23 12:20:53,811+0000 INFO  [jetty-main-1]  *SYSTEM org.sonatype.nexus.siesta.SiestaServlet - Initialized
2021-02-23 12:20:53,817+0000 INFO  [jetty-main-1]  *SYSTEM org.sonatype.nexus.repository.httpbridge.internal.ViewServlet - Initialized
2021-02-23 12:20:53,852+0000 INFO  [jetty-main-1]  *SYSTEM org.eclipse.jetty.server.handler.ContextHandler - Started {Sonatype Nexus,/,file:///opt/nexus/public/,AVAILABLE}
2021-02-23 12:20:53,883+0000 INFO  [jetty-main-1]  *SYSTEM org.eclipse.jetty.server.AbstractConnector - Started {HTTP/1.1, (http/1.1)}{0.0.0.0:8081}
2021-02-23 12:20:53,884+0000 INFO  [jetty-main-1]  *SYSTEM org.eclipse.jetty.server.Server - Started @37529ms
2021-02-23 12:20:53,884+0000 INFO  [jetty-main-1]  *SYSTEM org.sonatype.nexus.bootstrap.jetty.JettyServer - 
-------------------------------------------------

Started Sonatype Nexus OSS 3.29.2-02

-------------------------------------------------

A questo punto, Nexus è avviato e in ascolto sulla porta 8081. Puoi verificarlo con il seguente comando:

ss -altnp | grep 8081

Dovresti ottenere il seguente output:

LISTEN    0         50                 0.0.0.0:8081             0.0.0.0:*        users:(("java",pid=5548,fd=795)) 

Quindi, arresta il servizio Nexus con il seguente comando:

/opt/nexus/bin/nexus stop

Crea un file di servizio Systemd per Nexus

Successivamente, dovrai creare un file di servizio systemd per gestire il servizio Nexus. Puoi crearlo con il seguente comando:

nano /etc/systemd/system/nexus.service

Aggiungi le seguenti righe:

[Unit]
Description=nexus service
After=network.target

[Service]
Type=forking
LimitNOFILE=65536
ExecStart=/opt/nexus/bin/nexus start
ExecStop=/opt/nexus/bin/nexus stop
User=nexus
Restart=on-abort

[Install]
WantedBy=multi-user.target

Salva e chiudi il file, quindi ricarica il demone systemd con il seguente comando:

systemctl daemon-reload

Successivamente, avvia il servizio Nexus e abilitalo per l'avvio al riavvio del sistema con il seguente comando:

systemctl start nexus
systemctl enable nexus

Puoi anche verificare lo stato del servizio Nexus utilizzando il seguente comando:

systemctl status nexus

Dovresti ottenere il seguente output:

? nexus.service - nexus service
     Loaded: loaded (/etc/systemd/system/nexus.service; disabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-02-23 12:22:49 UTC; 15s ago
    Process: 6181 ExecStart=/opt/nexus/bin/nexus start (code=exited, status=0/SUCCESS)
   Main PID: 6368 (java)
      Tasks: 40 (limit: 4691)
     Memory: 642.9M
     CGroup: /system.slice/nexus.service
             ??6368 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java -server -Dinstall4j.jvmDir=/usr/lib/jvm/java-8-openjdk-amd64/jre -Dexe4j.mo>

Feb 23 12:22:49 ubunt4 systemd[1]: Starting nexus service...
Feb 23 12:22:49 ubunt4 nexus[6181]: Starting nexus
Feb 23 12:22:49 ubunt4 systemd[1]: Started nexus service.
lines 1-13/13 (END)

Una volta terminato, puoi procedere al passaggio successivo.

Configura Nginx come proxy inverso per Nexus

Successivamente, dovrai installare Nginx e configurare Nginx come proxy inverso. Innanzitutto, installa i pacchetti Nginx con il seguente comando:

apt-get install nginx -y

Una volta installato Nginx, crea un file di configurazione dell'host virtuale Nginx con il seguente comando:

nano /etc/nginx/conf.d/nexus.conf

Aggiungi le seguenti righe:

upstream backend {
  server 127.0.0.1:8081;
}

server {
    listen 80;
    server_name nexus.example.com;

    location / {
        proxy_pass http://backend/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forward-Proto http;
        proxy_set_header X-Nginx-Proxy true;

        proxy_redirect off;
    }
}

Salva e chiudi il file, quindi verifica il file di configurazione di Nginx con il seguente comando:

nginx -t

Dovresti ottenere il seguente output:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Infine, riavvia il servizio Nginx per applicare le modifiche:

systemctl restart nginx

Puoi anche verificare lo stato di Nginx con il seguente comando:

systemctl status nginx

Dovresti ottenere il seguente output:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-02-23 12:24:57 UTC; 4s ago
       Docs: man:nginx(8)
    Process: 7106 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 7107 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 7123 (nginx)
      Tasks: 3 (limit: 4691)
     Memory: 3.5M
     CGroup: /system.slice/nginx.service
             ??7123 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??7124 nginx: worker process
             ??7125 nginx: worker process

Feb 23 12:24:57 ubunt4 systemd[1]: Starting A high performance web server and a reverse proxy server...
Feb 23 12:24:57 ubunt4 systemd[1]: Started A high performance web server and a reverse proxy server.

Accedi all'interfaccia Web di Nexus

Prima di accedere all'interfaccia utente web di Nexus, stampa la password dell'amministratore di Nexus con il seguente comando:

cat /opt/nexus/sonatype-work/nexus3/admin.password

Dovresti ottenere il seguente output:

b7c899cf-c6d3-4d11-a4cb-9a44e5d1787e

Ora apri il tuo browser web e accedi all'interfaccia utente web di Nexus utilizzando l'URL http://nexus.example.com. Verrai reindirizzato alla seguente pagina:

Ora, fai clic sul pulsante Accedi. Verrai reindirizzato alla pagina di accesso di Nexus:

Fornisci il nome utente e la password dell'amministratore e fai clic sul pulsante Accedi. Dovresti vedere la pagina di configurazione del Nexus:

Fare clic sul pulsante Avanti per continuare. Dovresti vedere la seguente pagina:

Imposta la tua nuova password e fai clic sul pulsante Avanti. Dovresti vedere la seguente pagina:

Selezionare l'opzione \Abilita accesso anonimo\ e fare clic sul pulsante Avanti. Dovresti vedere la seguente pagina:

Fare clic sul pulsante Fine per completare la configurazione e fare clic sull'icona dell'ingranaggio delle impostazioni. Dovresti vedere la dashboard del repository Nexus:

Conclusione

Congratulazioni! hai installato correttamente il gestore del repository Nexus con Nginx come proxy inverso sul server Ubuntu 20.04. Non esitate a chiedermi se avete domande.