AWS 배포 - Java, MySQL설치, DB이전(MacOS)
AWS 배포 - EC2인스턴스 생성,SSH연결(MacOS) | AWS EC2 인스턴스 생성 0.서울로 지역변경하기 1.EC2인스턴스 시작클릭 2.인스턴스 이름적기 3.Ubuntu선택 4.키 페어 생성클릭 5.키 페어 이름적고 키페어파일
jwinjection.tistory.com
이전순서
| 백그라운드에 빌드시키기
1.깃허브 레퍼지토리 클론
git clone repository주소
2.ls 입력하여 클론 잘 되었는지 확인하기
ls
3.폴더에 들어가기
cd 클론폴더명
4.ls입력
ls
5.gradlew가 초록색이 아니라면
실행권한이 없다는 뜻이다
그럴땐 아래 명령어를 입력해주어야한다 초록색이면 안해줘도 된다
chmod +x ./gradlew
6.메모리설정
AWS EC2 프리티어를 사용하다보면 메모리부족 현상이 생겨서 빌드가 제대로 되지않을때가 있다
그래서 미리 설정을 한번만 해두면 된다.
- 일단 dd 명령어를 통해 swap 메모리를 할당한다.(30초 정도 걸림 완료될때까지 기다리면됨)
sudo dd if=/dev/zero of=/swapfile bs=128M count=16
128씩 16개의 공간을 만드는 것이여서 우리의 경우 count를 16으로 할당하는 것이 좋다. 즉, 2GB정도 차지하는 것이다.
- 스왑 파일에 대한 읽기 및 쓰기 권한을 업데이트한다
sudo chmod 600 /swapfile
- Linux 스왑 영역을 설정합니다.
sudo mkswap /swapfile
- 스왑 공간에 스왑 파일을 추가하여 스왑 파일을 즉시 사용할 수 있도록 만든다.
sudo swapon /swapfile
- 절차가 성공했는지 확인한다.
sudo swapon -s
TIP// 여기까지는 아래와같이 ;(세미콜론)을 이용하여 한줄로 붙여서 쓰는것이 가능하다
sudo dd if=/dev/zero of=/swapfile bs=128M count=16;sudo chmod 600 /swapfile;sudo mkswap /swapfile;sudo swapon /swapfile;sudo swapon /swapfile;sudo swapon -s
- /etc/fstab 파일을 편집하여 부팅 시 스왑 파일을 활성화합니다.
편집기에서 파일을 엽니다.
$ sudo vi /etc/fstab
i를 눌러 입력모드로 변경한다
파일 끝에 다음 줄을 새로 추가하고
/swapfile swap swap defaults 0 0
esc 누르고
:wq! 입력하고 엔터
7.build
ls했을때 gradlew가 보이는 폴더에서
아래의 명령어를 입력하여 build를 한다
sudo ./gradlew clean build -x test
8.build/libs로 경로이동
cd build/libs
libs 폴더로 들어오면 빨간색이름의 plain이 붙은 파일과 안붙은 파일이 생성되어있다
안붙은 파일을 사용할것이다
9. jar 파일 실행
jar파일을 실행시키는방법은 두가지가있다
첫번째는 터미털창이 켜져있을때만 실행되는 방식
두번째는 터미널창을 꺼도 계속 AWS 서버에서 24시간 내내 실행되는 방식(백그라운드에 올려놓음)
첫번째방식은 종료하고싶을때 control+c 를 누르면 쉽게종료되고
두번째방식은 종료하고싶을때 프로세스넘버를 찾아서 kill시켜줘야하는 번거러움이 있다
그래서 우선 첫번째 방식으로 에러가 나지는 않는지 실행은 잘되는지 테스트하는 용도로 사용하고
실행이 잘되는것을 확인하면 종료하고 두번째방식을 실행한다
1) 첫번째 방식
java -jar jar파일
ex)
java -jar demo-0.0.1-SNAPSHOT.jar
실행하게되면 스프링부트에서 보던 장면이 보이게 될것이다
웹브라우저로 자신의 외부ip주소:포트번호를 입력하여 상태를 체크해본다
실행이 잘 되면 control+c를 눌러 종료시켜준다
2) 두번째 방식(nohup사용)
nohup java -jar jar파일 & > /dev/null
ex)
nohup java -jar demo-0.0.1-SNAPSHOT.jar & > /dev/null
바로 엔터를 한번만 더 눌러주면된다
몇초 후에 웹페이지 접속후 상태를 체크해 본다
만약 종료 하고 싶다면 아래 명령어를 쳐서 pid를 찾은 후
ps -ef
kill 명령어를 통해 프로세스를 종료시킬 수 있다.
kill -9 pid
10.업데이트 하는법
코드 수정이나 버전업을 하게될경우
pull받고
build하고
현재 실행되고있는 프로세스 죽이고
경로 build/libs 로 이동하고
nohup실행하고
반복되는게 많다
그래서 리눅스에서는 세미콜론을 이용하면
아래와 같이 한줄로 연결동작이 가능하다
cd /home/ubuntu/DayDayPlanner;git pull; kill -9 `ps -ef | grep 'demo-0.0.1-SNAPSHOT.jar' | awk 'NR==1{print $2}'` ; sudo ./gradlew clean build -x test; cd build/libs; nohup java -jar demo-0.0.1-SNAPSHOT.jar & > /dev/null
나는 복북해놓고 쓰는편이다
+ 추후에 공부할 것들
CI/CD를 구축하여 빌드,배포를 자동화하기
NginX를 이용하여 무중단 배포 구현하기
'DevOps > 📡 AWS' 카테고리의 다른 글
AWS 배포 - Java, MySQL설치, DB이전(MacOS) (0) | 2023.05.27 |
---|---|
AWS 배포 - EC2인스턴스 생성,SSH연결(MacOS) (0) | 2023.05.26 |