Spring boot como serviço no linux

Como rodar aplicações JAVA como serviço SYSTEMD

Erick de Miranda Oliveira
3 min readNov 26, 2020

Iniciando:

  • Criar pasta do projeto, baixar projeto pronto
$ mkdir springBootAsService && cd springBootAsService && curl https://start.spring.io/starter.tgz -d dependencies=webflux,actuator | tar -xzvf -

Agora podemos fazer o build do projeto:

$ ./mvnw install

Para ver se tudo deu certo, basta ver se foi gerado um arquivo jar:

$ ls -l target/*.jar
-rw-r--r-- 1 root root 19463334 Nov 15 11:54 target/demo-0.0.1-SNAPSHOT.jar

Caso queira rodar localmente o projeto e testar os endpoints do actuator, basta inciar com:

$ java -jar target/*.jar

Testando os endpoints dos actuator:

$ curl localhost:8080/actuator | jq .

Agora que já temos nossa aplicação, vamos ao que precisaremos para rodar ela como serviço.

Vamos usar aqui SYSTEMD e você vai precisar estar logado como root.

Primeiro vamos criar uma pasta aonde vai conter o jar da aplicação e um script .sh. Aqui criei na home, mas pode ser em qualquer pasta:

$ mkdir ~/springboot-service$ cp ./target/demo-0.0.1-SNAPSHOT.jar ~/springboot-service/

Vamos criar então, nosso arquivo run-as-service.sh dentro dessa pasta também, com o seguinte conteúdo:

$ sudo vi ~/springboot-service/run-as-service.sh

Já podemos testa-lo, rodando o seguinte comando:

$ chmod 777 run-as-service.sh 
$ ./run-as-service.sh start & tail -f myService.out

Caso queira ver o status e/ou parar, só adicionar os parâmetros após o sh:

./run-as-service.sh status
./run-as-service.sh stop

Agora vamos criar um arquivo, que executará como serviço, chamado de SpringBootApp.service dentro de /etc/systemd/system/ com o conteúdo (se atente ao path, e subistitua para o seu path absoluto:

sudo vi /etc/systemd/system/spring-boot.service

E pronto! Agora podemos iniciar, ver status e parar o service com os seguintes comandos:

sudo systemctl start spring-boot.service
sudo systemctl status spring-boot.service
sudo systemctl stop spring-boot.service

--

--