So installieren und konfigurieren Sie Nexus Repository Manager unter Ubuntu 20.04

Nexus ist ein Repository-Manager, der eine Plattform zur Verfügung stellt, die Ihren gesamten Lebenszyklus der Softwareentwicklung schützt. Es ermöglicht Ihnen, Ihre Abhängigkeiten zu sammeln und zu verwalten und erleichtert die Verteilung Ihrer Software. Es ist eine einzige Quelle für alle Komponenten, Binärdateien und Build-Artefakte. Es bietet Unterstützung für Gradle, Ant, Maven und Ivy und ermöglicht dem Entwickler die Verwaltung von Komponenten in Form von Binaries, Containern, Assemblies und fertigen Produkten. Sie können Nexus auch mit Ihren bestehenden Benutzer- und Authentifizierungssystemen wie LDAP und Atlassian Crowd integrieren.

In diesem Tutorial zeigen wir Ihnen, wie Sie den Repository-Manager Nexus auf Ubuntu 20.04 installieren.

Voraussetzungen

  • Ein Server, auf dem Ubuntu 20.04 läuft.
  • Der Server ist mit einem Root-Passwort konfiguriert.

Erste Schritte

Bevor Sie beginnen, müssen Sie Ihre Systempakete auf die neueste Version aktualisieren. Sie können sie mit dem folgenden Befehl aktualisieren:

apt-get update -y

Sobald Ihr Server aktualisiert ist, können Sie mit dem nächsten Schritt fortfahren.

Java installieren

Da Nexus auf Java basiert, müssen Sie Java Version 8 in Ihrem System installieren. Sie können es mit dem folgenden Befehl installieren:

apt-get install openjdk-8-jdk -y

Sobald Java installiert ist, können Sie die installierte Version von Java mit dem folgenden Befehl überprüfen:

java -version

Sie sollten die folgende Ausgabe erhalten:

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)

Sobald Java installiert ist, können Sie mit dem nächsten Schritt fortfahren.

Nexus installieren

Bevor Sie beginnen, müssen Sie einen separaten Benutzer erstellen, um Nexus auszuführen. Sie können ihn mit folgendem Befehl anlegen:

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

Als Nächstes können Sie dem Benutzer nexus erlauben, alle Benutzer mit sudo ohne Passwort auszuführen. Sie können dies durch Ausführen des folgenden Befehls tun:

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

Erstellen Sie als nächstes ein Verzeichnis für Nexus und laden Sie die neueste Version von Nexus mit folgendem Befehl herunter:

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

Sobald der Download abgeschlossen ist, extrahieren Sie die heruntergeladene Datei in das Verzeichnis /opt/nexus, indem Sie den folgenden Befehl ausführen:

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

Legen Sie als Nächstes die richtigen Eigentumsrechte für das Nexus-Verzeichnis fest, indem Sie den folgenden Befehl ausführen:

chown -R nexus:nexus /opt/nexus

Bearbeiten Sie als nächstes die Konfigurationsdatei nexus.vmoptions und definieren Sie die maximale Speichergröße:

nano /opt/nexus/bin/nexus.vmoptions

Setzen Sie die maximale Java-Speichergröße und ersetzen Sie „../sonatype-work“ durch „./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

Speichern und schließen Sie die Datei, bearbeiten Sie dann die Datei nexus.rc und definieren Sie das Ausführen als Benutzer:

nano /opt/nexus/bin/nexus.rc

Entkommentieren Sie und ändern Sie die folgende Zeile mit nexus user:

run_as_user="nexus"

Speichern und schließen Sie die Datei und starten Sie dann den Nexxus-Dienst mit dem folgenden Befehl:

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

Als nächstes verifizieren Sie den Nexus mit dem folgenden Befehl:

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

Sie sollten die folgende Ausgabe erhalten:

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.sonatype.nexus.siesta.internal.resteasy.SisuResteasyProviderFactory@649a69ca
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 o.e.j.w.WebAppContext@7a65358d{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 ServerConnector@764a4935{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

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

Zu diesem Zeitpunkt ist Nexus gestartet und lauscht auf Port 8081. Sie können dies mit dem folgenden Befehl überprüfen:

ss -altnp | grep 8081

Sie sollten die folgende Ausgabe erhalten:

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

Als nächstes stoppen Sie den Nexus-Dienst mit dem folgenden Befehl:

/opt/nexus/bin/nexus stop

Erstellen einer Systemd-Dienstdatei für Nexus

Als nächstes müssen Sie eine systemd-Dienstdatei erstellen, um den Nexus-Dienst zu verwalten. Sie können sie mit dem folgenden Befehl erstellen:

nano /etc/systemd/system/nexus.service

Fügen Sie die folgenden Zeilen ein:

[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

Speichern und schließen Sie die Datei und laden Sie den systemd-Daemon mit dem folgenden Befehl neu:

systemctl daemon-reload

Starten Sie anschließend den Nexus-Dienst und aktivieren Sie, dass er beim Neustart des Systems gestartet wird, mit dem folgenden Befehl:

systemctl start nexus
systemctl enable nexus

Sie können den Status des Nexus-Dienstes auch mit dem folgenden Befehl überprüfen:

systemctl status nexus

Sie sollten die folgende Ausgabe erhalten:

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

Sobald Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.

Nginx als Reverse-Proxy für Nexus konfigurieren

Als nächstes müssen Sie Nginx installieren und Nginx als Reverse-Proxy konfigurieren. Installieren Sie zunächst die Nginx-Pakete mit dem folgenden Befehl:

apt-get install nginx -y

Sobald Nginx installiert ist, erstellen Sie eine Konfigurationsdatei für den virtuellen Nginx-Host mit dem folgenden Befehl:

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

Fügen Sie die folgenden Zeilen ein:

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;
    }
}

Speichern und schließen Sie die Datei und überprüfen Sie dann die Nginx-Konfigurationsdatei mit dem folgenden Befehl:

nginx -t

Sie sollten die folgende Ausgabe erhalten:

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

Starten Sie abschließend den Nginx-Dienst neu, um die Änderungen zu übernehmen:

systemctl restart nginx

Sie können den Status von Nginx auch mit dem folgenden Befehl überprüfen:

systemctl status nginx

Sie sollten die folgende Ausgabe erhalten:

? 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 ubuntu2004 systemd[1]: Starting A high performance web server and a reverse proxy server...
Feb 23 12:24:57 ubuntu2004 systemd[1]: Started A high performance web server and a reverse proxy server.

Zugriff auf die Nexus-Web-Oberfläche

Bevor Sie auf die Nexus-Web-Oberfläche zugreifen, geben Sie das Nexus-Admin-Passwort mit dem folgenden Befehl ein:

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

Sie sollten die folgende Ausgabe erhalten:

b7c899cf-c6d3-4d11-a4cb-9a44e5d1787e

Öffnen Sie nun Ihren Webbrowser und greifen Sie über die URL http://nexus.example.com auf die Nexus-Web-UI zu. Sie werden auf die folgende Seite umgeleitet:

Nexus-GUI

Klicken Sie nun auf die Schaltfläche Sign in. Sie werden auf die Nexus-Anmeldeseite umgeleitet:

Login

Geben Sie Ihren Admin-Benutzernamen und Ihr Passwort ein und klicken Sie auf die Schaltfläche Sign in (Anmelden). Sie sollten die Nexus-Einrichtungsseite sehen:

Setup-Assistent

Klicken Sie auf die Schaltfläche Next, um fortzufahren. Sie sollten die folgende Seite sehen:

Neues Passwort festlegen

Legen Sie Ihr neues Passwort fest und klicken Sie auf die Schaltfläche Weiter. Sie sollten die folgende Seite sehen:

Anonymen Zugriff konfigurieren

Wählen Sie die Option „Enable anonymous access“ und klicken Sie auf die Schaltfläche Next. Die folgende Seite sollte angezeigt werden:

Einrichtung abgeschlossen

Klicken Sie auf die Schaltfläche Fertig stellen, um die Einrichtung abzuschließen, und klicken Sie auf das Zahnradsymbol für die Einstellung. Sie sollten das Dashboard des Nexus-Repositorys sehen:

Nexus Repository Manager Dashboard

Fazit

Herzlichen Glückwunsch! Sie haben den Nexus-Repository-Manager mit Nginx als Reverse-Proxy erfolgreich auf einem Ubuntu 20.04-Server installiert. Wenn Sie Fragen haben, können Sie sich gerne an mich wenden.

Das könnte dich auch interessieren …