Contoh init script untuk Nginx

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. 🙂

Leave a Comment