Configurar SonarQube para que inicie como servicio en Linux

2020-01-06 Static Code Analysis
Tags   SonarQube 8

Después de instalar SonarQube y configurar una base de datos dedicada el último paso para ti probablemente sea configurarlo como servicio para que inicie con el sistema operativo. Si aún no has instalado SonarQube te recomendamos leer los siguientes post.

- Instalación SonarQube
- Configurar PostgreSQL en SonarQube

Init.d

Una vez hecho esto es cuestión de crear el archivo /etc/init.d/sonarqube de configuración del servicio y agregar el siguiente contenido.

#! /bin/sh
/usr/bin/sonarqube $*

Posterior a esto, debes crear un enlace simbólico a los ejecutables del sistema y darle los permisos adecuados.

sudo ln -s /var/opt/sonarqube-8/linux-x86-64/sonar.sh /usr/bin/sonarqube
sudo chmod 755 /etc/init.d/sonarqube
sudo update-rc.d Sonarqube defaults

Después de esto puedes reiniciar el servidor y verificar que en efecto esté corriendo verificando el estado del servicio.

fermius@debian:~# service sonarqube status
● sonarqube.service
   Loaded: loaded (/etc/init.d/sonarqube; generated)
   Active: active (running) since Mon 2020-01-06 17:47:08 UTC; 13s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 644 ExecStart=/etc/init.d/sonarqube start (code=exited, status=0/SUCCESS)
    Tasks: 22 (limit: 2378)
   Memory: 188.6M
   CGroup: /system.slice/sonarqube.service
           ├─720 /var/opt/sonarqube-8/bin/linux-x86-64/./wrapper /var/opt/sonarqube-8/bin/linux-x86-64/../../conf/wrapper.conf wrapper.syslog.ident=SonarQube wrapper.pidfile=/var/opt/sonarqube-8/bin/linux
           └─722 java -Dsonar.wrapped=true -Djava.awt.headless=true -Xms8m -Xmx32m -Djava.library.path=./lib -classpath ../../lib/jsw/wrapper-3.2.3.jar:../../lib/common/sonar-webserver-8.1.0.31237.jar:../

Jan 06 17:47:07 debian-laravel systemd[1]: Starting sonarqube.service...
Jan 06 17:47:07 debian-laravel sonarqube[644]: Starting SonarQube...
Jan 06 17:47:08 debian-laravel sonarqube[644]: Started SonarQube.
Jan 06 17:47:08 debian-laravel systemd[1]: Started sonarqube.service.

SystemD

Otra forma de configurar este servicio con con systemd. Para esto deberás crear el archivo /etc/systemd/system/sonarqube.service y pegar el siguiente contenido.

[Unit]
Description=SonarQube service
After=syslog.target network.target

[Service]
Type=simple
User=sonarqube
Group=sonarqube
PermissionsStartOnly=true
ExecStart=/bin/nohup /usr/bin/java -Xms32m -Xmx32m -Djava.net.preferIPv4Stack=true -jar /var/opt/sonarqube-8/lib/sonar-application-8.1.0.31237.jar
StandardOutput=syslog
LimitNOFILE=65536
LimitNPROC=8192
TimeoutStartSec=5
Restart=always
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

En donde deberás cambiar dado el caso las variables respectivas a
- Java bin path (/usr/bin/java)
- SonarQube path (/var/opt/sonarqube-8)
- SonarQube user (sonarqube)
- SonarQube password (sonarqube)

Una vez hecho esto resta configurar el servicio.

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

Puedes verificar el estado del servicio con el siguiente comando.

systemctl status sonarqube

Si ha ocurrido algún error al iniciar el servicio puedes verificar el log de la siguiente manera.

journalctl -u sonarqube.service | tail -n 30

De esta manera podrás observar las últimas 30 líneas del log o las que sean necesarias.

Acerca de Darío Rivera

Author

Ingeniero de desarrollo en PlacetoPay , Medellín. Darío ha trabajado por más de 6 años en lenguajes de programación web especialmente en PHP. Creador del microframework DronePHP basado en Zend y Laravel.

Sólo aquellos que han alcanzado el éxito saben que siempre estuvo a un paso del momento en que pensaron renunciar.