Comment installer et configurer le gestionnaire de référentiel Nexus sur Ubuntu 20.04

Nexus est un référentiel de gestion qui fournit une plateforme qui protège l’ensemble du cycle de vie de ton développement logiciel. Il te permet de rassembler et de gérer tes dépendances et facilite la distribution de tes logiciels. C’est une source unique de tous les composants, binaires et artefacts de construction. Il prend en charge Gradle, Ant, Maven et Ivy, et permet à dev de gérer les composants par le biais de binaires, de conteneurs, d’assemblages et de produits finis. Tu peux aussi intégrer Nexus à tes systèmes d’utilisateurs et d’authentification existants, comme LDAP et Atlassian Crowd.

Dans ce tutoriel, nous allons te montrer comment installer le gestionnaire de référentiel Nexus sur Ubuntu 20.04.

Conditions préalables

  • Un serveur exécutant Ubuntu 20.04.
  • Un mot de passe root est configuré sur le serveur.

Démarrage

Avant de commencer, tu dois mettre à jour tes paquets système à la dernière version. Tu peux les mettre à jour à l’aide de la commande suivante :

apt-get update -y

Une fois que ton serveur est mis à jour, tu peux passer à l’étape suivante.

Installer Java

Nexus est basé sur Java, tu devras donc installer la version 8 de Java dans ton système. Tu peux l’installer à l’aide de la commande suivante :

apt-get install openjdk-8-jdk -y

Une fois que Java est installé, tu peux vérifier la version installée de Java avec la commande suivante :

java -version

Tu devrais obtenir le résultat suivant :

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)

Une fois que Java est installé, tu peux passer à l’étape suivante.

Installer Nexus

Avant de commencer, tu dois créer un utilisateur distinct pour exécuter Nexus. Tu peux le créer en exécutant la commande suivante :

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

Ensuite, autorise l’utilisateur de Nexus à exécuter tous les utilisateurs avec sudo sans mot de passe. Tu peux le faire en exécutant la commande suivante :

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

Ensuite, crée un répertoire pour Nexus et télécharge la dernière version de Nexus avec la commande suivante :

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

Une fois le téléchargement terminé, extrais le fichier téléchargé dans le répertoire /opt/nexus en exécutant la commande suivante :

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

Ensuite, définis la propriété appropriée au répertoire nexus en exécutant la commande suivante :

chown -R nexus:nexus /opt/nexus

Ensuite, modifie le fichier de configuration nexus.vmoptions et définis la taille de mémoire maximale :

nano /opt/nexus/bin/nexus.vmoptions

Définis la taille mémoire max de Java et remplace « ../sonatype-work » par « ./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

Enregistre et ferme le fichier puis modifie le fichier nexus.rc et définis l’exécution en tant qu’utilisateur :

nano /opt/nexus/bin/nexus.rc

Décommente et modifie la ligne suivante avec nexus user :

run_as_user="nexus"

Sauvegarde et ferme le fichier puis démarre le service Nexxus avec la commande suivante :

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

Ensuite, vérifie le Nexus avec la commande suivante :

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

Tu devrais obtenir le résultat suivant :

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.sona[email protected]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 [email protected]{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 [email protected]{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

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

À ce stade, Nexus est démarré et écoute sur le port 8081. Tu peux le vérifier avec la commande suivante :

ss -altnp | grep 8081

Tu devrais obtenir le résultat suivant :

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

Ensuite, arrête le service Nexus avec la commande suivante :

/opt/nexus/bin/nexus stop

Créer un fichier de service Systemd pour Nexus

Ensuite, tu devras créer un fichier de service systemd pour gérer le service Nexus. Tu peux le créer avec la commande suivante :

nano /etc/systemd/system/nexus.service

Ajoute les lignes suivantes :

[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

Sauvegarde et ferme le fichier puis recharge le démon systemd avec la commande suivante :

systemctl daemon-reload

Ensuite, démarre le service Nexus et active-le pour qu’il démarre au redémarrage du système avec la commande suivante :

systemctl start nexus
systemctl enable nexus

Tu peux aussi vérifier l’état du service Nexus à l’aide de la commande suivante :

systemctl status nexus

Tu devrais obtenir la sortie suivante :

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

Une fois que tu as terminé, tu peux passer à l’étape suivante.

Configurer Nginx comme proxy inverse pour Nexus

Ensuite, tu devras installer Nginx et le configurer comme proxy inverse. Tout d’abord, installe les paquets Nginx avec la commande suivante :

apt-get install nginx -y

Une fois que Nginx est installé, crée un fichier de configuration d’hôte virtuel Nginx avec la commande suivante :

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

Ajoute les lignes suivantes :

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

Enregistre et ferme le fichier puis vérifie le fichier de configuration de Nginx avec la commande suivante :

nginx -t

Tu devrais obtenir la sortie suivante :

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

Enfin, redémarre le service Nginx pour appliquer les modifications :

systemctl restart nginx

Tu peux aussi vérifier l’état de Nginx avec la commande suivante :

systemctl status nginx

Tu devrais obtenir la sortie suivante :

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

Accéder à l’interface web de Nexus

Avant d’accéder à l’interface web de Nexus, imprime le mot de passe admin de Nexus avec la commande suivante :

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

Tu devrais obtenir le résultat suivant :

b7c899cf-c6d3-4d11-a4cb-9a44e5d1787e

Maintenant, ouvre ton navigateur web et accède à l’interface web de Nexus en utilisant l’URL http://nexus.example.com. Tu seras redirigé vers la page suivante :

GUI de Nexus

Maintenant, clique sur le bouton Se connecter. Tu seras redirigé vers la page de connexion de Nexus :

Connexion

Indique ton nom d’utilisateur admin, ton mot de passe et clique sur le bouton Se connecter. Tu devrais voir la page de configuration de Nexus :

Assistant de configuration

Clique sur le bouton Suivant pour continuer. Tu devrais voir la page suivante :

Définir un nouveau mot de passe

Définis ton nouveau mot de passe et clique sur le bouton Suivant. Tu devrais voir la page suivante :

Configurer l'accès anonyme

Sélectionne l’option « Activer l’accès anonyme » et clique sur le bouton Suivant. Tu devrais voir la page suivante :

Configuration terminée

Clique sur le bouton Terminer pour terminer la configuration et clique sur l’icône de l’engrenage de réglage. Tu devrais voir le tableau de bord du référentiel Nexus :

Tableau de bord du gestionnaire de référentiel Nexus

Conclusion

Félicitations ! Tu as installé avec succès le gestionnaire de référentiel Nexus avec Nginx comme proxy inverse sur le serveur Ubuntu 20.04. N’hésite pas à me demander si tu as des questions.

Vous aimerez aussi...