logoImagina
iconCurso
Te recomendamos nuestro curso de SonarQube
Descubre el curso de SonarQube
Ir al curso
Tabla de contenido
Descarga e instala SonarQube en Linux
¿Qué requisitos necesito?
JDK
MySQL
Descargar SonarQube
Creación de un usuario en Ubuntu
Configuración de SonarQube
Creación de un servicio en Linux
Ejecutar SonarQube
Acceder a SonarQube a través del Navegador
Parar SonarQube
Errores Comunes
Curso SonarQube
Descubre la formación a tu medida
Rellena el formulario para obtener más información sobre los cursos.
Tamaño de la empresa *
Términos y condiciones *

¿Cómo instalar SonarQube en Linux?

iconImage
Publicado 2024-03-07
Actualizado el 2024-03-21

Descarga e instala SonarQube en Linux

Hoy nos toca hablar de SonarQube. Una plataforma de software libre para evaluar código fuente que usa diversas herramientas de análisis estático de código fuente como Checkstyle, PMD o FindBugs. Con ello obtiene métricas que pueden ayudar a mejorar la calidad del código de un programa.

Si tu sistema operativo es Windows, te recomendamos nuestro tutorial de como descargar SonarQube en Windows. En este tutorial vamos a conocer cómo realizar la instalación de SonarQube en Linux utilizando Virtualbox, generando un Ubuntu (64 bits). La versión de este sistema operativo utilizada será la 18.10 cuya iso puedes conseguir en el siguiente enlace. Crearemos nuestro Ubuntu haciendo uso de Virtualbox y nos aseguraremos de que tiene al menos 4GB de RAM para asegurarnos de que SonarQube no nos de problemas de espacio al ser ejecutado.

¿Qué requisitos necesito?

Espacio Disponible

Como ya hemos comentado antes, es imprescindible tener espacio suficiente, por lo que debes asegurarte de tener como mínimo 4GB de RAM. Esto lo puedes comprobar en la configuración de tu máquina virtual. Concretamente en la sección de Sistema, debes asegurarte de que se cumple el valor en el valor de Memoria Base:

Pestaña configuración de la máquina virtual
Espacio disponible dentro de la pestaña Sistema

Para poder modificar este valor, debemos tener la máquina virtual parada. En caso de haberla abierto y tener que reconfigurarlo por no haberlo hecho en la creación de la misma, deberás apagar la máquina, cambiar el valor y reiniciarla.

Tener actualizado el apt-get

Para asegurarnos de que instalamos las últimas versiones en nuestra máquina, actualizaremos nuestro sistema con el siguiente comando

$ sudo apt-get update && apt-get upgrade

JDK

Uno de los requisitos para que SonarQube funcione correctamente, es el de instalar un JDK. En este caso descargaremos la última versión ejecutando:

$ sudo apt-get install default-jdk

MySQL

Para este tutorial haremos uso de MySQL, aunque podrías utilizar PostgresSQL, Oracle, etc. Para ello, ejecutaremos:

$ sudo apt install mysql-server

Una vez se haya instalado correctamente, deberemos ejecutar el archivo de instalación segura:

$ sudo mysql_secure_installation

Cuando ejecutemos esto, se nos mostrará una serie de opciones de configuración. La primera de las preguntas será acerca de si se quiere utilizar el plugin Validate Password que sirve para controlar que las contraseñas tengan una fortaleza mínima (baja, media y alta).

Para las siguientes preguntas que aparezcan diremos a todo que sí, para aceptar las opciones por defecto (borrar la tabla “test” ya que no la vamos a necesitar, deshabilitar los logins remotos y cargar estas reglas según los cambios que acabamos de definir).

A continuación, entraremos en MySQL con:

$ sudo mysql

para comprobar la tabla de usuarios y contraseñas:

mysql> SELECT user, authentication_string, plugin, host FROM mysql.user;

Esto debería mostrar una tabla como la siguiente:

Terminal que muestra la tabla de usuarios y contraseñas

Como se puede apreciar, el usuario root hace uso del plugin auth_socket para autenticarse. Para configurar que el usuario root se autentique con una contraseña, ejecutaremos el siguiente comando, sustituyendo “tuContraseña” por la contraseña que escojas:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'tuContraseña';

Seguido deberemos recargar las tablas con el siguiente comando:

Para asegurarnos de que todo ha ido correctamente, podremos ejecutar el mismo comando anterior y ver que la tabla ahora ya está lista:

Terminal que muestra la tabla de usuarios y contraseñas actualizada

Para salir, simplemente deberemos ejecutar el comando exit:

Nuestro siguiente paso será el de crear un usuario, que usaremos más adelante, al que llamaremos SonarQubeen MySQL. Dado que ahora el usuario root se autentica con la contraseña que hayamos definido, deberemos iniciar mysql con el usuario root y meter la contraseña:

$ mysql -u root -p

Una vez estemos dentro de MySQL, crearemos una tabla llamada sonar a través de CREATE y justo después indicaremos que queremos hacer uso de esa tabla con USE:

mysql> CREATE DATABASE sonar;

mysql> USE sonar;

Cuando tengamos esto, crearemos el usuario de la siguiente manera (cambiandoSonarContraseña por la contraseña que desees, siempre y cuando cumpla con los requisitos que hayas configurado - baja, media o alta):

mysql> CREATE USER 'sonarqube'@'localhost' IDENTIFIED BY 'SonarContraseña';

Cuando se haya creado con éxito, le daremos a este usuario todos los privilegios necesarios con:

mysql> GRANT ALL PRIVILEGES ON sonar.* to 'sonarqube'@'localhost';

Para salir, simplemente deberemos ejecutar el comando exit:

mysql> exit

Descubre la formación a tu medida
Rellena el formulario para obtener más información sobre los cursos.
Tamaño de la empresa *
Términos y condiciones *

Descargar SonarQube

Una vez configurada nuestra máquina virtual, accederemos a ella y nos descargaremos el zip que nos ofrece SonarQube. Para este tutorial se utilizará la última versión estable disponible: 7.4.

Cuando lo hayamos descargado, nos aseguramos de descomprimirlo. Dentro de esta carpeta encontraremos tres carpetas clave para este tutorial: binconf y logs:

Vista de carpetas

Carpeta bin

En esta carpeta encontraremos los distintos ejecutables para los diferentes SSOO (Windows, Linux, Mac).

Carpeta BIN en MAC

Para este tutorial haremos uso del archivo sonar.h que se encuentra en la carpeta linux-x86-64.

Archivo sonar.sh

Carpeta conf

En esta carpeta dispondremos del archivo principal de configuración de SonarQube. Este archivo se llama: sonar.properties que más adelante tendremos que modificar algunas de sus líneas para hacerlo funcionar correctamente:

Contenido de la carpeta conf

Carpeta logs

En esta carpeta encontraremos los diferentes archivos de Log que se generan al lanzar SonarQube. Por ello, debe tener en cuenta esta carpeta y si a lo largo del tutorial tuvieras algún fallo, acude aquí y analiza los diferentes archivos de log que se hayan creado.

Contenido de la carpeta logs

Luego comentaremos los distintos errores que pudiéramos tener y en qué logs se presentarían.

Creación de un usuario en Ubuntu

Desde las últimas versiones de SonarQube, éste no se puede ejecutar como root, por lo que debemos crear un usuario que será el que utilicemos para ejecutar el script de SonarQube.

Crearemos un usuario llamado sonar al que tendremos que dar todos los permisos necesarios para leer y modificar archivos en nuestra carpeta de SonarQube. Deberás cambiar donde pone ruta_a_sonarqube por la ruta donde tengas alojado el contenido de la carpeta descomprimida de SonarQube.

Por ejemplo:/home/usuario/Escritorio/sonarqube-7.4)

$ sudo groupadd gsonar

$ useradd -c "Usuario Sonar" -d ruta_a_sonarqube -g gsonar -s /bin/bash usonar

Cambiamos la propiedad de la carpeta (recursivamente con -R, es decir, que se aplique a todos los archivos que hay en sun interior) de SonarQube:

$ chown -R usonar:gsonar ruta_a_sonarqube

Cuando tengamos esto, ya podremos dar paso a la configuración de SonarQube.

Configuración de SonarQube

sonar.properties

En este punto, vamos a modificar el archivo sonar.properties que encontramos en la carpeta conf. Podremos modificarlo a través de un editor de texto o a través de la herramienta vim. Si quieres hacer uso de ella deberás instalarla:

$ sudo apt install vim

Para modificar un archivo con vim simplemente tendremos que navegar a través de la consola a la carpeta conf y ejecutar el comando:

$ sudo vim sonar.properties

Tanto si lo modificas con vim o un editor de texto de tu elección, deberás realizar una serie de cambios en este fichero:

Sonar JDBC username

En este campo debes colocar el nombre el usuario que hayas definido en MySQL. En el caso de este tutorial, el usuario se llama SonarQube<, por lo que debes descomentar (quitar el símbolo #) la línea 16 donde está la propiedad sonar.jdbc.username y darle dicho valor:

sonar.jdbc.username=sonarqube

Sonar JDBC password

En este campo debes colocar la contraseña que hayas definido en MySQL. En el caso de este tutorial, el usuario era la que pusiste en vez de SonarContraseña al crear el usuario de SonarQube, por lo que debes descomentar (quitar el símbolo #) la línea 17 donde está la propiedad sonar.jdbc.password y darle dicho valor:

sonar.jdbc.password=SonarContraseña

Otras configuraciones opcionales de interés

Podríamos descomentar la configuración de la url donde se despliega MySQL que se encuentra en la línea 28 donde se encuentra la propiedad sonar.jdbc.url si tuviéramos que redefinir un puerto concreto.

Vista de la terminal sonar.jdbc.url

De la misma manera que podríamos descomentar la IP por defecto donde se lanzará SonarQube (localhost) en la línea 108, donde encontrarás la propiedad: sonar.web.host.

Vista de la terminal sonar.web.host

El puerto por defecto donde se despliega SonarQube será el 9000, pero podríamos modificarlo si descomentamos y modificamos la línea 114 del fichero de propiedades donde se encuentra la propiedad sonar.web.port. Aquí también podremos modificar el contexto a través de la propiedad sonar.web.context que deberá comenzar con /. En este tutorial se propone utilizar /sonarqube:

Terminal con SonarQube iniciado

sonar.sh

Este archivo se encuentra en la carpeta bin>linux-x86-64 como vimos al comienzo del tutorial. En este archivo es donde realizaremos la configuración acerca del usuario que va a ejecutar SonarQube.

Como hemos comentado más arriba, SonarQube ya no permite ser ejecutado como root (es decir, ya no podemos emplear sudo para ejecutarlo), de manera que utilizaremos el usuario del sistema que creamos en el paso anterior: sonar.

Deberemos abrir este archivo y acudir a la línea 48 y modificar la propiedad RUN_AS_USER para darle el valor de sonar:

Creación de un servicio en Linux

Una vez hayamos configurado tanto el archivo sonar.properties como el archivo sonar.h, estaremos casi listos para ejecutar SonarQube, pero antes, vamos a crear un servicio en init.d de nuestro Ubuntu para poder ejecutarlo desde ahí.

Para hacer esto, crearemos una copia del archivo de sonar.sh. Deberemos desplazarnos a nuestra carpeta de SonarQube donde se encuentra la carpeta bin y realizaremos el comando de la siguiente manera:

$ sudo cp bin/linux-x86-64/sonar.sh /etc/init.d/sonar

Ahora nos encargaremos de modificar este archivo, donde deberemos modificar algunos puntos. Para ello haremos uso de vim:

$ sudo vim /etc/init.d/sonar

WRAPPER_CMD

Esta es la propiedad que define la ruta que accede al wrapper de SonarQube. Se encuentra de dentro de la carpeta bin/linux-x86-64 por lo que modificaremos este valor ya sea hardcodeado (poniendo la ruta completa) o haciendo uso de alguna variable que defina la ruta parcial (por ejemplo SONAR_HOME para la ruta raíz de sonar y plataforma de sonar que se quiere implementar con PLATFORMA)para después sustituirlo con ${SONAR_HOME} y ${PLATFORMA} en la propiedad WRAPPER_CMD que encontrarás en la línea 26 del archivo.

WRAPPER_CMD="${SONAR_HOME}/bin/${PLATFORMA}/wrapper"

WRAPPER_CONF

En la línea 17 encontrarás la propiedad WRAPPER_CONF que define la ruta donde se encuentra el archivo de configuración del wrapper (se encuentra en la carpeta conf). De la misma manera que antes, editaremos esta propiedad con la ruta adecuada:

WRAPPER_CONF="${SONAR_HOME}/conf/${PLATFORMA}/wrapper.conf"

Nota: Si al iniciar SonarQube salta algún error acerca de estas rutas, simplemente acude a este archivo y asegúrate de que estén bien descritas.

PPDIR

En este punto debemos crear una carpeta bajo la ruta /var/run, a la que llamaremos, por ejemplo, sonardaemon. Realizamos esto, dado que /var/run únicamente la puede ejecutar el usuario root del sistema. Por ello, debemos definir el archivo pid donde se almacenará el id del programa en ejecución (SonarQube).

Para ello ejecutaremos el comando mkdir y también chown para darle todos los permisos a nuestro usuario sonar:

$ sudo mkdir /var/run/sonardaemon$ sudo chown usonar:gsonar /var/run/sonardaemon

Debemos modificar también la propiedad PPDIRy darle el valor /var/run/sonardaemon

Nota: Asegúrate de que la propiedad RUN_AS_USER sigue siendo usonar.

Nota 2: Para cerrar vim y guardar los cambios, simplemente pulsa ESC y seguido teclea 😡 para finalizar pulsando ENTER. Esto cerrará el archivo y guardará aquellas modificaciones que hayas realizado.

Para acabar eliminaremos los startup links que haya en /etc/init.d/sonar y le daremos todos los permisos (755 = permiso rwx). Finalmente, haremos una actualización para que se persistan todos los cambios:

$ sudo update-rc.d -f sonar remove$ sudo chmod 755 /etc/init.d/sonar$ sudo update-rc.d sonar defaults

[/vc_column_text][/vc_column_inner][/vc_row_inner][vc_row_inner][vc_column_inner][vc_column_text]

Ejecutar SonarQube

Llegamos al final de tutorial que consiste en ejecutar el servicio que inicia sonar y comprobar que en efecto se realizar correctamente. Con todo configurado como hemos comentado, deberías ser capaz de ejecutar el servicio de la siguiente manera:

$ sudo /etc/init.d/sonar start

El sistema te pedirá una contraseña, que no es otra que la que le hayas dado al usuario de sistema “sonar” y que has definido como RUN_AS_USER en el servicio.

Nota: La inicialización puede tardar un poco. A pesar de que salga el mensaje Started SonarQube puede que aún no haya acabado de desplegarlo. Puedes acudir a los logs generados en la carpeta de logs y ver si se están actualizando para saber que aún no ha acabado el proceso. Los más interesantes serían: sonar.loges.log y web.log (En este orden).

Logs generados

Podemos asegurarnos del estado de SonarQube para saber si todo ha ido bien con el comando:

$ sudo /etc/init.d/sonar status

SonarQube is running

Acceder a SonarQube a través del Navegador

Una vez llegado a este punto, SonarQube estará listo para comprobarlo e interactuar con él a través del navegador.

Simplemente abre una pestaña nueva y escribe la dirección http:// localhost:9000/sonarqube (Siempre y cuando hayas definido el sonar.web.context como sonarqube. Si has definido otro, indícalo o si no has definido ninguno, simplemente accede al puerto 9000 de localhost)

Pantalla de Localhost de Sonarqube

Podrías registrarte con el usuario que se crea por defecto (usuario = admin y contraseña = admin) desde el botón de login:

Login a SonarQube

Al acceder, podrás ver el dashboard inicial de SonarQube:

Dashboard Inicial Sonarqube

Parar SonarQube

Para detener SonarQube, simplemente debes hacer uso del comando stop:

$ sudo /etc/init.d/sonar stop
Terminal con SonarQube parado

Errores Comunes

Con la configuración que hemos definido en este tutorial no debería haber problemas a la hora de inicializar SonarQube, pero si por alguna razón hubiera algún problema, aquí listamos un par de errores comunes:

Error por consola: Failed to Start

Este error puede darse porque estés intentando iniciar sonar con permisos de root (es decir, estás implementando sudo en la sentencia).

Solución: Asegúrate de que has implementado correctamente el RUN_AS_USER y que éste tiene todos los permisos necesarios sobre la carpeta de sonar.

Error en logs: OutOfMemory

Este error puede darse porque no hayas configurado correctamente la máquina virtual.

Solución: Apaga la máquina virtual y desde Virtualbox accede a la configuración de su sistema y amplía su Memoria Base.

Curso SonarQube

No pierdas la oportunidad de mejorar tus habilidades de programación y aprende a utilizar SonarQube de manera efectiva con nuestro curso especializado. ¡Contáctanos para obtener más información!

Descubre la formación a tu medida
Rellena el formulario para obtener más información sobre los cursos.
Tamaño de la empresa *
Términos y condiciones *
iconClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClient