사용자 정의 nodejs 앱을 시작하는 시작 스크립트가 있습니다. 응용 프로그램은 couchdb 및 elasticsearch에 따라 다릅니다. couchdb 및 elasticsearch는 init.d 스크립트를 제공하여 시작 / 중지합니다. couchdb와 elasticsearch가 종속성이라는 것을 upstart 스크립트에 알리는 것이 가능합니까? 내 시작 스크립트에서 이것을 시도했지만 작동하지 않는 것 같습니다.
시작 (couchdb 시작 및 elasticsearch 시작)
감사!
답변
내가 알 수있는 유일한 방법은 elasticsearch와 couchdb에 대한 시작 스크립트를 작성 (또는 검색 및 설치)하여 “start on”옵션을 사용할 수 있다는 것입니다.
couchdb의 시작 스크립트
# couchdb v1.2.0 # # CouchDB의 커스텀 설치 설명 "CouchDB v1.2.0, 로컬" 콘솔 출력 # 모든 파일 시스템 및 네트워크 인터페이스를 사용할 수있게 된 후 시작 시작 (로컬 파일 시스템 및 net-device-up IFACE! = lo) 런레벨에서 멈춤 [! 2345] # 작업 디렉토리 설정 env COUCHDB_WD = "/ path / to / build-couchdb / build / bin" COUCHDB_WD 내보내기 얼랭에 필요한 # env HOME = "/ home / user" 수출 HOME 스크립트 # 로컬 couchdb의 작업 디렉토리에 먼저 닿도록 PATH 수정 PATH = "$ COUCHDB_WD : $ PATH" #export PATH # 스크립트 블록 안에 필요하지 않습니다 #logger -t $ 0 "HOME = '$ HOME'" #logger -t $ 0 "PATH = '$ PATH'" # 사용자 정의 위치에 출력 couchdb 로그 #exec >> / home / user / couchdb_local.log 2> & 1 exec couchdb 엔드 스크립트
- 환경을 원하는 것으로 편집하십시오.
- 출처 : /programming/11980900/how-to-get-custom-couchdb-to-run-as-upstart-job
탄력적 검색을위한 시작
# ElasticSearch 서비스 설명 "ElasticSearch" 시작 (net-device-up) 로컬 파일 시스템 및 런레벨 [2345]) 런레벨에서 정지 [016] 리스폰 제한 10 5 env ES_HOME = / usr / share / elasticsearch / home env ES_MIN_MEM = 256m env ES_MAX_MEM = 2g env DAEMON = "$ {ES_HOME} / bin / elasticsearch" env DATA_DIR = / data / elasticsearch / data env CONFIG_DIR = / etc / elasticsearch 콘솔 출력 스크립트 만약 [-f / etc / default / elasticsearch]; 그때 . / etc / default / elasticsearch fi su -s / bin / dash -c "/ usr / bin / elasticsearch -f -Des.path.conf = $ CONFIG_DIR -Des.path.home = $ ES_HOME -Des.path.logs = $ LOG_DIR -Des.path. data = $ DATA_DIR -Des.path.work = $ WORK_DIR "elasticsearch 엔드 스크립트
- 출처 : https://gist.github.com/rbscott/1052015
- env 디렉토리를 필요한 것으로 변경하십시오.
답변
나는 같은 질문을했고 다른 대답을 찾았습니다 . 저자 목록 4 옵션은이를 달성하기 위해 그 중 내가 가장 처음처럼 :
initclt emit myservice-started
종속 서비스 시작이 완료되었음을 알리는 데 사용하십시오 . 링크 된 답변에서 종속성 서비스 init.d
스크립트 의 끝에이 줄을 추가 하는 것이 좋지만 다른 방법을 선호합니다. 섹션 만 포함 된 새 inid.d
스크립트 를 작성하고 싶습니다 . 파일 헤더에 적절한 주석 스타일을 사용하여 시작 에 따라 다릅니다 . 이 섹션 에서는 시작 에 대해 upstart를 알려줍니다 . 로 설치할 수 있습니다 .myservice-started
start
$myservice
start
myservice
update-rc.d
나는이 솔루션이 방해가되지 않기 때문에 좋아한다. 업데이트가 기존 init.d
스크립트를 변경해도 이러한 추가 스크립트에는 영향을 미치지 않습니다. 하지만 당신의 신출내기 스크립트에 대한 변경이 기억 되는 이 필요합니다.
다음과 같이 보일 수 있습니다 :
#!/bin/sh -e
### BEGIN INIT INFO
# Provides: myservice-started
# Required-Start: $myservice
# Default-Start: 2 3 4 5
# Short-Description: send upstart signal after starting myservice
# Description: myservice needs to run before some upstart services can run
### END INIT INFO
. /lib/lsb/init-functions
case "$1" in
start)
log_daemon_msg "Signaling myservice started..." "myservice-started"
initctl emit myservice-started --no-wait
;;
*)
log_action_msg "Usage: /etc/init.d/myservice-started start"
exit 1
;;
esac
exit 0
myservice를 기다리는 upstart 스크립트는 다음 myservice-started
이벤트를 수신 할 수 있습니다 .
start on myservice-started