1. AWS DevOps
Cron 으로 프로젝트 재시작
서버가 죽었을때 자동으로 재시작 하는 cron 만들기
- 그 전에 if문 조건 옵션에 대해 한번 보고 가보자
- spring-restart.sh 파일 생성
- -z 조건은 프로세스가 종료됐을때이다.
- if 대괄호[] 앞뒤로 한칸씩 띄워줘야 한다!
- deploy.sh 작성
deploy.sh 파일을 실행하면 spring-restart.sh 가 crontab 에 등록된다.
재배포 프로세스 이해
-
기존 서버를 중지 시켜야 함
-
aws-v1 폴더를 통째로 삭제
- rm -r aws-v1(스크립트로 작성되면 물어보는 부분 때문에 스크립트가 작동을 안함)
- rm -rf aws-v1
-
git clone 다운
-
gradlew 실행 권한 주기
- cd /home/ubuntu/aws-v1
- chmod u+x gradlew
-
빌드하기
-
jar를 실행
- cd /home/ubuntu/aws-v1/build/libs
- nohup java -jar /home/ubuntu/aws-v1/build/libs/v1-0.0.1-SNAPSHOP.jar 1>log.out 2>err.out &
-
cron 으로 자동 재시작
- deploy.sh
- echo "crontab 등록 -spring restart..."
- crontab -l > crontab_new
- echo "* * * * * /home/ubuntu/cron-restart/spring-restart.sh" 1>>crontab_new
- crontab crontab_new
- rm crontab_new
많은 절차를 전체 적인 재배포 스크립트를 작성해서 하게 되면 매우 편할것이다!.
4장 정리
배포 v2 소개
EC2서버 생성 및 고정 IP 설정
v1과 똑같이 인스턴스 생성
DHCP(유동ip) 할당 → 남는 IP를 부여해준다, 다른 IP를 변경 부여 해준다
유동 ip로는 서버 운영 불가능!
따라서 고정 IP가 필요하다 → 비용이 비싸다
환경변수와 bashrc
환경변수 만들기
- bashrc 사용
- vi ./.bashrc (재부팅 되고 나서 적용됨)
- source ./bashrc (바로 적용시킬수 있음)
환경변수를 특정파일에만 적용
환경변수 적용 범위
- .bashrc 어디에서나 사용 가능
- 터미널에서 만들고(export) source 적용 -터미널이 꺼지기 직전까지 사용 가능
- 쉘 스크립트(파일)로 변수를 만들고 다른 파일에서 실행하기 위해서는
- ./bashrc 로 등록되어 있던지(광역적으로 설정 되기 때문에 별로임)
- source로 터미널에서 적용이 되어 있던지(터미널이 꺼지면 못씀ㅜ)
- deploy.sh 파일이 실행되는 동안에만 변수를 사용할 수 있으면 된다.
- 파일에 source라는 코드를 작성해 주면 된다.(이게 good!)
- var.sh 파일에 본인이 적용하고 싶은 환경변수 넣어놓기
- deploy.sh 작성
재배포를 고려하여 cron 종료
cron : 서버가 종료시에 자동으로 재시작 해줌
재배포
- 프로젝트 종료
- GitHub 다운
- jar(빌드)
- 실행
근데 만약 재배포 도중에 cron 이 작동하게 되면 꼬이게 된다
따라서! 재배포 시에는 기존 cron을 잠깐 종료시켜줘야 한다
- deploy.sh 파일
오늘의 한마디
남들에게 알려줄 수 있을정도의 aws 잘알이 되어보자.