DEV Community

Shakhzhakhan Maxudbek
Shakhzhakhan Maxudbek

Posted on • Originally published at args.tech

Deploy Java Spring boot project as systemd service

How to run Java Spring Boot based web application in Linux? You may just run in terminal:

java -jar /home/user/your_project_name/your_project_name.jar
Enter fullscreen mode Exit fullscreen mode

Note: in this case you can't escape from terminal.

Second way - using nohup:

nohup java -jar /home/user/your_project_name/your_project_name.jar &
Enter fullscreen mode Exit fullscreen mode

Ok, it works, but better way for run your application, especially at production server - create systemd service for fully control them (start, stop, see status, etc...).

We need to install Java Development Kit (JDK). Install opensource version on Debian-based systems:

sudo apt install openjdk-17-jdk -y
Enter fullscreen mode Exit fullscreen mode

Oracle Java official installers here.

Now find JAVA binary file's full path:

which java
Enter fullscreen mode Exit fullscreen mode

You must see output like this:

/usr/bin/java
Enter fullscreen mode Exit fullscreen mode

We use this path when configure systemd file.

Create service file for your project:

sudo nano /etc/systemd/system/your_project_name.service
Enter fullscreen mode Exit fullscreen mode

Insert below configuration:

[Unit]
Description=Webserver daemon

[Service]
ExecStart=/usr/bin/java -jar /home/user/your_project_name/your_project_name.jar --spring.profiles.active=production --spring.config.location=/home/user/your_project_name/application.properties
User=user

[Install]
WantedBy=multi-user.target
Enter fullscreen mode Exit fullscreen mode

After you save daemon file, reload systemd manager configuration:

sudo systemctl daemon-reload
Enter fullscreen mode Exit fullscreen mode

Reload the systemd manager configuration. This will rerun all generators (see systemd.generator(7)), reload all unit files, and recreate the entire dependency tree. While the daemon is being reloaded, all sockets systemd listens on behalf of user configuration will stay accessible.
This command should not be confused with the reload command. See documentation for more details.

Next step - start your service:

sudo systemctl start your_project_name.service
Enter fullscreen mode Exit fullscreen mode

Project run as service, but it can't start after system reboot. Here need enable autorun:

sudo systemctl enable your_project_name.service
Enter fullscreen mode Exit fullscreen mode

Top comments (0)