# Quick Guide for auto start service

* [Reference](https://medium.com/@benmorel/creating-a-linux-service-with-systemd-611b5c8b91d6)

* [Reference 2](https://linuxconfig.org/how-to-create-systemd-service-unit-in-linux)

* [DZone](https://dzone.com/articles/run-your-java-application-as-a-service-on-ubuntu)

* create service script in `/etc/systemd/system/myserver.service`

  ```ini
  [Unit]
  Description=ROT13 demo service
  After=network.target
  StartLimitIntervalSec=0
  [Service]
  Type=simple
  Restart=always
  RestartSec=1
  User=centos
  ExecStart=/usr/bin/env php /path/to/server.php
  
  [Install]
  WantedBy=multi-user.target
  ```

* sample java application

  ```sh
  [Unit]
  Description=My Webapp Java REST Service
  [Service]
  User=ubuntu
  # The configuration file application.properties should be here:
  
  #change this to your workspace
  WorkingDirectory=/home/ubuntu/workspace
  
  #path to executable. 
  #executable is a bash script which calls jar file
  ExecStart=/home/ubuntu/workspace/my-webapp
  
  SuccessExitStatus=143
  TimeoutStopSec=10
  Restart=on-failure
  RestartSec=5
  
  [Install]
  WantedBy=multi-user.target
  ```

* script `/home/ubuntu/workspace/my-webapp`. Change to executable `sudo chmod u+x my-webapp`

  ```sh
  #!/bin/sh
  sudo /usr/bin/java -jar my-webapp-1.0-SNAPSHOT.jar server config.yml
  ```

  

  

* start service

  ```sh
  
  $ sudo systemctl start myserver.service
  
  // or 
  $ sudo systemctl start myserver
  ```

  

* to restart

  ```sh
  $ sudo systemctl restart myserver.service
  ```

  

* automatically start on boot

```sh
$ sudo systemctl enable myserver.service
```

* check active

  ```sh
  $ systemctl is-active myserver.service
  ```

* All services status

  ```sh
  $ service  --status-all
  ```

  

