optware apache 설치한 이후 NAS 리부팅/종료가 안될 경우 해결 방법

NAS에 optware를 설치하고, 추가로 optware에서 제공하는 apache를 설치할 경우 NAS의 리부팅/종료가 정상적으로 작동하지 않습니다.

이는, console로 top 명령을 통해 종료할 때 프로세스 동작을 보면 추측이 가능한데,

원인은, apache 프로세스인 /opt/sbin/httpd 가 정상 종료되지 않아서 그런 것입니다.

심지어, apache가 실행 중이 아닌데도, 종료 처리 중, 실행 되는 경우가 있습니다.

optware에서 제공하는 프로그램 중 자동으로 실행되어야 하는 application을 설치할 경우,

/opt/etc/init.d/

경로에 자동으로 처리해야 하는 스크립트들이 존재합니다.

apache의 경우 시스템 기동 또는 종료시 이 apache를 자동으로 처리하기 위해,

/opt/etc/init.d/S80apache

스크립트를 실행하게 됩니다.

저 스크립트 안에,

/opt/sbin/httpd -k restart

명령 구문이 수행되다 보니 종료할 경우에도 restart 되어버려, NAS가 정상 종료를 못하게 됩니다.

이를 해결하기 위해,

해당 스크립트는

/opt/etc/init.d/bS80apache

처럼 이름을 바꾸어 자동으로 실행되지 않도록 하고,

synology NAS에서 자동 실행 관리하는 경로에서 처리하도록 스크립트를 작성해 줍니다.

1. vi /usr/syno/etc.default/rc.d/S94apache2.sh ; 파일 생성
2. 내용

#!/bin/sh
# Copyright (c) 2000-2008 Synology Inc. All rights reserved.

SynoStop=/usr/bin/killall
STARTAPACHE2=”/opt/sbin/apachectl”

case $1 in
start)
        if [ -f “$STARTAPACHE2” ]; then
                echo “Starting Apache2…”
                $STARTAPACHE2 start
        else
                echo “The command NOT exist; $STARTAPACHE2”
                exit 0;
        fi
        ;;
stop)
        $STARTAPACHE2 stop

        /volume1/nas/killpids.sh “/opt/sbin/httpd”
        echo “Apache2 stopped.”
        ;;
restart)
        $0 stop
        sleep 3
        $0 start
        ;;
*)
        echo “Usages: $0 [start|stop|restart]”
        ;;
esac

3. 시스템 재기동

“optware apache 설치한 이후 NAS 리부팅/종료가 안될 경우 해결 방법”에 대한 1개의 생각

  1. 안녕하세요.
    SVN자료를 웹에서도 다운받을수 있도록 선물님의 강좌대로 설정을 했습니다.
    http 로 접근하는것만 사용할려고 일부 내용은 빼묵고 적용했는데요.
    역시 시스템을 리부팅할라고 하면 그대로 얼어버린다고 해야하나? 이 글대로 멈추더군요.
    그래서 다시 시도했는데 문제는 리부팅은 정상으로 되요..
    근뎁 svn자료로 접근할라고 하면 안되더군요. 그래서 터미널로 접속해서
    리스타트? 를 시키면 svn자료를 웹에서도 볼수가 있는데 그런식으로 처리하면
    리부팅시 다시 멈춤현상이 생기더라구요.
    리스타트를 안하면 리부팅은 정상으로 되지만 svn자료로의 접근은 안되구요.
    혹시나 해서 글남기는건데요
    본문중에 /volume1/nas/killpids.sh “/opt/sbin/httpd”
    요것이 맘에 걸려서요 ^^;;
    리눅스는 명령어도 네이버에서 검색해서 치는 초보라 틀린점이 있더라고
    너그럽게 봐주시면 감사하겠습니다. ^^a

    Ps. 좀 창피해서 비밀글로 올립니다.
    글이 두서없고 초보티 너무 나는거 같아서요 ㅎ

    제가 뭘 모르고 질문을 올리는거라 잘못된점이 있을까봐 나름 주석을 달아봅니다.

    리스타트 = apachectl restart 또는 start
    (리스타트를 실행하면 httpd가 어쩌구 하는 에러를 본 기억이 있습니다.)
    리부팅 = reboot

    응답

댓글 남기기