1、關閉nginx
利用ps -aux | grep nginx 查看nginx是否啟動 如果啟動了就kill殺死
2、創建/etc/init.d/nginx文件
root@dnnp:~/software/nginx-1.2.3# vim /etc/init.d/nginx
3、添加權限並啟動
root@dnnp:~/software/nginx-1.2.3# chmod +x /etc/init.d/nginx root@dnnp:~/software/nginx-1.2.3# /etc/init.d/nginx start Starting nginx: nginx. root@dnnp:~/software/nginx-1.2.3# ps -aux | grep nginx Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html root 25078 0.0 0.0 4596 700 ? Ss 14:20 0:00 nginx: master process /usr/local/nginx/sbin/nginx nobody 25079 0.0 0.1 4820 1056 ? S 14:20 0:00 nginx: worker process root 25081 0.0 0.0 3304 768 pts/0 S+ 14:20 0:00 grep nginx root@dnnp:~/software/nginx-1.2.3#
注:/etc/init.d/nginx文件內容如下
#! /bin/sh
### BEGIN INIT INFO
# Provides: nginx
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the nginx web server
# Description: starts nginx using start-stop-daemon
### END INIT INFO
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/nginx/sbin/nginx
NAME=nginx
DESC=nginx
test -x $DAEMON || exit 0
# Include nginx defaults if available
if [ -f /etc/default/nginx ] ; then
. /etc/default/nginx
# . /usr/local/nginx/conf
fi
set -e
. /lib/lsb/init-functions
case "$1" in
start)
echo -n "Starting $DESC: "
start-stop-daemon --start --quiet --pidfile /usr/local/nginx/logs/$NAME.pid \
--exec $DAEMON -- $DAEMON_OPTS || true
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
start-stop-daemon --stop --quiet --pidfile /usr/local/nginx/logs/$NAME.pid \
--exec $DAEMON || true
echo "$NAME."
;;
restart|force-reload)
echo -n "Restarting $DESC: "
start-stop-daemon --stop --quiet --pidfile \
/usr/local/nginx/logs/$NAME.pid --exec $DAEMON || true
sleep 1
start-stop-daemon --start --quiet --pidfile \
/usr/local/nginx/logs/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS || true
echo "$NAME."
;;
reload)
echo -n "Reloading $DESC configuration: "
start-stop-daemon --stop --signal HUP --quiet --pidfile /usr/local/nginx/logs/$NAME.pid \
--exec $DAEMON || true
echo "$NAME."
;;
status)
status_of_proc -p /usr/local/nginx/logs/$NAME.pid "$DAEMON" nginx && exit 0 || exit $?
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|reload|force-reload|status}" >&2
exit 1
;;
esac
exit 0
在nginx的早期版本,nginx重啟需要通過kill命令向nginx發送信號來實現nginx的重啟。
但是,現在,nginx增加了-s選項,實現nginx的停止,重新加載功能。
1. 如果是平滑的重啟nginx,可以用./nginx -s reload命令實現nginx的平滑重啟。
2. 如果是非平滑重啟,則可以先停止nginx,然後再啟動:
./nginx -s stop && ./nginx
當我們修改nginx配置後,希望重啟nginx以便讓nginx生效,此時為了保證nginx在重啟階段還能夠提供正常的服務,一般采用平滑重啟的方式(reload)重啟nginx。此時,nginx會加載新的配置,然後fork出新的worker進程。同時,master進程會向老的worker進程發送信號,告訴老的worker進程當前的情況。老的worker進程受到master進程的信號後,如果當時沒有處理請求則會退出,如果正在處理請求,則老的worker進程會處理完請求然後退出。nginx就是通過這種方式去reload新的配置,從而使得在重啟的過程中,仍然可以提供服務。
start 啟動服務 stop 停止服務 reload 重讀配置 restart 重啟服務