nginx 기본 사용 시리즈 (2)ubuntu 14.04 원본 설치 설정 자동 시작 스 크 립 트

8616 단어
윗글 에서 이 용 했 습 니 다.
sudo ./configure --prefix=/usr/local/nginx

nginx 소스 패 키 지 를 컴 파일 하여 설치 합 니 다. 모든 nginx 소스 코드 를 설치 하면 / usr / local / nginx 파일 에 설 치 됩 니 다. 시작 할 때마다 / user / local / nginx / sbin / nginx 를 통 해 시작 해 야 합 니 다. Ubuntu 를 통 해 apt - get 설 치 를 통 해 자체 시작 스 크 립 트 를 설정 합 니 다. 원본 패 키 지 를 통 해 설치 한 상태 에서 자체 시작 스 크 립 트 를 설정 합 니 다.
nginx 부팅 서비스 설정
기본적으로 이렇게 설치 한 후에 매번 설정 을 검사 하고 다시 시작 하 는 것 과 같은 조작 이 약간 번 거 롭 기 때문에 우 리 는 Ubuntu 14.04 공식 소스 를 모방 하여 시스템 에 nginx 서 비 스 를 설정 합 니 다. 우 리 는 설정 을 검사 하고 Nginx 를 다시 시작 하 며 자동 으로 Nginx 를 시작 할 수 있 습 니 다.
sudo vim /etc/init.d/nginx

다음 내용 을 삽입 합 니 다:
#!/bin/sh
### BEGIN INIT INFO
# Provides:       nginx
# Required-Start:    $local_fs $remote_fs $network $syslog $named
# Required-Stop:     $local_fs $remote_fs $network $syslog $named
# 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
##### nginx    
#####DAEMON=/usr/sbin/nginx
DAEMON=/usr/local/nginx/sbin/nginx
NAME=nginx
DESC=nginx
# Include nginx defaults if available
if [ -r /etc/default/nginx ]; then
        . /etc/default/nginx
fi
test -x $DAEMON || exit 0
. /lib/init/vars.sh
. /lib/lsb/init-functions
# Try to extract nginx pidfile
####        
####PID=$(cat /etc/nginx/nginx.conf | grep -Ev '^\s*#' | awk 'BEGIN { RS="[;{}]" } { if ($1 == "pid") print $2 }' | head -n1)
PID=$(cat /usr/local/nginx/conf/nginx.conf | grep -Ev '^\s*#' | awk 'BEGIN { RS="[;{}]" } { if ($1 == "pid") print $2 }' | head -n1)

##### -z str1:      0   (  )
if [ -z "$PID" ]
then
        PID=/run/nginx.pid
fi
# Check if the ULIMIT is set in /etc/default/nginx

#### -n str1:       0   (   ) 
if [ -n "$ULIMIT" ]; then
        # Set the ulimits
        ulimit $ULIMIT
fi

#
# Function that starts the daemon/service
#
do_start()
{
        # Return
        #   0 if daemon has been started
        #   1 if daemon was already running
        #   2 if daemon could not be started
        start-stop-daemon --start --quiet --pidfile $PID --exec $DAEMON --test > /dev/null \
                || return 1
        start-stop-daemon --start --quiet --pidfile $PID --exec $DAEMON -- \
                $DAEMON_OPTS 2>/dev/null \
                || return 2
}

test_nginx_config() {
        $DAEMON -t $DAEMON_OPTS >/dev/null 2>&1
}

#
# Function that stops the daemon/service
#
do_stop()
{
        # Return
        #   0 if daemon has been stopped
        #   1 if daemon was already stopped
        #   2 if daemon could not be stopped
        #   other if a failure occurred
        start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PID --name $NAME
        RETVAL="$?"
        sleep 1
        return "$RETVAL"
}

#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
        start-stop-daemon --stop --signal HUP --quiet --pidfile $PID --name $NAME
        return 0
}

#
# Rotate log files
#
do_rotate() {
        start-stop-daemon --stop --signal USR1 --quiet --pidfile $PID --name $NAME
        return 0
}

#
# Online upgrade nginx executable
#
# "Upgrading Executable on the Fly"
# http://nginx.org/en/docs/control.html
#
do_upgrade() {
        # Return
        #   0 if nginx has been successfully upgraded
        #   1 if nginx is not running
        #   2 if the pid files were not created on time
        #   3 if the old master could not be killed
        if start-stop-daemon --stop --signal USR2 --quiet --pidfile $PID --name $NAME; then
                # Wait for both old and new master to write their pid file
                while [ ! -s "${PID}.oldbin" ] || [ ! -s "${PID}" ]; do
                        cnt=`expr $cnt + 1`
                        if [ $cnt -gt 10 ]; then
                                return 2
                        fi
                        sleep 1
                done
                # Everything is ready, gracefully stop the old master
                if start-stop-daemon --stop --signal QUIT --quiet --pidfile "${PID}.oldbin" --name $NAME; then
                        return 0
                else
                        return 3
                fi
        else
                return 1
        fi
}

case "$1" in
        start)
                [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
                do_start
                case "$?" in
                        0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                        2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
                esac
                ;;
        stop)
                [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
                do_stop
                case "$?" in
                        0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                        2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
                esac
                ;;
        restart)
                log_daemon_msg "Restarting $DESC" "$NAME"
                # Check configuration before stopping nginx
                if ! test_nginx_config; then
                        log_end_msg 1 # Configuration error
                        exit 0
                fi
                do_stop
                case "$?" in
                        0|1)
                                do_start
                                case "$?" in
                                        0) log_end_msg 0 ;;
                                        1) log_end_msg 1 ;; # Old process is still running
                                        *) log_end_msg 1 ;; # Failed to start
                                esac
                                ;;
                        *)
                                # Failed to stop
                                log_end_msg 1
                                ;;
                esac
                ;;
        reload|force-reload)
                log_daemon_msg "Reloading $DESC configuration" "$NAME"
                # Check configuration before reload nginx
                #
                # This is not entirely correct since the on-disk nginx binary
                # may differ from the in-memory one, but that's not common.
                # We prefer to check the configuration and return an error
                # to the administrator.
                if ! test_nginx_config; then
                        log_end_msg 1 # Configuration error
                        exit 0
                fi

                do_reload
                log_end_msg $?
                ;;
        configtest|testconfig)
                log_daemon_msg "Testing $DESC configuration"
                test_nginx_config
                log_end_msg $?
                ;;
        status)
                status_of_proc -p $PID "$DAEMON" "$NAME" && exit 0 || exit $?
                ;;
        upgrade)
                log_daemon_msg "Upgrading binary" "$NAME"
                do_upgrade
                log_end_msg 0
                ;;
        rotate)
                log_daemon_msg "Re-opening $DESC log files" "$NAME"
                do_rotate
                log_end_msg $?
                ;;
        *)
                echo "Usage: $NAME {start|stop|restart|reload|force-reload|status|configtest|rotate|upgrade}" >&2
                exit 3
                ;;
esac
:
  • nginx 의 시작 경 로 를 설정 하 십시오. DAEMON = / usr / sbin / nginx;
  • nginx. conf 프로필 경 로 를 설정 하고 nginx. conf 프로필 에 있 는 pid 경로 와 다른 로그 파일 의 경 로 를 설정 하 는 것 에 주의 하 십시오.
  • apt - get 공식 시작 스 크 립 트 에 비해 \ # \ # \ # 수정 및 비고 이해 부분
  • 파일 권한 을 설정 하고 시스템 서비스 에 추가 합 니 다.
    sudo chmod +x ./nginx
    sudo update-rc.d nginx defaults
    

    nginx 시작 닫 기 재 부팅
    sudo /etc/init.d/nginx stop
    sudo /etc/init.d/nginx start
    sudo /etc/init.d/nginx restart
    

    시작 스 크 립 트 와 관련 된 명령 참조: ulimit - n 수정:http://blog.csdn.net/yangzhenzhen/article/details/8905846 linux 셸 의 ifif 로 판단 하기:http://blog.csdn.net/crazyhacking/article/details/10182563 start - stop - daemon 으로 Nginx 시작 하기:http://blog.csdn.net/csfreebird/article/details/8181337

    좋은 웹페이지 즐겨찾기