Come installare e configurare Nexus Repository Manager su Ubuntu 20.04

16 mar 2021 7 min di lettura
Come installare e configurare Nexus Repository Manager su Ubuntu 20.04
Indice dei contenuti

Introduzione

Nexus è un repository che fornisce una piattaforma che protegge l'intero ciclo di vita di sviluppo del software. Ti consente di raccogliere e gestire le tue dipendenze e semplifica la distribuzione del software. È un'unica fonte di tutti i componenti, i file binari e gli artefatti di compilazione. Fornisce supporto per Gradle, Ant, Maven e Ivy e consente allo sviluppatore 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 LTS Focal Fossa.

Prerequisiti

  • Un server che esegue Ubuntu 20.04 LTS.
  • Utente root oppure un utente con privilegi sudo.

Se desideri installare Nexus su un server in remoto continua a leggere, altrimenti salta il primo paragrafo "Connessione al Server" e leggi il successivo.

Connessione al Server

Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:

ssh root@IP_DEL_SERVER

Successivamente sarà necessario inserire la password dell'utente root.

Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:

ssh nome_utente@IP_DEL_SERVER

Successivamente vi verrà chiesto di inserire la password del vostro utente.

La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:

ssh nome_utente@IP_DEL_SERVER -p PORTA

Iniziare

Prima di iniziare, sarà necessario aggiornare i pacchetti di sistema all'ultima versione. Puoi aggiornarli utilizzando il seguente comando:

sudo apt-get update -y

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

Installare Java

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

sudo 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.

Installare Nexus

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

sudo 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 eseguendo il seguente comando:

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

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

sudo 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:

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

Quindi, imposta la proprietà appropriata alla directory nexus eseguendo il seguente comando:

sudo chown -R nexus:nexus /opt/nexus

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

sudo 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:

sudo nano /opt/nexus/bin/nexus.rc

Rimuovi il commento e modifica la riga seguente 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

Quindi, verifica il Nexus con il seguente comando:

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

Dovresti ottenere il seguente output:

2021-02-22 11:21:51,839+0000 INFO  [jetty-main-1]  *SYSTEM com.softwarementors.extjs.djn.servlet.DirectJNgineServlet - Servlet GLOBAL configuration: registryConfiguratorClass=
2021-02-22 11:21:51,853+0000 INFO  [jetty-main-1]  *SYSTEM com.softwarementors.extjs.djn.jscodegen.CodeFileGenerator - Creating source files for APIs...
2021-02-22 11:21:52,582+0000 INFO  [jetty-main-1]  *SYSTEM org.sonatype.nexus.siesta.SiestaServlet - JAX-RS RuntimeDelegate: org.sonatype.nexus.siesta.internal.resteasy.SisuResteasyProviderFactory@649a69ca
2021-02-22 11:21: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-22 11:21:53,811+0000 INFO  [jetty-main-1]  *SYSTEM org.sonatype.nexus.siesta.SiestaServlet - Initialized
2021-02-22 11:21:53,817+0000 INFO  [jetty-main-1]  *SYSTEM org.sonatype.nexus.repository.httpbridge.internal.ViewServlet - Initialized
2021-02-22 11:21:53,852+0000 INFO  [jetty-main-1]  *SYSTEM org.eclipse.jetty.server.handler.ContextHandler - Started o.e.j.w.WebAppContext@7a65358d{Sonatype Nexus,/,file:///opt/nexus/public/,AVAILABLE}
2021-02-22 11:21:53,883+0000 INFO  [jetty-main-1]  *SYSTEM org.eclipse.jetty.server.AbstractConnector - Started ServerConnector@764a4935{HTTP/1.1, (http/1.1)}{0.0.0.0:8081}
2021-02-22 11:21:53,884+0000 INFO  [jetty-main-1]  *SYSTEM org.eclipse.jetty.server.Server - Started @37529ms
2021-02-22 11:21: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:

sudo 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)) 

Successivamente, interrompi il servizio Nexus con il seguente comando:

sudo /opt/nexus/bin/nexus stop

Creare 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:

sudo 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

Salvare e chiudere il file, quindi ricaricare il demone systemd con il seguente comando:

sudo systemctl daemon-reload

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

sudo systemctl start nexus
sudo systemctl enable nexus

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

sudo 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-22 11:21:49 UTC; 11s 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 ubuntu2004 systemd[1]: Starting nexus service...
Feb 23 12:22:49 ubuntu2004 nexus[6181]: Starting nexus
Feb 23 12:22:49 ubuntu2004 systemd[1]: Started nexus service.
lines 1-13/13 (END)

Una volta terminato, puoi procedere al passaggio successivo.

Configurare 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:

sudo apt-get install nginx -y

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

sudo 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:

sudo 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

nginx: la sintassi del file di configurazione /etc/nginx/nginx.conf è oknginx: il test del file di configurazione /etc/nginx/nginx.conf ha esito positivo

Infine, riavvia il servizio Nginx per applicare le modifiche:

sudo systemctl restart nginx

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

sudo 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-22 11:54:57 UTC; 1s 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 22 11:54:17 ubuntu2004 systemd[1]: Starting A high performance web server and a reverse proxy server...
Feb 22 11:54:17 ubuntu2004 systemd[1]: Started A high performance web server and a reverse proxy server.

Accedere all'interfaccia web del Nexus

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

sudo 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 del Nexus utilizzando l'URL http://nexus.example.com. Verrai reindirizzato alla dashboardi di Nexus.

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

Fornire il nome utente e la password dell'amministratore e fare clic sul pulsante Accedi. Dovresti vedere la pagina di configurazione di Nexus.

Fare clic sul pulsante Avanti per continuare. Dovresti vedere la pagina di cambio password.

Imposta la nuova password e fai clic sul pulsante Avanti. Dovresti vedere la pagina di accesso anonimo.

Seleziona l'opzione "Abilita accesso anonimo" e fai clic sul pulsante Avanti. Dovresti vedere la pagina di configurazione completa.

Fare clic sul pulsante Fine per completare la configurazione e fare clic sull'icona a forma di ingranaggio Impostazioni. Dovresti vedere la dashboard del repository Nexus:

Conclusione

Congratulazioni! hai installato con successo il gestore di repository Nexus con Nginx come proxy inverso sul server Ubuntu 20.04 LTS Focal Fossa.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.