Nexus est un référentiel géré qui fournit une plate-forme qui protège l'intégralité de votre cycle de vie de développement logiciel. Il vous permet de collecter, de gérer vos dépendances et facilite la distribution de vos logiciels. Il s'agit d'une source unique de tous les composants, fichiers binaires et artefacts de build. Il prend en charge Gradle, Ant, Maven et Ivy, et permet aux développeurs de gérer les composants via des fichiers binaires, des conteneurs, des assemblages et des produits finis. Vous pouvez également intégrer Nexus à vos systèmes d'utilisateur et d'authentification existants, tels que LDAP et Atlassian Crowd.
Dans ce tutoriel, nous allons vous montrer comment installer le gestionnaire de référentiel Nexus sur Ubuntu 20.04.
Prérequis
- Un serveur exécutant Ubuntu 20.04.
- Un mot de passe root est configuré sur le serveur.
Mise en route
Avant de commencer, vous devrez mettre à jour vos packages système vers la dernière version. Vous pouvez les mettre à jour à l'aide de la commande suivante :
apt-get update -y
Une fois votre serveur mis à jour, vous pouvez passer à l'étape suivante.
Installer Java
Nexus est basé sur Java, vous devrez donc installer Java version 8 sur votre système. Vous pouvez l'installer avec la commande suivante :
apt-get install openjdk-8-jdk -y
Une fois Java installé, vous pouvez vérifier la version installée de Java avec la commande suivante :
java -version
Vous devriez 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 Java installé, vous pouvez passer à l'étape suivante.
Installer Nexus
Avant de commencer, vous devrez créer un utilisateur distinct pour exécuter Nexus. Vous pouvez le créer en exécutant la commande suivante :
useradd -M -d /opt/nexus -s /bin/bash -r nexus
Ensuite, permet à l'utilisateur Nexus d'exécuter tous les utilisateurs avec sudo sans mot de passe. Vous pouvez le faire en exécutant la commande suivante :
echo "nexus ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/nexus
Ensuite, créez un répertoire pour Nexus et téléchargez 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é, extrayez 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éfinissez la propriété appropriée du répertoire nexus en exécutant la commande suivante :
chown -R nexus:nexus /opt/nexus
Ensuite, modifiez les nexus.vmoptions fichier de configuration et définissez la taille maximale de la mémoire :
nano /opt/nexus/bin/nexus.vmoptions
Définissez la taille de mémoire maximale de Java et remplacez "../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
Enregistrez et fermez le fichier puis modifiez le fichier nexus.rc et définissez l'exécution en tant qu'utilisateur :
nano /opt/nexus/bin/nexus.rc
Décommentez et modifiez la ligne suivante avec l'utilisateur nexus :
run_as_user="nexus"
Enregistrez et fermez le fichier puis démarrez le service Nexxus avec la commande suivante :
sudo -u nexus /opt/nexus/bin/nexus start
Ensuite, vérifiez le Nexus avec la commande suivante :
tail -f /opt/nexus/sonatype-work/nexus3/log/nexus.log
Vous devriez 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. Vous pouvez le vérifier avec la commande suivante :
ss -altnp | grep 8081
Vous devriez 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êtez le service Nexus avec la commande suivante :
/opt/nexus/bin/nexus stop
Créer un fichier de service Systemd pour Nexus
Ensuite, vous devrez créer un fichier de service systemd pour gérer le service Nexus. Vous pouvez le créer avec la commande suivante :
nano /etc/systemd/system/nexus.service
Ajoutez 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
Enregistrez et fermez le fichier puis rechargez le démon systemd avec la commande suivante :
systemctl daemon-reload
Ensuite, démarrez le service Nexus et activez-le au redémarrage du système avec la commande suivante :
systemctl start nexus
systemctl enable nexus
Vous pouvez également vérifier l'état du service Nexus à l'aide de la commande suivante :
systemctl status nexus
Vous devriez obtenir le résultat suivant :
? 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 vous avez terminé, vous pouvez passer à l'étape suivante.
Configurer Nginx en tant que proxy inverse pour Nexus
Ensuite, vous devrez installer Nginx et configurer Nginx en tant que proxy inverse. Tout d'abord, installez les packages Nginx avec la commande suivante :
apt-get install nginx -y
Une fois le Nginx installé, créez un fichier de configuration d'hôte virtuel Nginx avec la commande suivante :
nano /etc/nginx/conf.d/nexus.conf
Ajoutez 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; } }
Enregistrez et fermez le fichier puis vérifiez le fichier de configuration Nginx avec la commande suivante :
nginx -t
Vous devriez obtenir le résultat suivant :
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Enfin, redémarrez le service Nginx pour appliquer les modifications :
systemctl restart nginx
Vous pouvez également vérifier l'état du Nginx avec la commande suivante :
systemctl status nginx
Vous devriez obtenir le résultat suivant :
? 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 Nexus
Avant d'accéder à l'interface utilisateur Web Nexus, imprimez le mot de passe administrateur Nexus avec la commande suivante :
cat /opt/nexus/sonatype-work/nexus3/admin.password
Vous devriez obtenir le résultat suivant :
b7c899cf-c6d3-4d11-a4cb-9a44e5d1787e
Maintenant, ouvrez votre navigateur Web et accédez à l'interface utilisateur Web Nexus à l'aide de l'URL http://nexus.example.com . Vous serez redirigé vers la page suivante :
Maintenant, cliquez sur Connexion bouton. Vous serez redirigé vers la page de connexion Nexus :
Indiquez votre nom d'utilisateur et votre mot de passe d'administrateur et cliquez sur Connexion bouton. Vous devriez voir la page de configuration de Nexus :
Cliquez sur Suivant bouton pour continuer. Vous devriez voir la page suivante :
Définissez votre nouveau mot de passe et cliquez sur Suivant bouton. Vous devriez voir la page suivante :
Sélectionnez l'option "Activer l'accès anonyme" et cliquez sur Suivant bouton. Vous devriez voir la page suivante :
Cliquez sur Terminer pour terminer la configuration et cliquez sur le bouton Setting gear icône. Vous devriez voir le tableau de bord du référentiel Nexus :
Conclusion
Toutes nos félicitations! vous avez installé avec succès le gestionnaire de référentiel Nexus avec Nginx en tant que proxy inverse sur le serveur Ubuntu 20.04. N'hésitez pas à me demander si vous avez des questions.