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 重啟服務