Nexus Repository Manager unter Ubuntu 22.04 installieren
Nexus ist einer der beliebtesten Repository-Manager in der DevOps-Welt. Er ermöglicht es dir, Build-Artefakte zu speichern und abzurufen und bietet außerdem Funktionen, um Artefakte über CI- und IDE-Integrationstools wie Visual Studio und Jenkins zu pushen und zu ziehen.
Es gibt zwei Versionen von Nexus Repository Manager: Die kommerzielle Version und die Open-Source-Version. Er unterstützt so viele Formate wie PyPi, Docker, Yum, APT, Helm, npm, Go, R und viele mehr.
Wenn du Nexus als Repository verwendest, können deine Entwickler Pakete über einen zentralen Repository-Manager beziehen und verwalten.
In dieser Anleitung wird erklärt, wie man den Nexus Repository Manager auf einem Ubuntu 22.04 Server installiert. Diese Anleitung beinhaltet auch die Installation einiger Pakete wie Java OpenJDK und Nginx Webserver, der als Reverse Proxy verwendet wird.
Voraussetzungen
Bevor du beginnst, brauchst du die folgenden Voraussetzungen:
- Einen Ubuntu 22.04 Server.
- Einen Nicht-Root-Benutzer mit sudo/administrator.
- Einen Domainnamen, der auf die IP-Adresse deines Ubuntu-Servers zeigt (für die Produktion).
Installation von Java OpenJDK 8
Der Nexus Repository Manager benötigt Java OpenJDK und JRE v8. Das Standard-Repository von Ubuntu stellt mehrere Java-Versionen zur Verfügung. Deshalb installierst du jetzt das Java OpenJDK und JRE v8 aus dem Ubuntu-Repository.
Bevor du ein Paket installierst, führe den folgenden apt-Befehl aus, um den Paketindex deines Repositories zu aktualisieren und aufzufrischen.
sudo apt update
Jetzt installierst du Java OpenJDK 8 mit dem unten stehenden apt-Befehl. Gib Y ein, wenn du gefragt wirst, ob du die Installation bestätigen willst und drücke ENTER, um fortzufahren.
sudo apt install openjdk-8-jdk
Sobald Java installiert ist, überprüfe die Java-Version auf deinem System mit dem folgenden Befehl.
java -version
Du siehst die Ausgabe im folgenden Screenshot:
System einrichten
Um Nexus zu installieren, musst du einen neuen Linux-Benutzer mit einer gültigen Shell anlegen und die maximale Anzahl der geöffneten Dateien für Hard- und Soft-Limits auf „65536“ setzen.
Führe den folgenden Befehl aus, um einen neuen dedizierten Benutzer für den Nexus mit dem Namen „nexus“ zu erstellen
sudo useradd -d /opt/nexus -s /bin/bash nexus sudo passwd nexus
Als Nächstes setzt du das ulimit mit dem folgenden Befehl auf „65536„. Dies wirkt sich nur vorübergehend auf das System auf dem aktuellen System aus. Um es dauerhaft einzurichten, kannst du eine neue Konfigurationsdatei erstellen, was du im nächsten Schritt tun wirst.
ulimit -n 65536
Um ulimit dauerhaft einzurichten, erstelle eine neue Konfigurationsdatei „/etc/security/limits.d/nexus.conf“ mit dem Editor nano.
sudo nano /etc/security/limits.d/nexus.conf
Füge die folgende Konfiguration in die Datei ein. In diesem Beispiel richtest du für den bestimmten Benutzer „nexus“ ein Ulimit mit dem Wert „65536“ ein.
nexus - nofile 65536
Speichere die Datei und beende den Editor, wenn du fertig bist.
Wenn alle Grundvoraussetzungen erfüllt und konfiguriert sind, kannst du den Nexus Repository Manager auf deinem Ubuntu-System installieren.
Nexus Repository Manager installieren
Der Nexus Repository Manager kann über das Distributionspaket installiert werden, das du von der offiziellen Sonatype-Downloadseite herunterladen kannst. Zum Zeitpunkt der Erstellung dieses Artikels ist die neueste Version von Nexus v3.41.1. Jetzt lädst du das Nexus Repository Manager Distributionspaket herunter und konfigurierst die Nexus-Installation.
Lade das Nexus Repository Manager-Paket mit dem Befehl wget herunter (siehe unten). Wenn der Downloadvorgang abgeschlossen ist, siehst du die Datei „nexus-3.41.1-01-unix.tar.gz“ in deinem aktuellen Arbeitsverzeichnis.
wget https://download.sonatype.com/nexus/3/nexus-3.41.1-01-unix.tar.gz
Entpacke nun die Datei„nexus-3.41.1-01-unix.tar.gz“ mit dem unten stehenden tar-Befehl. Dabei solltest du zwei Verzeichnisse erhalten, das ’nexus-3.41.1-01‚ und das’sonatype-work‚.
Das Verzeichnis’nexus-3.41.1-01‚ ist das Hauptverzeichnis für das Nexus-Paket, und das Verzeichnis ’sonatype-work‘ ist das Hauptarbeitsverzeichnis für Nexus.
tar xzf nexus-3.41.1-01-unix.tar.gz
Verschiebe die extrahierten Verzeichnisse mit folgendem Befehl nach „/opt“. Das Verzeichnis des Nexus-Pakets ist dann „/opt/nexus“ und das Arbeitsverzeichnis von Nexus ist „/opt/sonatype-work„.
mv nexus-3.41.1-01 /opt/nexus mv sonatype-work /opt/
Zum Schluss änderst du mit dem folgenden chown-Befehl die Eigentumsrechte an beiden Verzeichnissen auf den Benutzer und die Gruppe „nexus“.
chown -R nexus:nexus /opt/nexus /opt/sonatype-work
Als Nächstes richtest du deine Nexus-Installation ein, indem du einige der Nexus-Konfigurationsdateien bearbeitest.
Öffne die Datei „/opt/nexus/bin/nexus.rc“ mit dem Editor nano.
sudo nano /opt/nexus/bin/nexus.rc
Entferne das Kommentarzeichen bei der Option„run_as_user“ und ändere den Wert in „nexus“. Mit dieser Konfiguration führst du die Nexus-Anwendung als Systembenutzer„nexus“ aus.
run_as_user="nexus"
Speichere die Datei und beende den Editor, wenn du fertig bist.
Als Nächstes öffnest du die Konfigurationsdatei „/etc/nexus/bin/nexus.vmoptions“ mit dem nano-Editor, um den maximalen Heap-Speicher für Nexus einzustellen.
sudo nano /etc/nexus/bin/nexus.vmoptions
Ändere in den folgenden Optionen den standardmäßigen maximalen Heap-Speicher für deine Nexus-Installation. Du kannst die Größe auf ‚1024m‚ ändern, je nachdem, wie viel Speicher du auf deinem Server hast.
-Xms1024m -Xmx1024m -XX:MaxDirectMemorySize=1024m
Speichere die Datei und beende den Editor, wenn du fertig bist.
Bearbeite nun die Konfigurationsdatei „/opt/sonatype-work/nexus3/etc/nexus.properties“ mit dem nano-Editor.
sudo nano /opt/sonatype-work/nexus3/etc/nexus.properties
Entferne das Kommentarzeichen bei der Option „application-host“ und ändere den Wert in „127.0.0.1„. Das bedeutet, dass du den Nexus auf localhost oder der IP-Adresse „127.0.0.1“ laufen lassen wirst.
application-host=127.0.0.1
Speichere die Datei und beende den Editor.
Jetzt hast du den Nexus Repository Manager heruntergeladen und konfiguriert. Als Nächstes wirst du eine systemd-Dienstdatei für Nexus einrichten.
Nexus als SystemD-Dienst starten
Bei einer Standardinstallation kann der Nexus Repository Manager manuell über den Binärbefehl „nexus“ im Verzeichnis „/opt/nexus/bin“ ausgeführt werden. Um die Verwaltung von Nexus zu vereinfachen, richtest du jedoch eine systemd-Dienstdatei für Nexus ein.
Wenn du Nexus mit der systemd-Dienstdatei startest, kannst du den Nexus-Prozess über den systemctl-Befehl verwalten.
Erstelle nun mit dem Editor nano eine neue Servicedatei„/etc/systemd/system/nexus.service„.
sudo /etc/systemd/system/nexus.service
Füge die folgende Konfiguration in die Datei 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
Speichere die Datei und beende den Editor, wenn du fertig bist.
Als Nächstes führst du den folgenden Befehl aus, um den sytemd-Manager neu zu laden und eine neue Servicedatei für Nexus anzulegen.
sudo systemctl daemon-reload
Starte und aktiviere den „nexus.service“ mit dem folgenden systemctl-Befehl. Der Nexus Repository Manager wird nun unter der lokalen IP-Adresse 127.0.0.1 mit dem Standardport „8081“ gestartet. Außerdem wird der„nexus.service“ automatisch beim Systemstart ausgeführt.
sudo systemctl start nexus.service sudo systemctl enable nexus.service
Führe abschließend den folgenden Befehl aus, um den „nexus.service“ zu überprüfen und sicherzustellen, dass der Dienst läuft.
sudo systemctl status nexus.service
Wenn Nexus als systemd-Dienst läuft, kannst du jetzt einen Reverse Proxy für Nexus einrichten.
Nexus mit Reverse Proxy betreiben
Der Nexus Repository Manager läuft jetzt auf der lokalen IP-Adresse „127.0.0.1“ mit dem Standardport „8081“. Um ihn von außerhalb des Netzwerks zugänglich zu machen, verwendest du den Nginx Reverse Proxy, der auf Standard-HTTP/HTTPS-Ports läuft.
Führe den folgenden apt-Befehl aus, um den Nginx-Webserver auf deinem Ubuntu-System zu installieren. Wenn du aufgefordert wirst, die Installation zu bestätigen, gib Y ein und drücke ENTER, um fortzufahren.
sudo apt install nginx
Sobald Nginx installiert ist, führe den folgenden systemctl-Befehl aus, um den nginx-Dienst zu überprüfen und zu bestätigen. Du solltest sehen, dass der nginx-Dienst aktiviert ist und beim Systemstart automatisch ausgeführt wird. Und der Status des nginx-Dienstes lautet „running“.
sudo systemctl is-enabled nginx sudo systemctl status nginx
Als Nächstes erstellst du mit dem nano-Editor eine neue Serverblock-Konfiguration„/etc/nginx/sites-available/nexus„.
sudo nano /etc/nginx/sites-available/nexus
Füge die folgende Nginx-Konfiguration in die Datei ein und achte darauf, dass du den Domainnamen änderst.
upstream nexus3 { server 127.0.0.1:8081; } server { listen 80; server_name nexus.hwdomain.io; location / { proxy_pass http://nexus3/; 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; } }
Speichere die Datei und beende den Editor.
Als Nächstes führst du den folgenden Befehl aus, um die Serverblockkonfiguration für Nexus zu aktivieren, indem du einen Symlink von der Konfigurationsdatei in das Verzeichnis„sites-enabled“ erstellst. Überprüfe dann die Nginx-Konfiguration, um sicherzustellen, dass Nginx richtig konfiguriert ist.
sudo ln -s /etc/nginx/sites-available/nexus /etc/nginx/sites-enabled/ sudo nginx -t
Wenn deine Nginx-Konfiguration richtig konfiguriert ist, solltest du eine Meldung wie „test is successfull“ erhalten.
Zum Schluss führst du den folgenden Befehl aus, um den Nginx-Dienst neu zu starten und die neue Serverblockkonfiguration für Nexus anzuwenden.
sudo systemctl restart nginx
Du hast nun den Nginx-Webserver als Reverse-Proxy für den Nexus Repository Manager auf deinem Ubuntu-Rechner eingerichtet. Du kannst nun über deinen Domainnamen auf deine Nexus-Installation zugreifen.
Installation von Nexus Repository Manager
Jetzt läuft der Nexus Repository Manager unter dem Nginx Reverse Proxy. Und er ist über den Domainnamen deiner Installation erreichbar.
Öffne den Webbrowser und rufe den Domainnamen deiner Nexus-Installation auf (z. B.: http://nexus.hwdomain.io). Du solltest dann die Standard-Nexus-Seite wie unten sehen.
Klicke auf die Schaltfläche „Anmelden„, um dich im Nexus-Admin-Dashboard anzumelden.
Das Standard-Admin-Passwort für Nexus ist in der Datei„/opt/sonatype-work/nexus3/admin.properties“ mit dem Standardbenutzernamen admin gespeichert.
Gehe zurück zu deinem Terminal und führe den folgenden Befehl aus, um das Standardpasswort für den Nexus-Login zu erhalten. Kopiere dann das Standardpasswort für Nexus.
cat /opt/sonatype-work/nexus3/admin.properties
Als Nächstes gibst du den Benutzernamen admin ein und fügst das Passwort für Nexus ein. Klicke dann auf „Anmelden„.
Jetzt wird der Einrichtungsassistent von Nexus Repository Manager angezeigt. Klicke auf „Weiter„, um fortzufahren.
Gib das neue sichere Passwort für deine Nexus-Installation ein und wiederhole es. Klicke dann wieder auf „Weiter„.
Für die Konfiguration des „Anonymen Zugriffs“. Wähle die Option „Anonymen Zugriff deaktivieren“ und klicke auf „Weiter„.
Klicke nun auf „Fertigstellen„, um die Nexus-Konfiguration abzuschließen.
Nachdem die Nexus-Konfiguration abgeschlossen ist, siehst du das Nexus-Administrations-Dashboard. Auf dem Screenshot unten siehst du den Nexus Repository Manager.
Überprüfe abschließend deine Nexus-Installation über die Schaltfläche „Status prüfen“ oben. Vergewissere dich, dass der Systemstatus grün markiert ist, was bedeutet, dass die Installation und Konfiguration von Nexus erfolgreich war.
Fazit
In diesem Lernprogramm hast du den Nexus Repository Manager auf einem Ubuntu 22.04 Server eingerichtet. Außerdem hast du den Nginx-Webserver als Reverse-Proxy für Nexus konfiguriert. Du kannst nun Repositories deiner Projekte zum Nexus Repository Manager hinzufügen und die Quellen deiner Projekte zentralisieren, damit du deine Anwendungen einfach erstellen und an Entwickler verteilen kannst.
Wenn du daran interessiert bist, Nexus in der Produktion einzusetzen, kannst du die Sicherheit für deinen Nexus mit SSL/TLS über Letsencrypt einrichten.