Configurar SonarQube para que inicie como servicio en Linux
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.