Contoh init script untuk Nginx

By | September 10, 2020

Ternyata saya sudah lupa – lupa ingat setting init script untuk Nginx. Baru saya sadari saat menginstall web server untuk Nginx 1.9.6 dan dilengkapi ngx_pagespeed 1.9.32.10-beta dari GitHub ternyata tidak semudah itu dihidupkan bersamaan saat booting Linux. Haha. 😀 Akhirnya setelah beberapa kali membuat dan mengedit ketemu yang pas.

Membuat init script secara manual perlu dilakukan karena saya menginstall Nginx dari source code, jadi tidak otomatis dibuatkan seperti dari repository.

Ini saya menggunakan CentOS 6.7 dan selama distro Linux yang anda gunakan masih memakai SysInitV maka masih bisa diterapkan, dan pertama kita perlu membuat filenya:

nano /etc/init.d/nginx

Kemudian silahkan copy-paste kode dibawah:

#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /usr/local/nginx/conf/nginx.conf
# pidfile: /usr/local/nginx/logs/nginx.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ $NETWORKING = no ] && exit 0

nginx=/usr/local/nginx/sbin/nginx
prog=$(basename $nginx)

NGINX_CONF_FILE=/usr/local/nginx/conf/nginx.conf

lockfile=/var/lock/subsys/nginx

start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
echo -n $Starting $prog:
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}

stop() {
echo -n $Stopping $prog:
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}

restart() {
configtest || return $?
stop
start
}

reload() {
configtest || return $?
echo -n $Reloading $prog:
killproc $nginx -HUP
RETVAL=$?
echo
}

force_reload() {
restart
}

configtest() {
$nginx -t -c $NGINX_CONF_FILE
}

rh_status() {
status $prog
}

rh_status_q() {
rh_status >/dev/null 2>&1
}

case $1 in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}
exit 2
esac

Simpan dan keluar dari editor nano. Mungkin yang peru anda perhatikan ada di bagian:

  1. nginx=/usr/local/nginx/sbin/nginx – Ini menunjukkan lokasi program nginx, ganti kalau di server anda bukan disini.
  2. NGINX_CONF_FILE=/usr/local/nginx/conf/nginx.conf – Sedangkan ini file konfigurasi nginx, ubah ke lokasi yang sesuai kalau berbeda.

Kemudian lanjutkan dengan:

chmod +x /etc/init.d/nginx
chmod 0755 /etc/init.d/nginx
chown root:root /etc/init.d/nginx

chkconfig nginx on

Setelah itu silahkan reboot dan cek apakah proses nginx sudah ikut dijalankan, lewat top juga bisa.

Oh ya, nanti anda tidak perlu melakukan ini untuk menjalankan nginx:

/usr/local/nginx/sbin/nginx start

Anda bisa langsung memanfaatkan perintah:

service nginx start
service nginx restart
service nginx reload

Selesai dan semoga bermanfaat. 🙂


Sumber https://servernesia.com