SonarQube es una plataforma de sistema de gestión de calidad gratuita y de código abierto que se puede utilizar para automatizar la inspección de código. Puede analizar archivos de código fuente, calcular un conjunto de métricas y mostrar el resultado en el panel basado en la web. Está escrito en lenguaje Java y también es compatible con otros lenguajes como Perl, PHP y Ruby. De forma predeterminada, SonarQube admite la base de datos h2, pero no es escalable. Así que puedes integrar SonarQube con otros servidores de bases de datos como MSSQL, PostgreSQL, Oracle y MySQL. SOnarQube viene con muchos complementos, que integrarán el código fuente automáticamente desde los repositorios. Permite a los desarrolladores detectar errores y vulnerabilidades, así como disminuir los olores del código, en más de 20 idiomas diferentes. Puede integrar fácilmente SolarQube con los entornos de desarrollo Eclipse, Visual Studio e IntelliJ IDEA a través de los complementos de SonarLint.
En este tutorial, aprenderemos cómo instalar SonarQube en un servidor Ubuntu 16.04.
Requisitos
- Instalación de un nuevo servidor Ubuntu 16.04 en su sistema.
- Mínimo 4 GB de RAM.
- Un usuario no root con privilegios sudo.
Cómo empezar
Antes de comenzar, se recomienda actualizar su sistema base con la última versión. Puede hacerlo ejecutando el siguiente comando:
sudo apt-get update -y
sudo apt-get upgrade -y
Después de actualizar su sistema, puede proceder a instalar Java.
1 Instalar Java
Sonarqube es una aplicación basada en Java, por lo que primero deberá instalar Java 8. Por defecto, Java 8 no está disponible en el repositorio de Ubuntu. Puede instalar Java 8 agregando el repositorio PPA webupd8team a su sistema.
Primero, agregue el PPA ejecutando el siguiente comando:
sudo add-apt-repository ppa:webupd8team/java
A continuación, actualice el repositorio con el siguiente comando:
sudo apt-get update -y
Una vez que el repositorio esté actualizado, puede instalar Java 8 ejecutando el siguiente comando:
sudo apt-get install oracle-java8-installer -y
Después de instalar Java, puede verificar la versión de Java con el siguiente comando:
java -version
Debería ver el siguiente resultado:
Java version "1.8.0_91" Java(TM) SE Runtime Environment (build 1.8.0_91-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
Una vez que haya terminado, puede continuar con el siguiente paso.
2 Instalar Apache y MariaDB
También deberá instalar Apache y MariaDB, porque usaremos Apache para el proxy inverso y MariaDB como base de datos. Puede instalar ambos ejecutando el siguiente comando:
sudo apt-get install apache2 mariadb-server -y
Una vez completada la instalación, inicie el servicio Apache y MariaDB y habilítelos para que se inicien en el arranque con el siguiente comando:
sudo systemctl start apache2
sudo systemctl enable apache2
sudo systemctl start mysql
sudo systemctl enable mysql
Una vez que Apache y MariaDB estén instalados y funcionando, puede continuar con el siguiente paso.
3 Configurar MariaDB
De forma predeterminada, la instalación de MariaDB no está protegida, por lo que deberá proteger la instalación de MariaDB. Puede hacer esto ejecutando el script mysql_secure_installation:
sudo mysql_secure_installation
En este proceso, se le pedirá que configure la contraseña de root, elimine usuarios anónimos, no permita el inicio de sesión de root de forma remota y elimine la base de datos de prueba. Responda todas las preguntas como se muestra a continuación:
Enter current password for root (enter for none): Change the root password? [Y/n] n Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
Una vez que MariaDB esté protegido, inicie sesión en el shell de MariaDB con el siguiente comando:
mysql -u root -p
Ingrese su contraseña raíz cuando se le solicite, luego cree una base de datos para SonarQube:
MariaDB [(none)]> CREATE DATABASE sonardb;
A continuación, cree un nuevo usuario de base de datos y proporcione los privilegios apropiados a su usuario de base de datos sobre la base de datos que ha creado.
MariaDB [(none)]> GRANT ALL PRIVILEGES ON sonardb.* TO 'sonar'@'localhost' IDENTIFIED BY 'yourpassword';
A continuación, aplique los cambios a los privilegios de la base de datos con el siguiente comando:
MariaDB [(none)]> FLUSH PRIVILEGES;
Finalmente, salga del shell de MariaDB con el siguiente comando:
MariaDB [(none)]> \q
Una vez que la base de datos esté configurada, puede continuar con el siguiente paso.
4 Instalar SonarQube
Puede descargar la última versión de SonarQube desde su sitio web oficial. Puede descargarlo con el comando wget:
wget https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-6.4.zip
Una vez que se complete la descarga, descomprima el archivo descargado usando el siguiente comando:
sudo unzip sonarqube-6.4.zip -d /opt
A continuación, cambie el nombre del directorio con el siguiente comando:
sudo mv /opt/sonarqube-6.4 /opt/sonar
A continuación, deberá modificar el archivo de configuración principal de SonarQube sonar.properties:
sudo nano /opt/sonar/conf/sonar.properties
Realice los siguientes cambios:
##Database User credentials: sonar.jdbc.username=sonar sonar.jdbc.password=yourpassword sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
Guarde y cierre el archivo, luego cree un archivo de servicio systemd para SonarQube.
sudo nano /etc/systemd/system/sonar.service
Agregue las siguientes líneas:
[Unit] Description=SonarQube service After=syslog.target network.target [Service] Type=forking ExecStart=/opt/sonar/bin/linux-x86-64/sonar.sh start ExecStop=/opt/sonar/bin/linux-x86-64/sonar.sh stop User=root Group=root Restart=always [Install] WantedBy=multi-user.target
Guarde el archivo cuando haya terminado, luego inicie el servicio de SonarQube y habilítelo para que se inicie en el arranque con el siguiente comando:
sudo systemctl start sonar
sudo systemctl enable sonar
El proceso de SonarQube tarda un tiempo en finalizar para crear la base de datos y completar los datos. Puedes comprobar el estado de SonarQube con el siguiente comando:
sudo systemctl status sonar
También puede monitorear el proceso mirando el contenido del archivo /opt/sonar/logs/sonar.log. Una vez que haya terminado, puede continuar con el siguiente paso.
5 Configure Apache como proxy inverso
De forma predeterminada, SonarQube escucha en el puerto 9000. Aquí, usaremos apache como proxy inverso para que se pueda acceder a SonarQube mediante el puerto 80:
Primero, habilite el módulo proxy de apache con el siguiente comando:
sudo a2enmod proxy
sudo a2enmod proxy_http
A continuación, cree un nuevo archivo de host virtual para SonarQube con el siguiente comando:
sudo nano /etc/apache2/sites-available/sonar.conf
Agregue las siguientes líneas:
<VirtualHost *:80> ServerName 192.168.15.189 ServerAdmin [email protected] ProxyPreserveHost On ProxyPass / http://localhost:9000/ ProxyPassReverse / http://localhost:9000/ TransferLog /var/log/apache2/sonar_access.log ErrorLog /var/log/apache2/sonar_error.log </VirtualHost>
Guarde y cierre el archivo, luego habilite el nuevo host virtual ejecutando el siguiente comando:
sudo a2ensite sonar
Finalmente, reinicie el servicio de apache con el siguiente comando:
sudo systemctl restart apache2
6 Acceder a la interfaz web de SonarQube
Todos los componentes necesarios están instalados y configurados. Ahora es el momento de acceder a la interfaz web de SonarQube.
Antes de acceder, deberá permitir el puerto 80 a través del firewall UFW. De manera predeterminada, UFW está deshabilitado en Ubuntu, por lo que deberá habilitarlo primero. Puede habilitarlo ejecutando el siguiente comando:
sudo ufw enable
Una vez que el firewall UFW está habilitado, puede permitir el puerto 80 a través de UFW ejecutando el siguiente comando:
sudo ufw allow 80/tcp
Ahora puede comprobar el estado del cortafuegos UFW ejecutando el siguiente comando:
sudo ufw status
Ahora, abra su navegador web y vaya a la URL http://192.168.15.189 , debería ver la siguiente pantalla:
Ahora, haga clic en el botón "Iniciar sesión", debería ver la siguiente pantalla:
Inicie sesión con el nombre de usuario predeterminado como "admin" y la contraseña como "admin", debería ver la siguiente pantalla:
Una vez que haya iniciado sesión en el panel de control de SonarQube, haga clic en el botón Administración> Sistema> Información del sistema. Debería ver la información actual del sistema en la siguiente pantalla:
A continuación, haga clic en el botón Administración> Sistema> Centro de actualizaciones, debería ver todos los complementos instalados en la siguiente pantalla:
Aquí puede actualizar los complementos existentes y también instalar los complementos disponibles. Después de instalar o actualizar los complementos necesarios, deberá hacer clic en el botón "Reiniciar" para reiniciar el sistema y actualizar los cambios.
Conclusión
En el tutorial anterior, aprendimos a instalar SonarQube en Ubuntu 16.04 y al uso básico de SonarQube. Ahora puede implementarlo fácilmente en el entorno de producción. Siéntete libre de comentarme si necesitas ayuda.