Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

 

Table of Contents

 

 

개요

...

이 문서는 Redhat 계열 Linux 서버에서 OS 부팅 시작 및 종료 시 Altibase 서버 프로세스를 자동 시작하는 방법에 관해 설명합니다.

 

 

 

버전

Altibase 4 이상

 

 

 

OS

Linux

 

 

 

등록 방법

 

자동 시작 스크립트 샘플

자동 시작 스크립트는 아래와 같은 상황에서 동작하도록 작성했습니다.

  • 하나의 서버에 1개의 Altibase 서버가 운용
  • OS 유저 altibase 에서 Altibase 서버를 설치하고 startup/shutdown 권한을 가짐
  • bash 쉘에서 동작
  • chkconfig 유틸리티 사용

이 스크립트는 샘플 파일입니다. 고객사 OS 유저의 환경 설정에 따라 의도와 다르게 동작할 수도 있으니 반드시 테스트하여 정상 수행 여부를 확인하시기 바랍니다.

/etc/init.d 에 스크립트 등록

자동 시작 스크립트 altibased 파일을 /etc/init.d 디렉토리에 업로드합니다.

 

스크립트 수정

스크립트 상단 user 변수를 고객사 환경에 맞게 변경합니다.

DB를 자동으로 시작, 종료하게 하는 방법에 대하여 설명합니다.

하나의 서버에서 1개의 Altibase  서버를 운영시 사용하며, Linux OS의 root 계정으로 모든 항목을 등록 하여야 합니다.

Redhat 계열 v6와 v7으로 나누어 가이드 합니다.

  • Altibase v4 이상
  • Red Hat Enterprise Linux 7 이상
  • Red Hat Enterprise Linux 6 이하

 

 

Note

이 문서와 관련된 오류 및 개선사항은 기술지원포털 또는 기술지원센터로 문의주시기 바랍니다.

Note

이 문서는 정보 제공을 목적으로 제공되며, 사전에 예고 없이 변경될 수 있습니다. 이 문서는 오류가 있을 수 있으며, 상업적 또는 특정 목적에 부합하는 명시적, 묵시적인 책임이 일절 없습니다.

이 문서에 포함된 Altibase 제품의 특징이나 기능의 개발, 발표 등의 시기는 Altibase 재량입니다.

Altibase는 이 문서에 대하여 관련된 특허권, 상표권, 저작권 또는 기타 지적 재산권을 보유할 수 있습니다.

 

RedHat 계열 v7 이상

...

Redhat 계열의 v7 이상에서는 SELinux(Security Enhanced Linux)의 상태를 확인하여 enabled이라면 current mode를 permissive 로 변경해야 됩니다.

SELinux 상태 및 모드의 영구 변경 가이드는 다음의 URL을 참조하세요

URL : https://docs.redhat.com/ko/documentation/red_hat_enterprise_linux/8/html/system_design_guide/changing-selinux-states-and-modes_system-design-guide#changing-selinux-states-and-modes_system-design-guide

Redhat SELinux는 OS의 정책에 따라 변경을 하여야 합니다.

 

Altibase 자동 시작 및 종료 서비스 작성

...

  • File Name : altibased.service
  • File Path : /usr/lib/systemd/system
  • altibased.service 스크립트 작성

    Code Block
    themeDJango
    languagesql
    [root@localhost] # vi altibased.service
    Code Block
    themeDJango
    languagesql
    [Unit]
    Description=AltibaseAutoStartStop
    After=network.target syslog.target
    
    [Service]
    Type=forking
    User=altibase
    Group=altibase
    LimitNOFILE=1048576
    LimitNPROC=infinity
    TimeoutSec=0
    KillMode=none
    
    ExecStart=/etc/rc.d/init.d/altibase start
    ExecStop=/etc/rc.d/init.d/altibase stop
    
    [Install]
    WantedBy=multi-user.target
  • 주요항목 설명

    Description
    서비스 설명
    User
    수행될 OS 계정명
    Group
    OS 계정의 Group
    ExecStart
    서비스 시작 시 수행할 파일
    ExecStop
    서비스 종료 시 수행할 파일
  • altibased.service 작성 후 파일 권한을 755로 권한 변경을 합니다.

    Code Block
    themeDJango
    languagesql
    [root@localhost] # chmod 755 altibased.service

 

Altibase 서비스에서 수행할 파일 작성

...

altibased.service에서 수행할 자동 시작, 종료 스크립트를 작성합니다.

  • File Name : altibase
  • File Path : /etc/rc.d/init.d
  • altibase 스크립트 작성

    Code Block
    themeDJango
    languagesql
    [root@localhost] # vi altibase
  • Altibase의 환경 파일 위치는 사용자 환경에 맞게 변경하여야 합니다.

    Code Block
    themeDJango
    languagesql
    #!/bin/bash
    # Startup Script for the Altibase Server
    # path: /etc/rc.d/init.d/altibase
    # chkconfig: 345 90 10
    # processname: altibase
     
    . /home/altibase/altibase_home/conf/altibase_user.env
     
    case "$1" in
      start)
        echo "Startup altibase: "
        ${ALTIBASE_HOME}/bin/server start
        ;;
      stop)
        echo "Shutdown altibase: "
        ${ALTIBASE_HOME}/bin/server stop
        ;;
      *)
        echo "Usage: service altibase {start | stop}"
        exit 1
    esac
    exit 0
  • altibase 작성 후 파일 권한을 755로 권한 변경을 합니다.

    Code Block
    themeDJango
    languagesql
    [root@localhost] # chmod 755 altibase

 

altibased.service 심볼릭 링크 설정

...

작성한 서비스 파일 altibased.service 파일을 다음의 위치에서 심볼릭 링크로 존재하여야 합니다.

Code Block
themeDJango
languagesql
[root@localhost] # cd /etc/systemd/system/multi-user.target.wants
[root@localhost] # ln -s /usr/lib/systemd/system/altibased.service altibased.service   ==> 심볼릭 링크 설정

 

systemctl에 altibased.service 등록 및 테스트

...

systemctl에 altibased.service를 등록하여야 합니다.

Code Block
themeDJango
languagesql
[root@localhost] # systemctl enable altibased.service   ==> altibased.service 등록
[root@localhost] # systemctl start altibased.service    ==> altibase start 테스트
[root@localhost] # systemctl stop altibased.service     ==> altibase stop 테스트

 서버 종료, 서버 기동 하면서 $ALTIBASE_HOME/trc에 Altibase 정상적으로 중지 및 시작 되는지 확인합니다.

 

systemctl 상태 확인

...

Code Block
themeDJango
languagesql
[root@localhost] # systemctl status altibased.service

  

 

SELinux 모드 변경 및 상태 확인

...

RedHat 계열 v7 이상에서의 SELinux 모드 변경 및 상태확인 방법입니다.

 

SELinux 모드 확인

...

Code Block
themeDJango
languagesql
[root@localhost] # sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing       ==> 현재 SELinux 모드
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual (secure)
Max kernel policy version:      31

 

SELinux Current mode 임시 변경

...

SELinux의 Current mode를 임시로 변경하면 OS 재기동 후 원래 상태로 변경됩니다.

Current mode를 임시로 변경하며 OS 재기동 시 Altibase Process가 자동으로 시작하지 않습니다.

Code Block
themeDJango
languagesql
[root@localhost] # setenforce 0      ==> current mode를 permissive mode로 변경

[root@localhost] # setenforce 1      ==> current mode를 enforoing mode로 변경

 

SELinux Current mode 영구 변경

...

SELinux의 Current mode를 영구 변경하기 위해서는 다음의 설정 파일을 변경하여야 합니다.

/etc/selinux/config 파일의 SELINUX 항목을 permissive 값으로 변경 후 OS를 재기동합니다.

Code Block
themeDJango
languagebashsql
$ vi /etc/init.d/altibased
#[root@localhost] # cd /etc/selinux

[root@localhost] # vi config
 
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - No SELinux policy is loaded.
#SELINUX=enforcing   # 기존 enforcing
SELINUX=permissive   # 변경 permissive
# SELINUXTYPE= can take one of these two values:
#       targeted - Targeted processes are protected,
#       mls - Multi Level Security protection.

 

OS 재기동 후 SELinux 상태 확인

...

Code Block
themeDJango
languagesql
[root@localhost] # sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   permissive
Mode from config file:          permissive
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual (secure)
Max kernel policy version:      31

 

 

Red Hat 계열 v6 이하

...

RedHat 계열 v6에서는 다음의 순서로 Altibase Process를 자동 시작, 종료를 진행합니다.

 

자동 시작 및 종료 스크립트 작성

...

altibased 자동 시작, 종료 스크립트를 작성합니다.

  • File Name : altibased
  • File Path : /etc/init.d
  • altibased 스크립트 작성

    Code Block
    themeDJango
    languagesql
    [root@localhost] # vi altibased
  • user 항목은 OS에 접속한 OS 계정으로 변경한다.

    Code Block
    themeDJango
    languagesql
    #!/bin/bash
    #
    # altibase
    #
    # chkconfig: 2345 20 80
    # description: ALTIBASE process startup
    
    user=altibase
    
    start() {
      echo -e "`date +"%Y-%m-%d %H:%M:%S"` : Altibase Server Startup \n" >> /var/log/${user}_altibased.log 2>&1 
    
      ALTIBASE_STATUS=`ps -ef 

...

  • | grep 

...

 

 

스크립트 실행 권한 변경

  • ${user} | grep 'altibase -p' | grep -v grep | wc -l` 
    
      if [ $ALTIBASE_STATUS -ne 1 ]; then
        su - ${user} -c "server start" >> /var/log/${user}_altibased.log 2>&1
      fi
    }
    
    
    stop() {
      echo -e "`date +"%Y-%m-%d %H:%M:%S"` : Altibase Server Shutdown \n" >> /var/log/${user}_altibased.log 2>&1 
    
      ALTIBASE_STATUS=`ps -ef | grep ${user} | grep 'altibase -p'| grep -v grep | wc -l`
    
      if [ $ALTIBASE_STATUS -eq 1 ]; then
        su - ${user} -c "server stop" >> /var/log/${user}_altibased.log 2>&1
      fi
    }
    
    
    case "$1" in
      start)
        start
        ;;
      stop) 
        stop
        ;;
    esac

    이 스크립트는 샘플 파일입니다. 고객사 OS 유저의 환경 설정에 따라 의도와 다르게 동작할 수도 있으니 반드시 테스트하여 정상 수행 여부를 확인하시기 바랍니다.
    로그는 /var/log/${user}_altibased.log 에 남도록 설정했습니다.

 

altibased 수행 권한 변경

...

작성한 altibased 파일의 권한을 변경합니다.

Code Block
themeDJango
languagebashsql
$[root@localhost] # chmod +x altibased
[root@localhost] $# ls -l altibased
-rwxr-xr-x 1 root root 811 Sep  3 13:50 /etc/init.d/altibased

  

chkconfig 등록 및 확인

...

chkconfig

...

유틸리티를 이용하여 서비스를 등록 합니다.

Code Block
themeDJango
languagebashsql
$[root@localhost] # chkconfig --add altibased

 

 

chkconfig 등록 확인

Code Block
themeDJango
languagebash
$          ==> 서비스 등록

[root@localhost] # ls -l /etc/rc.d/rc*.d/K*alti* $     ==> 서비스 등록 확인
[root@localhost] # ls -l /etc/rc.d/rc*.d/S*alti*     ==> 서비스 등록 확인

 

로그

로그는 /var/log/${user}_altibased.log 에 남도록 설정했습니다.