서비스(Service) 중에는 서버 부팅 시 자동으로 시작해야 하는 것들이 있습니다. 대표적인 것이 Apache 웹서버입니다. 유지보수나 장애 등의 이유로 서버를 재부팅했을 때 Apache는 바로 시작되어야 합니다.

부팅 시 자동으로 시작하게 하는 방법은 chkconfig 명령어를 이용하는 것입니다. 예를 들어 httpd를 자동으로 시작되게 하려면 다음과 같이 명령합니다.

chkconfig httpd on

만약 명령어로 관리하는 것이 불편하다면 ntsysv를 이용하면 됩니다. 설치하려면 다음과 같이 명령합니다.

yum install ntsysv

설치 후 ntsysv라고 입력하여 실행시키면 다음과 같은 화면이 나옵니다.

서비스 목록이 나오고, 별표(*)가 있는 것이 부팅 시 자동 시작되는 서비스입니다. 스페이스바로 자동 시작을 원하는 서비스에 체크하고 저장하면 됩니다.

'리눅스' 카테고리의 다른 글

iptalbes란?  (0) 2016.11.02
iptables 방어설정  (0) 2016.11.02
부팅시 자동 실행하기  (0) 2016.10.20
Git 설치  (0) 2016.08.22
리눅스 로그 확인하기  (0) 2016.07.10
블로그 이미지

칩사마코더

,

보통 node를 이용해 스크립트를 실행하는 방법은 node 명령어 뒤에 javascript 파일을 적어주는 것입니다. 

 node sample.js

이런 식으로 node를 사용하다보면 불편한 점이 한 둘이 아니죠. 소스코드가 수정되면 프로세스를 죽였다 살려줘야 하고, 죽일 때에도 node 프로세스를 죽이기 위해 프로세스 id를 찾는 수고로움을 치루어야 합니다. 이에 손쉽게 수정된 소스 코드를 반영하여 재실행하는 방법과 프로세스가 문제가 발생하여 죽더라도 자동으로 재시작 되는 방법, 그리고 스크립트를 빠르게 시작하고 종료하는 방법에 대해 알아봅시다.

  1. nodemon
    nodemon은 node 스크립트가 수정된 것을 감지하여 자동으로 재시작시켜주는 애플리케이션입니다. 한참 개발을 진행 중일때 없어서는 안될 유용한 프로그램이죠.
    • 설치:
      npm install nodemon -g
      -g 옵션을 주어 전역적으로 설치 할 수 있습니다. 이 경우 단일 프로젝트로 제한하지 않고 어느 프로젝트에서나 사용 할 수 있겠죠. sudo로 관리자 권한이 필요 할 수 있습니다.
    • 실행:
      nodemon sample.js
    • 공식 사이트: 
      https://github.com/remy/nodemon

  2. forever 
    forever는 nodemon에 비해 더욱 다양한 기능을 가지고 있습니다. 노드를 쉽게 실행, 종료 시키고 기본으로 로그 출력을 지원하며, 애플리케이션이 종료될 때에도 자동으로 재시작시켜줍니다.
    • 설치:
      npm install forever -g
    • 사용:
      forever start sample.js
      forever stop sample.js
      forever restart sample.js
      forever list

      이외에도 다양한 명령어가 있습니다만, 이 정도만 알아도 사용하는데 무리가 없을거에요. 이 명령어 조합은 자주 사용하는 것 위주로 쉘 스크립트를 만들어 사용하면 더욱 편리합니다.
    • 공식 사이트: 
      https://github.com/nodejitsu/forever


블로그 이미지

칩사마코더

,

rc.local - 부팅시 자동실행 명령어 스크립트 수행

 

일반적으로 서버 부팅시마다 매번 자동실행되길 원하는 명령어는 /etc/rc.d/rc.local에 넣어주면 된다.

 

이부분을 알아보기 전에 리눅스 부팅과정에 대한 약간의 이해를 주면 리눅스에서는 실행레벨에 따라 다르게 부팅할 수 있는데 실행레벨에 따라서 설정되어 있는 모든 프로세스들을 실행하게 된다. /etc/inittab파일에는 init가 현재의 실행레벨에서 실행되어야 할 내용들에 대한 설정이 되어 있다.

 

6개의 실행레벨중 기본레벨인 3번레벨의 실행내용들을 간단히 살펴보면, 즉 /etc/rc.d/rc3.d/ 디렉토리의 내용을 살펴보면 아래와 같다.

[root@inter-devel rc3.d]# ll

....

lrwxrwxrwx  1 root root 19  8월 28  2007 K68rpcidmapd -> ../init.d/rpcidmapd
lrwxrwxrwx  1 root root 17  8월 28  2007 K69rpcgssd -> ../init.d/rpcgssd
lrwxrwxrwx  1 root root 16  8월 28  2007 K72autofs -> ../init.d/autofs
lrwxrwxrwx  1 root root 16  8월 28  2007 K73ypbind -> ../init.d/ypbind
lrwxrwxrwx  1 root root 14  8월 28  2007 K74apmd -> ../init.d/apmd

....

lrwxrwxrwx  1 root root 17  6월 12  2007 S95anacron -> ../init.d/anacron
lrwxrwxrwx  1 root root 13  6월 12  2007 S95atd -> ../init.d/atd
lrwxrwxrwx  1 root root 19  6월 12  2007 S96readahead -> ../init.d/readahead
lrwxrwxrwx  1 root root 20  6월 12  2007 S97messagebus -> ../init.d/messagebus
lrwxrwxrwx  1 root root 19  6월 12  2007 S98haldaemon -> ../init.d/haldaemon
lrwxrwxrwx  1 root root 11  6월 13  2007 S99local -> ../rc.local
[root@inter-devel rc5.d]#

 

보는 바와 같이 각 실행레벨마다 실행될 스크립트들은 모두 링크파일로 존재하며, 실행 스크립트들은 모두 /etc/rc.d/init.d/ 디렉토리에 존재하고 있다. 이 링크에 의해 각 실행단계별로 필요한 프로세스들을 죽이기도 하고 실행시키기도 한다.

 

K로 시작되는 스크립트파일들은 해당 스크립트를 종료하기 위한 것으로서 /etc/rc.d/init.d/디렉토리내에 존재하는 해당 스크립트를 stop인자와 함께 실행한다.

 

S로 사작되는 스크립트파일들은 해당 스크립트를 시작하기 위한 것으로서 /etc/rc.d/init.d/디렉토리내에 존재하는 해당 스크립트를 start인자와 함께 실행한다.

 

그리고 K와 S문자 다음에 있는 두자리의 숫자는 실행순서를 결정하기 위한 것이다.

 

여기서 주의깊게 봐야 할 것은 맨 마지막 스크립트파일이 S99local 이라는 것이다. 보는 봐와 같이 이 파일은 /etc/rc.d/rc.local로 링크되어 있으며 각 실행레벨에서 맨 마지막 단계에 꼭 한번 실행되는 파일이다. 일반적으로 아파치나 MYSQL 등을 컴파일하여 설치한 후에 부팅시마다 매번 자동실행되기 위하여 /etc/rc.d/rc.local 파일에 실행시킬 내용을 넣어두는 이유가 여기에 있다.

 

/etc/rc.d/rc.local 파일에 아파치와 톰캣을 재시작하기 위한 설정부분이다.

참고로 아파치와 톰캣을 재시작할때에는 먼저 톰캣을 시동하고 아파치를 나중에 시동한다.

 #!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

 

source /etc/profile
/usr/local/tomcat/bin/startup.sh
/usr/sbin/apachectl start

 

만약, 사용자들이 리눅스서버에 새로 설치한 툴이나 프로그램을 매번 부팅때마다 자동으로 실행되도록 하려면 이 파일의 맨 마지막에 원하는 실행 명령을 넣어두면 된다.

'리눅스' 카테고리의 다른 글

iptables 방어설정  (0) 2016.11.02
CentOS | 서버 부팅 시 서비스(Service) 자동으로 시작되게 하기  (0) 2016.10.20
Git 설치  (0) 2016.08.22
리눅스 로그 확인하기  (0) 2016.07.10
리눅스 아이피 차단 설정  (0) 2016.07.10
블로그 이미지

칩사마코더

,