Cómo instalar SonarQube en Ubuntu 22.04

SonarQube o antes Sonar es una plataforma de código abierto para el análisis estático de código y la seguridad del código. Te permite realizar análisis estáticos de código y calidad del código para detectar errores y mejorar la seguridad de las aplicaciones. También proporciona informes como código duplicado, normas de codificación, complejidad del código y recomendaciones de seguridad.

Con SonarQube, puedes automatizar el análisis estático de código para 29 lenguajes de programación. Puedes integrar fácilmente SonarQube con tus herramientas CI/CD existentes, como Jenkins, Azure DevOps, o IDE como IntelliJ y Visual Code Studio.

En esta guía, aprenderás a instalar el análisis estático de código SonarQube en el servidor Ubuntu 22.04. También aprenderás a instalar PostgreSQL, que se utilizará como base de datos para SonarQube, y el servidor web Nginx, que se utilizará como proxy inverso.

Requisitos previos

Antes de empezar esta guía, debes tener lo siguiente:

  • Un servidor Ubuntu 22.04 con el cortafuegos UFW activado.
  • Un usuario no root con privilegios sudo/administrador.
  • Un nombre de dominio apuntando a la dirección IP del servidor Ubuntu.

Instalar Java OpenJDK

Tu primer paso aquí es instalar el OpenJDK de Java en tu sistema Ubuntu. El servidor SonarQube requiere que Java OpenJDK v11 esté instalado en tu máquina Linux.

Antes de empezar a instalar paquetes, ejecuta el siguiente comando apt para actualizar y refrescar tu repositorio de índice de paquetes de Ubuntu.

sudo apt update

A continuación, instala Java OpenJDK v11 mediante el siguiente comando apt. La versión OpenJDK por defecto en el último Ubuntu 22.04 es Java OpenJDK v11.

Introduce Y cuando se te pida que confirmes la instalación y pulsa ENTER para continuar.

sudo apt install default-jdk

instalar java

Una vez instalado Java OpenJDK, comprueba la versión de Java utilizando el siguiente comando java. Verás la salida de la versión de Java que está instalada en tu sistema.

java -version

comprobar java

Instalación del sistema de base de datos PostgreSQL

SonarQube admite varios sistemas de bases de datos, como PostgreSQL, Microsoft SQL Server y la base de datos oracle. Para este ejemplo, utilizarás PostgreSQL como base de datos para tu instalación de SonarQube.

En el momento de escribir esto, la última versión de SonarQube requería al menos PostgreSQL v9.6. En esta guía, instalarás PostgreSQL v13 desde el repositorio oficial de PostgreSQL.

Primero, añade la clave GPG del repositorio PostgreSQL utilizando el siguiente comando.

wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -

Ahora, añade el repositorio PostgreSQL para el sistema Ubuntu utilizando el siguiente comando.

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'

A continuación, actualiza y refresca tu índice de paquetes de Ubuntu.

sudo apt update

añadir repositorio postgresql

Ahora, instala la base de datos PostgreSQL v13 mediante el siguiente comando apt. Introduce Y cuando se te pida que confirmes la instalación y pulsa INTRO para continuar.

sudo apt install postgresql-13

instalar postgresql

Una vez instalado PostgreSQL, ejecuta el siguiente comando para verificar el servicio ‘postgresql’ y asegurarte de que el servicio se está ejecutando.

sudo systemctl is-enabled postgresql
sudo systemctl status postgresql

Verás que el servicio ‘postgresql‘ está habilitado, lo que significa que se ejecutará automáticamente al arrancar el sistema. Y el estado actual del servicio ‘postgresql’ es en ejecución.

comprobar postgresql

Con el PostgreSQL instalado en tu servidor, estás listo para configurar una nueva base de datos y un nuevo usuario para el SonarQube a través del intérprete de comandos PostgreSQL.

Ejecuta el siguiente comando para iniciar sesión en el shell PostgreSQL.

sudo -u postgres psql

Ahora, ejecuta las siguientes consultas PostgreSQL para crear una nueva base de datos y un nuevo usuario para SonarQube. En este ejemplo, crearás la base de datos PostgreSQL y el usuario‘sonarqube‘. Y asegúrate de cambiar la contraseña por una contraseña segura.

CREATE USER sonarqube WITH PASSWORD 'Password';
CREATE DATABASE sonarqube OWNER sonarqube;
GRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonarqube;

crear base de datos

A continuación, ejecuta las siguientes consultas para comprobar la lista de bases de datos y usuarios en el servidor PostgreSQL.

\l
\du

Si tu base de datos y tu usuario están creados, verás la base de datos ‘sonarqube’ en la lista de bases de datos, y el usuario ‘sonarqube’ en la lista de usuarios.

comprobar base de datos y usuario

Por último, cierra la sesión en PostgreSQL utilizando la siguiente consulta.

\q

Configurar el sistema

Para instalar SonarQube en un sistema Linux, debes tener un usuario dedicado que vaya a ejecutar SonarQube y algunas configuraciones adicionales como ulimit y los parámetros del kernel.

Ahora, crearás un nuevo usuario para SonarQube, y configurarás los parámetros personalizados del kernel a través del archivo sysctl.conf, y configurarás ulimit.

Ejecuta el siguiente comando para crear un nuevo usuario‘sonarqube‘ en tu sistema.

sudo useradd -b /opt/sonarqube -s /bin/bash sonarqube

A continuación, abre el archivo /etc/sysctl. conf con el editor nano.

sudo nano /etc/sysctl.conf

Añade la siguiente configuración al final de la línea. El SonarQube requiere que el parámetro del kernel vm.max_map_count sea mayor que ‘524288‘ y que fx.file-max sea mayor que‘131072‘.

vm.max_map_count=524288
fs.file-max=131072

Guarda el archivo y sal del editor cuando hayas terminado.

Ahora, ejecuta el siguiente comando sysctl para aplicar los nuevos cambios en el archivo ‘/etc/sysctl.conf’.

sudo sysctl --system

En la siguiente salida, puedes ver que se han aplicado los nuevos parámetros del kernel.

aplicar sysctl

Next, run the following command to set up ulimit for the SonarQube. This will take temporary effects on your system, when the system is rebooted, the ulimits will revert to default.
ulimit -n 131072
ulimit -u 8192

Para que la configuración de ulimit sea permanente, crea un nuevo archivo de configuración‘/etc/security/limits.d/99-sonarqube.conf‘ utilizando el siguiente comando.

sudo nano /etc/security/limits.d/99-sonarqube.conf

Añade la siguiente configuración al archivo.

sonarqube   -   nofile   131072
sonarqube   -   nproc    8192

Guarda el archivo y cierra el editor cuando hayas terminado.

Ahora que has completado la configuración de tu sistema Ubuntu para la instalación de SnonarQube. En el siguiente paso descargarás el paquete SonarQube y configurarás la instalación de SonarQube.

Descarga del paquete SonarQube

SonarQube puede instalarse de dos formas diferentes, mediante un archivo zip y una imagen Docker. En este ejemplo, instalarás SonarQube mediante el paquete de archivo zip que descargarás de la página oficial de descargas de SonarQube.

En el momento de escribir esto, la última versión de SonarQube es la v9.6.1, que instalarás en los siguientes pasos.

Antes de descargar el paquete SonarQube, ejecuta el siguiente comando apt para instalar un paquete básico como unzip y wget.

sudo apt install unzip software-properties-common wget

Ahora, descarga el paquete SonarQube mediante el siguiente comando wget.

wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.6.1.59531.zip

Una vez descargado SonarQube, verás el archivo zip‘sonarqube-9.6.1.59531.zip‘ en tu directorio de trabajo.

Extrae el paquete SonarQube utilizando el comando unzip que aparece a continuación. Deberías obtener un nuevo directorio ‘sonarqube-9.6.1.59531′ donde se almacena el paquete SonarQube.

unzip sonarqube-9.6.1.59531.zip

Mueve el directorio ‘sonarqube-9.6.1.59531′ al directorio‘/opt/sonarqube‘ utilizando el siguiente comando.

mv sonarqube-9.6.1.59531 /opt/sonarqube

Por último, cambia la propiedad del directorio de instalación de SonarQube ‘/opt/sonarqube’ al usuario ‘sonarquba’ mediante el comando chown como se indica a continuación.

sudo chown -R sonarqube:sonarqube /opt/sonarqube

Ahora ya has descargado el paquete SonarQube en el directorio de instalación‘/opt/sonarqube‘. A continuación, configurarás la instalación de SonarQube y, después, crearás un archivo de servicio systemd para SonarQube.

descargar sonarqube

Configurar SonarQube

Tras descargar el paquete SonarQube, configurarás la instalación de SonarQUbe editando el archivo de configuración por defecto ‘/opt/sonarqube/conf/sonar.properties’.

Añadirás los detalles de la base de datos PostgreSQL, establecerás el montón máximo de memoria para el proceso Elasticsearch, y configurarás el host web y el puerto para el servicio SonarQube mediante el archivo ‘/opt/sonarqube/conf/sonar.properties’. Y por último, configura SonarQube como un servicio systemd.

Ahora, abre el archivo de configuración de SonarQube ‘/opt/sonarqube/conf/sonar. properties’ utilizando el editor nano.

nano /opt/sonarqube/conf/sonar.properties

Para la configuración de la base de datos, descomenta algunas de las siguientes opciones y cambia el valor por defecto utilizando los detalles de tu base de datos.

sonar.jdbc.username=sonarqube
sonar.jdbc.password=Password

sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonarqube

Ahora, descomenta la siguiente configuración para establecer el tamaño máximo de memoria heap para el proceso elasticsearch. En este ejemplo, el heap máximo será de 512 MB.

sonar.search.javaOpts=-Xmx512m -Xms512m -XX:MaxDirectMemorySize=256m -XX:+HeapDumpOnOutOfMemoryError

Por último, descomenta y cambia las siguientes configuraciones para establecer la dirección IP y el puerto del SonarQube que se ejecutará. Además, el nivel de registro será ‘INFO» y se almacenará en el directorio ‘logs’ del directorio de instalación de SonarQube.

sonar.web.host=127.0.0.1
sonar.web.port=9000
sonar.web.javaAdditionalOpts=-server

sonar.log.level=INFO
sonar.path.logs=logs

Guarda el archivo y sal del editor cuando hayas terminado.

Cuando hayas terminado la configuración de SonarQube. Ahora, configurarás el archivo de servicio systemd para SonarQube. Esto te permitirá controlar fácilmente el proceso de SonarQube mediante el comando systemctl.

Ejecuta el siguiente comando para crear un nuevo archivo de servicio systemd‘/etc/systemd/system/sonarqube.service‘.

sudo nano /etc/systemd/system/sonarqube.service

Añade la siguiente configuración al archivo.

[Unit]
Description=SonarQube service
After=syslog.target network.target
[Service]
Type=forking
ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start
ExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stop
User=sonarqube
Group=sonarqube
Restart=always
LimitNOFILE=65536
LimitNPROC=4096

[Install]
WantedBy=multi-user.target

Guarda el archivo y sal del editor cuando hayas terminado.

Ahora, recarga el gestor systemd utilizando el siguiente comando.

sudo systemctl daemon-reload

Después, inicia y habilita el ‘sonarqube.service’ mediante el siguiente comando systemctl.

sudo systemctl start sonarqube.service
sudo systemctl enable sonarqube.service

configurar servicio sonarqube

Por último, comprueba el estado de «sonarqube.service» utilizando el siguiente comando y asegúrate de que se está ejecutando.

sudo systemctl status sonarqube.service

Verás el resultado en la siguiente captura de pantalla. El estado de ‘sonarqube.service’ es en ejecución, y también está habilitado, lo que significa que se ejecutará automáticamente al arrancar el sistema.

comprobar servicio sonarqube

Ahora que el SonarQube se está ejecutando como un servicio systemd, instalarás y configurarás un proxy inverso para el SonarQube que se ejecuta en localhost con el puerto por defecto TCP‘9000‘.

Ejecutar SonarQube con el proxy inverso

Tu instalación de SonarQube ya está en marcha, ahora puedes instalar el servidor web Nginx y configurar los bloques de servidor que se utilizarán como proxy inverso para SonarQube.

Ejecuta el siguiente comando apt para instalar el servidor web Nginx en tu sistema Ubuntu. Introduce Y cuando se te pida que confirmes la instalación y pulsa ENTER para continuar.

sudo apt install nginx

instalar nginx

Una vez instalado nginx, verifica el servicio nginx y asegúrate de que el estado del servicio es en ejecución mediante el comando systemctl como se indica a continuación.

sudo systemctl is-enabled nginx
sudo systemctl status nginx

Verás que el servicio nginx está habilitado, lo que significa que se ejecutará automáticamente al arrancar el sistema. Y el estado actual del servicio nginx es en ejecución.

comprobar nginx

Una vez que tengas el servidor web Nginx en ejecución, crearás una nueva configuración de bloques de servidor que se utilizará como proxy inverso para SonarQube.

Crea una nueva configuración de bloques de servidor ‘/etc/nginx/sites-available/sonarqube.conf’ utilizando el siguiente comando.

sudo nano /etc/nginx/sites-available/sonarqube.conf

Añade la siguiente configuración a tu archivo y asegúrate de cambiar el nombre de dominio.

server {
listen 80;
server_name sonar.hwdomain.io;
access_log /var/log/nginx/sonar.access.log;
error_log /var/log/nginx/sonar.error.log;
proxy_buffers 16 64k;
proxy_buffer_size 128k;

location / {
proxy_pass http://127.0.0.1:9000;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto http;
}
}

Guarda el archivo y sal del editor cuando hayas terminado.

A continuación, activa la configuración del bloque del servidor ‘sonarqube.conf’ creando un enlace simbólico de ese archivo al directorio‘/etc/nginx/sites-enabled‘. A continuación, verifica tus archivos de configuración de Nginx.

sudo ln -s /etc/nginx/sites-available/sonarqube.conf /etc/nginx/sites-enabled/
sudo nginx -t

Si tienes archivos de configuración de Nginx adecuados y correctos, deberías ver un mensaje de salida como«test is successfull».

Por último, ejecuta el siguiente comando systemctl para reiniciar el servicio nginx y aplicar la nueva configuración del bloque del servidor.

sudo systemctl restart nginx

Instalación de SonarQube

Una vez finalizada la configuración del proxy inverso para SonarQube, ahora puedes acceder a tu instalación de SonarQube a través de tu dominio y establecer algunas configuraciones básicas de SonarQube.

Abre tu navegador web y visita el nombre de dominio de tu instalación de SonarQube (por ejemplo: http://sonar.hwdomain.io).

Ahora aparecerá la página de inicio de sesión de SonarQube. Introduce el nombre de usuario y la contraseña por defecto admin/admin y haz clic en Iniciar sesión.

login sonarqube

Una vez que hayas iniciado sesión, se te pedirá que establezcas una nueva contraseña para SonarQube. Introduce la antigua contraseña admin, luego introduce la nueva contraseña fuerte y repite, luego haz clic en Actualizar.

cambiar contraseña

Ahora se te mostrará el panel de usuario de SonarQube en la siguiente captura de pantalla.

salpicadero sonarqube

Conclusión

En esta guía, has instalado SonarQube en el último servidor Ubuntu 22.04. Además, has completado la instalación básica de la base de datos PostgreSQL a través del repositorio oficial de PostgreSQL y has instalado el servidor web Nginx. Después, también has configurado el proxy inverso para el SOnarQube con bloques de servidor Nginx.

SonarQube ya está instalado en tu servidor Ubuntu. Ahora puedes añadir el proyecto que vas a analizar al SonarQube a través del repositorio git.

También te podría gustar...