일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 정적 웹 호스팅
- rtB
- git actions
- CRA
- dev-ops #rockylinux #rocky #docker #linux
- AWS
- CI/CD
- 캐시 정책
- CloudFront proxy
- ubuntu #ubuntu14 #서비스등록 #dev-ops #service #init.d
- cloud front
- 웹 호스팅
- s3
- react
- docker
- 라우팅
- igw
- 서브네팅
- ec2
- Jenkins #Dev Ops
- ECR
- docker #도커 #도커 이미지 #도커이미지 #도커 이미지 저장
- GitHub
- ecs
- docker #도커 #도커이미지 #도커 이미지 옮기기
- Web Hostring
- subnet
- CloudFront
- Actions
- ubuntu #java #dev-ops
Archives
- Today
- Total
코딩 범고래의 해저동굴
ubuntu 14 버전에서init.d를 사용하여 jar 파일 서비스 등록하기 본문
docker 내 container로 ubuntu 14를 돌리는데,
컨테이너 내부에 있는 우분투에서
.service 파일을 등록한 뒤 service를 reload 하기 위해 systemctl을 사용하려고 하니
Failed to get D-Bus connection: No connection to service manager.
라는 메세지와 함께 실행이 안되었다.
이는 컨테이너를 실행할 때 --privileged 옵션을 사용 안했기 때문인데
현재 구축해 놓은 우분투 컨테이너를 지우고 다시 작업하려니 정신이 아찔해져서
다른 방법을 찾기로 했다.
바로 init.d를 사용하는 것인데,
cd /etc/init.d
경로를 이동해 준 뒤,
새로운 파일을 만들어준다
vim [등록할 서비스명]
예) vim testProject
이후 상황에 맞는것으로 해당 파일에 입력해주면 된다
[.sh 파일 예시]
#!/bin/bash
### BEGIN INIT INFO
# Provides: tomcat7
# Required-Start: $network
# Required-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/Stop Tomcat server
### END INIT INFO
PATH=/sbin:/bin:/usr/sbin:/usr/bin
start() {
sh /usr/share/tomcat7/bin/startup.sh
}
stop() {
sh /usr/share/tomcat7/bin/shutdown.sh
}
case $1 in
start|stop) $1;;
restart) stop; start;;
*) echo "Run as $0 <start|stop|restart>"; exit 1;;
esac
[.jar 파일 예시]
#!/bin/bash
### BEGIN INIT INFO
# Provides: tomcat7
# Required-Start: $network
# Required-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/Stop Tomcat server
### END INIT INFO
PATH=/sbin:/bin:/usr/sbin:/usr/bin
start() {
nohup java -jar /home/testProject-0.0.1-SNAPSHOT.jar &
}
stop() {
kill -9 `ps -ef | grep testProject-0.0.1-SNAPSHOT.jar | awk '{print $2}'`
}
case $1 in
start|stop) $1;;
restart) stop; start;;
*) echo "Run as $0 <start|stop|restart>"; exit 1;;
esac
참고로 jar파일은 로컬에서 maven으로 spring-boot 프로젝트를 빌드한 파일이다
이후 해당 파일의 권한을 변경해준다
chmod 755 /etc/init.d/[서비스명]
예) chmod 755 /etc/init.d/testProject
그런 뒤 서비스를 등록 한 뒤,
update-rc.d [등록한 서비스명] defaults
예) update-rc.d testProejct defaults
서비스를 실행해 보자
service [방금 등록한 서비스명] start
예) service testProject start
내가 생성한 service는 jar파일을 백그라운드에서 돌리게끔 nohub 으로 실행해 주었기에
아래와 같은 메세지로 나온다.
nohup: appending output to 'nohup.out'
이후 프로세스를 확인해보면 된다.
ps -ef
끄읕
'Dev Ops' 카테고리의 다른 글
Jenkins 포트 설정이 안될 때 (0) | 2022.12.23 |
---|---|
docker 로 Rocky 서버 띄우기 (0) | 2022.07.22 |
도커 이미지를 tar파일로 만들어 다른 서버에서 사용하기 (0) | 2022.07.22 |
내가 구축한 도커 컨테이너를 이미지화 시키기 (0) | 2022.07.22 |
ubuntu 14 버전에서 자바 1.8 설치 (0) | 2022.07.21 |
Comments