centos下nginx啟動指令碼和chkconfig管理
阿新 • • 發佈:2019-01-22
在安裝完nginx後,重新啟動需要“kill -HUP nginx程序編號”來進行重新載入,顯然十分不方便。如果能像apache一樣,直接通過指令碼進行管理就方便多了。
nginx官方早就想好了,也提供了這個指令碼,地址:http://wiki.nginx.org/RedHatNginxInitScript。這裡將管理指令碼收錄在這裡:
#!/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: /etc/nginx/nginx.conf # config: /etc/sysconfig/nginx # pidfile: /var/run/nginx.pid # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ "$NETWORKING"= "no"] && exit0 nginx="/usr/sbin/nginx" prog=$(basename$nginx) NGINX_CONF_FILE="/etc/nginx/nginx.conf" [ -f /etc/sysconfig/nginx] && . /etc/sysconfig/nginx lockfile=/var/lock/subsys/nginx make_dirs() { # make required directories user=`$nginx -V 2>&1 | grep"configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -` if[ -z "`grep $user /etc/passwd`"]; then useradd-M -s /bin/nologin$user fi options=`$nginx -V 2>&1 | grep'configure arguments:'` foropt in$options; do if[ `echo$opt | grep'.*-temp-path'` ]; then value=`echo$opt | cut-d "="-f 2` if[ ! -d "$value"]; then # echo "creating" $value mkdir-p $value && chown-R $user $value fi fi done } start() { [ -x $nginx ] || exit5 [ -f $NGINX_CONF_FILE ] || exit6 make_dirs echo-n $"Starting $prog: " daemon $nginx -c $NGINX_CONF_FILE retval=$? echo [ $retval -eq0 ] && touch$lockfile return$retval } stop() { echo-n $"Stopping $prog: " killproc $prog -QUIT retval=$? echo [ $retval -eq0 ] && rm-f $lockfile return$retval } restart() { configtest || return$? stop sleep1 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/null2>&1 } case"$1" in start) rh_status_q && exit0 $1 ;; stop) rh_status_q || exit0 $1 ;; restart|configtest) $1 ;; reload) rh_status_q || exit7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit0 ;; *) echo$"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" exit2 esac
將以上指令碼儲存到/etc/init.d/nginx檔案,並修改兩個地方:
- nginx=”/usr/sbin/nginx” 修改成nginx執行程式的路徑。
- NGINX_CONF_FILE=”/etc/nginx/nginx.conf” 修改成配置檔案的路徑。
儲存後,就可以通過該指令碼對nginx服務進行管理了:
$ /etc/init.d/nginx start $ /etc/init.d/nginx stop $ /etc/init.d/nginx reload ...
使用chkconfig進行管理
上面的方法完成了用指令碼管理nginx服務的功能,但是還是不太方便,比如要設定nginx開機啟動等。這時可以使用chkconfig來設定。
先將nginx服務加入chkconfig管理列表:
chkconfig --add /etc/init.d/nginx
加完這個之後,就可以使用service對nginx進行啟動,重啟等操作了。
$ service nginx start $ service nginx stop $ service nginx reload ...
設定終端模式開機啟動:
$ chkconfig --level 3 nginx on
From: http://www.01happy.com/centos-nginx-shell-chkconfig/