업데이트:FreeBSD에 데몬 작성 및 자동 배포

6664 단어 devopsfreebsddaemon

목표
우리의 목표는 rc를 작성하는 것이다.d 파일, 수호 프로세스로서 모든 것을 시작하고, 첨부된 설정 파일을 사용하며, 자동 배치에 사용되는 명령을 이해할 수 있습니다.

설정 파일
설정 파일부터 시작하겠습니다.기술적으로 말하자면, 너는 그곳에서 네가 하고 싶은 일을 할 수 있다.만약 네가 약간의 이성이 남았다면, 너는 간단하게 그것으로 환경 변수를 설정할 수 있다.이렇게 하면 이해하기 쉽다the third rule of the Twelve-Factor App.실제로 내보내기 문구를 추가하고sed를 사용하여 CI/CD 스크립트에서 '위조값' 을 바꾸거나 변수로 대체하여 버스 감옥에서 사용하십시오 RENDER.
export HTTP_PORT=3000
export POSTGRES_IP=SED_PGSQL_IP
export POSTGRES_USERNAME=SED_PGSQL_USER
export POSTGRES_PASSWORD=SED_PGSQL_PASS
이 파일은 실제 서비스 파일과 같은 이름으로 저장되어야 하지만 /usr/local/etc/rc.conf.d/ 아래에 있어야 합니다.RC 시스템은 자동으로 이를 감지합니다.

데몬 파일
이거 조금 길어요.우리 먼저 전체 대본을 살펴보자.
#!/bin/sh

# PROVIDE: location_service
# REQUIRE: LOGIN DAEMON NETWORKING
# BEFORE: some_other_service
# KEYWORD: shutdown

. /etc/rc.subr

name=location_service
rcvar=${name}_enable
pidfile="/var/run/${name}.pid"
pidfile_child="/var/run/${name}_jvm.pid"
logfile="/var/log/${name}.log"
location_service_chdir="/usr/local/share/location-service"

command="/usr/sbin/daemon"
start_cmd="location_service_start"
procname="daemon"

load_rc_config ${name}
: ${location_service_enable:=no}

location_service_start() {
    /usr/sbin/daemon -r -f -P ${pidfile} -p ${pidfile_child} -t ${name} -o ${logfile} /usr/local/bin/java -jar location-service.jar
}

run_rc_command "$1"

주요 변수
변수 이름은 약간의 마력이 있지만, 그 외에 상당히 표준적인 셸 스크립트 파일이다.이 예에서, 우리는 JVM에서 실행될 위치 서비스를 사용하지만, 이것은 정말 중요하지 않다. 사용자는 이런 방식으로 모든 것을 서비스 형식으로 실행할 수 있다.
  • PROVIDE는 수호 프로세스의 이름입니다.이것은 다시 여기에 놓여 있기 때문에 다른 수호 프로세스가 필요할 수도 있습니다.
  • REQUIRE는 그 전에 불러와야 할 수호 프로세스/목표입니다.이 값들은 틀림없이 자명해야 한다.
  • BEFORE 요구와 상반된다.이것은 rc시스템이 상기 수호 프로세스를 시작하기 전에 이 수호 프로세스를 시작하도록 알려 줍니다.
  • KEYWORDnojail(감옥에서 무시될 경우), nostart(자동 시작 과정은 스크립트를 무시합니다. shutdown 키워드와 결합하여 사용하면 시스템이 닫힐 때만 실행하는 스크립트를 작성할 수 있습니다)와shutdown(시스템이 닫히기 전에 서비스를 정지해야 함)
  • . /etc/rc.subr "마법"을 실행하는 서비스의 하위 루틴을 불러옵니다.
  • rcvar는 rc에서 서비스를 사용하거나 사용하지 않도록 설정할 수 있는 표지입니다.conf 파일.
  • 이 두 파일은 수호 프로세스와 실제 프로세스의 프로세스 id를 저장하기 때문에 시스템에서 추적할 수 있습니다.
  • location_service_chdir(또는 whatever_you_name_it_chdir 작업 디렉토리를 설정합니다.

  • 데몬 명령
    FreeBSD에는 데몬이라는 프로그램이 포함되어 있습니다. 이 프로그램을 전체적으로 실행하는 정상적인 프로그램으로 사용하고 있습니다.따라서, 우리는 rc시스템이/usr/sbin/daemon을 주 프로세스command로 사용하고, 그것이 시작하는 프로세스procname를 '데몬' 이라고 부른다고 알려 줍니다.이 예에서 "location service start"라고 불리는 맞춤형 시작 함수 start_cmd 를 실행하라고 알려 줍니다.

    구성daemon
    수호 프로세스를 시작할 때 로고를 설정해서 설정합니다.우리는 다음과 같은 깃발이 있습니다.
  • -r: 프로세스가 사망하면 프로세스를 다시 시작합니다
  • .
  • -f: 표준 입력/출력 및 표준 오류를/dev/null
  • 로 리디렉션
  • -p: 백그라운드 모니터링을 위한 프로세스의 PID 파일
  • -P: 수호 프로세스 자체의 PID 파일 - rc시스템에 필요한 파일입니다
  • -o: 로그인할 로그 파일
  • -t: 프로세스의 이름(선택 사항)
  • -u: (여기서 사용하지 않음): 프로세스를 실행하는 사용자로서
    이 서비스 파일은 /usr/local/etc/rc.d 아래에 저장되어 실행되어야 합니다.

    자동 배포
    우리는 거의 그것을 가지고 있다. 유일하게 부족한 것은 CI/CD에 사용되는 명령이다.일단 두 문서가 모두 각자의 위치에 위치하게 되면 이것은 매우 간단하다.sed -i.bak "s/SED_PGSQL_IP/${your_ci_var}/g" /usr/local/etc/rc.conf.d/location_service를 사용하여 구성 변수를 설정할 수 있습니다.변수에 '/' 문자가 포함되어 있다면,sed에 다른 문자를 사용할 수 있으며, 's' 뒤의 모든 문자는 구분자임을 기억하십시오.sysrc -f /etc/rc.conf "location_service_enable=YES"를 사용하여 서비스를 활성화합니다.
    마지막으로 service location_service restart로 다시 시작하는 것을 잊지 마세요.
    즐겁게 놀아라!
  • 좋은 웹페이지 즐겨찾기