Menjalankan Aplikasi Java Sebagai Service di Ubuntu


Saat bikin aplikasi java yang sudah berjalan, saya punya rencana untuk buat aplikasi ini sebagai service di ubuntu. Nah, permasalahannya adalah ada berbagai macam cara yang bisa digunakan menjadikan aplikasi java sebagai service di linux. Misalnya Java Service Wrapper, JSVC, YAJWS, dan masih banyak lagi. Namun, apa bisa dikata saya butuh yang cepat dari latar belakang keilmuwan saya, akhirnya pilihan jatuh ke daemon.

Langsung saja ke TKP….

Untuk bisa menjadikan Aplikasi Java anda berjalan sebagai daemon, langkah pertama yang perlu anda lakukan adalah install daemon dengan perintah sebagai berikut :

sudo apt-get install daemon

okey, jika instalasi sudah berjalan lancar, saya akan bahas secara singkat cara menggunakan daemon untuk menjadikan aplikasi sebagai services.
Membuat Sebuah Services (Start Services)

Perintah di bawah ini digunakan untuk menjalankan sebuah service.

sudo daemon --name="ngeping" -- ping localhost

Keterangan:
–name=”ngeping” –> digunakan untuk memberikan nama service yang dijalankan

— ping localhost –> adalah aplikasi yang akan dijadikan services

Jadi pada saat anda menuliskan perintah “sudo daemon –name=”ngeping” — ping localhost” pada terminal linux, daemon akan menjalankan aplikasi ping secara tersembunyi. Pertanyaan nya, bagaimana cara melihat hasil ping yang sedang berlangsung?
Begini perintahnya :

sudo daemon --name="ngeping" --output=/tmp/ping.log -- ping localhost
tail -f /tmp/ping.log

hasilnya kira-kira begini :

root@nunenuh:~/# tail -f /tmp/ping.log
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_req=1 ttl=64 time=0.077 ms
64 bytes from localhost (127.0.0.1): icmp_req=2 ttl=64 time=0.064 ms
64 bytes from localhost (127.0.0.1): icmp_req=3 ttl=64 time=0.056 ms
64 bytes from localhost (127.0.0.1): icmp_req=4 ttl=64 time=0.059 ms
64 bytes from localhost (127.0.0.1): icmp_req=5 ttl=64 time=0.065 ms
64 bytes from localhost (127.0.0.1): icmp_req=6 ttl=64 time=0.098 ms
^C

Mematikan Service Yang Telah Anda Buat

okey, jika barusan anda berhasil untuk membuat sebuah service, selanjutnya adalah cara mematikan nya. Untuk mematikan sebuah service yang telah anda buat. Perintahnya adalah sebagai berikut:

sudo daemon --name="ngeping" --stop

Okey perinah diatas digunakan untuk mematikan service yang telah anda buat, tapi bagaiman cara melihat services yang telah anda buat sudah tidak aktif lagi?

Melihat Status Service Yang Telah Anda Buat

Cara untuk mengetahui services yang anda jalankan masih berjalan atau sudah tidak aktif adalah dengan menggunakan perintah –running yang dipadukan dengan –verbose, berikut ini perintahnya :

sudo daemon --name="ngeping" --pidfile=/var/run/ngeping.pid --running --verbose

hasilnya kira-kira sebagai berikut :

root@nunenuh:~/# daemon --name="ngeping" --pidfile=/var/run/ngeping.pid --running --verbose
daemon: ngeping is running (pid 30224)

Pada perintah diatas anda bisa melihat ada perintah “–pidfile=/var/run/ngeping.pid”, perintah ini digunakan untuk menyatakan lokasi file Proccess-ID (PID) yang secara default pada ubuntu berada pada path /var/run. Sedangkan ngeping.pid secara automatis dibuat oleh daemon dengan perintah –name=”ngeping”, sehingga pada path /var/run/ aplikasi daemon membuat sebuah file dengan nama ngeping.pid.

Membuat Service untuk Aplikasi Java

Keetiga dasar diatas sangat penting untuk Anda ketahui sebelum memulai membuat sebuah file yang bisa digunakan untuk membuat service pada ubuntu. Langkah selanjutnya adalah membuat sebuah file untuk menjalankan service, tapi sebelumnya izinkan saya menjelaskan skenario kasusnya terlebih dahulu. Okey begini skenarionya :

  • Aplikasi Java yang sudah saya bangun memiliki nama server.jar
  • Lokasi file Aplikasi Java yang sudah saya bangun berada pada /opt/server/server.jar
  • JRE yang saya gunakan JRE 1.7

Supaya lebih singkat penulisan saya, lihat script dibawah ini :

#!/bin/sh

#----------------------
# InitScript untuk Server
#----------------------
# Script ini digunakan untuk mengontrol server
# Author Lalu Erfandi Maula Yusnu

#--------------------
#PERSIAPAN
#--------------------
#konfigurasi script
ServiceName="server"
ServiceHome="/opt/server"
ServiceFile="$ServiceHome/$ServiceName.jar"
ServiceLogFile="/var/log/$ServiceName.log"
ServicePidFile="/var/run/$ServiceName.pid"

#command for running epanel
javaCmd="java -jar"
javaRunCmd="$javaCmd $ServiceFile"
dName="--name=$ServiceName"
dLog="--output=$ServiceLogFile"
dPid="--pidfile=$ServicePidFile"

#------------------
# AKHIR PERSIAPAN
#------------------

#-----------------------
# PENDEFINISIAN FUNGSI-FUNGSI
#-----------------------

daemon_start(){
	sudo daemon $dName $dLog $dPid --unsafe -- $javaRunCmd
	echo "Starting server service..."
}

daemon_stop(){
	sudo daemon $dName --stop -- $javaRunCmd
	echo "Stopping server service..."
}

daemon_restart(){
	daemon_stop
	daemon_start
	echo "Restarting server service complete..."
}

daemon_status(){
	sudo daemon $dName $dPid --running --verbose
}

#-----------------------------------
# AKHIR PENDEFINISIAN FUNGSI-FUNGSI
#-----------------------------------

#-----------------------
# IN ACTION
#-----------------------

case "$1" in
	start)
		daemon_start
	;;
	stop)
		daemon_stop
	;;
	restart)
		daemon_restart
	;;
	status)
		daemon_status
	;;
	*)
		echo "Usage: $0 {start|stop|restart|status}"
		exit 1
esac

exit 0

Setelah script diatas seleasi ditulis, maka langkah selanjutnya memindahkan file ini ke path /etc/init.d/server dan memberikan izin eksekusi dengan perintah chmod +x server.
Jika masih bingung silahkan posting comment untuk memperjelas maksud perintah diatas… sekian dan terima kasih…

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s