Cómo instalar y configurar Nexus Repository Manager en Ubuntu 20.04

Interfaz gráfica de usuario del nexo

Nexus es un administrador de repositorios que proporciona una plataforma que protege todo su ciclo de vida de desarrollo de software. Le permite recopilar y administrar sus dependencias y facilita la distribución de su software. Es una fuente única de todos los componentes, archivos binarios y artefactos de compilación. Brinda soporte para Gradle, Ant, Maven e Ivy, y permite que los desarrolladores administren componentes a través de archivos binarios, contenedores, ensamblajes y productos terminados. También puede integrar Nexus con sus sistemas de usuario y autenticación existentes, como LDAP y Atlassian Crowd.

En este tutorial, le mostraremos cómo instalar el administrador de repositorios Nexus en Ubuntu 20.04.

requisitos previos

  • Un servidor con Ubuntu 20.04.
  • Se configura una contraseña de root en el servidor.

Empezando

Antes de comenzar, deberá actualizar los paquetes de su sistema a la última versión. Puede actualizarlos usando el siguiente comando:

apt-get update -y

Una vez que su servidor esté actualizado, puede continuar con el siguiente paso.

Instalar Java

Nexus se basa en Java, por lo que deberá instalar la versión 8 de Java en su sistema. Puedes instalarlo con el siguiente comando:

apt-get install openjdk-8-jdk -y

Una vez que Java está instalado, puede verificar la versión instalada de Java con el siguiente comando:

java -version

Deberías obtener el siguiente resultado:

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 vez que Java esté instalado, puede continuar con el siguiente paso.

Instalar nexo

Antes de comenzar, deberá crear un usuario independiente para ejecutar Nexus. Puede crearlo ejecutando el siguiente comando:

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

A continuación, permite que el usuario de nexus ejecute todos los usuarios con sudo sin ninguna contraseña. Puede hacerlo ejecutando el siguiente comando:

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

A continuación, cree un directorio para Nexus y descargue la última versión de Nexus con el siguiente comando:

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 vez que se complete la descarga, extraiga el archivo descargado al directorio /opt/nexus ejecutando el siguiente comando:

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

A continuación, establezca la propiedad adecuada para el directorio nexus ejecutando el siguiente comando:

chown -R nexus:nexus /opt/nexus

A continuación, edite el nexus.vmoptions archivo de configuración y definir el tamaño máximo de memoria:

nano /opt/nexus/bin/nexus.vmoptions

Establezca el tamaño máximo de memoria de Java y reemplazó «../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

Guarde y cierre el archivo, luego edite el archivo nexus.rc y defina la ejecución como usuario:

nano /opt/nexus/bin/nexus.rc

Descomente y cambie la siguiente línea con el usuario nexus:

run_as_user="nexus"

Guarde y cierre el archivo, luego inicie el servicio Nexxus con el siguiente comando:

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

A continuación, verifica el Nexus con el siguiente comando:

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

Deberías obtener el siguiente resultado:

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

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

En este punto, Nexus se inicia y escucha en el puerto 8081. Puede verificarlo con el siguiente comando:

ss -altnp | grep 8081

Deberías obtener el siguiente resultado:

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

A continuación, detenga el servicio Nexus con el siguiente comando:

/opt/nexus/bin/nexus stop

Crear un archivo de servicio de Systemd para Nexus

A continuación, deberá crear un archivo de servicio systemd para administrar el servicio Nexus. Puedes crearlo con el siguiente comando:

nano /etc/systemd/system/nexus.service

Agregue las siguientes líneas: Anuncio

[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

Guarde y cierre el archivo, luego vuelva a cargar el demonio systemd con el siguiente comando:

systemctl daemon-reload

A continuación, inicie el servicio Nexus y habilítelo para que se inicie al reiniciar el sistema con el siguiente comando:

systemctl start nexus
systemctl enable nexus

También puede verificar el estado del servicio Nexus usando el siguiente comando:

systemctl status nexus

Deberías obtener el siguiente resultado:

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

Una vez que haya terminado, puede continuar con el siguiente paso.

Configurar Nginx como proxy inverso para Nexus

A continuación, deberá instalar Nginx y configurar Nginx como proxy inverso. Primero, instale los paquetes de Nginx con el siguiente comando:

apt-get install nginx -y

Una vez que Nginx esté instalado, cree un archivo de configuración de host virtual de Nginx con el siguiente comando:

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

Agregue las siguientes líneas:

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

Guarde y cierre el archivo, luego verifique el archivo de configuración de Nginx con el siguiente comando:

nginx -t

Deberías obtener el siguiente resultado:

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

Finalmente, reinicie el servicio Nginx para aplicar los cambios:

systemctl restart nginx

También puede verificar el estado de Nginx con el siguiente comando:

systemctl status nginx

Deberías obtener el siguiente resultado:

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

Acceder a la interfaz web de Nexus

Antes de acceder a la interfaz de usuario web de Nexus, imprime la contraseña de administrador de Nexus con el siguiente comando:

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

Deberías obtener el siguiente resultado:

b7c899cf-c6d3-4d11-a4cb-9a44e5d1787e

Ahora, abra su navegador web y acceda a la interfaz de usuario web de Nexus usando la URL http://nexus.ejemplo.com. Será redirigido a la siguiente página:

Interfaz gráfica de usuario del nexo

Ahora, haga clic en el Iniciar sesión botón. Será redirigido a la página de inicio de sesión de Nexus:

Acceso

Proporcione su nombre de usuario y contraseña de administrador y haga clic en el Iniciar sesión botón. Debería ver la página de configuración de Nexus:

Asistente de configuración

Haga clic en el próximo botón para continuar. Deberías ver la siguiente página:

Establecer nueva contraseña

Establezca su nueva contraseña y haga clic en el próximo botón. Deberías ver la siguiente página:

Configurar el acceso anónimo

Seleccione la opción «Habilitar acceso anónimo» y haga clic en el próximo botón. Deberías ver la siguiente página:

Instalación completa

Haga clic en el Finalizar para completar la configuración y haga clic en el botón Engranaje de ajuste icono. Deberías ver el panel del repositorio de Nexus:

Panel de control del Administrador de repositorios de Nexus

Conclusión

¡Felicidades! Ha instalado correctamente el administrador de repositorios Nexus con Nginx como proxy inverso en el servidor Ubuntu 20.04. No dude en preguntarme si tiene alguna pregunta.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *