1. MobaXterm을 이용한 EC2 인스턴스 연결
MobaXterm을 실행해 session 버튼 클릭
1 - SSH 클릭
2 - 접속하고자 하는 인스턴스의 퍼블릭 or 탄력적 IP 입력
3 - username은 ubuntu
4 - 인스턴스를 만들 때 다운 받았던 ppk 파일 선택
2. JDK 설치 - 설치가 되어 있다면 생략
sudo apt-update
sudo apt-update sudo apt install openjdk-11-jdk
3. 실행 중인 서버가 있다면 멈추기
ps -ef | grep jar
sudo kill 17962
4. GitHub에서 소스코드 다운받기
- github에 소스코드를 올리면 해당 소스코드를 서버로 다운받아 build 하는 방식
git clone 깃허브주소
5. gradlew 실행권한 주기
- 위에서 생성된 파일 위치로 가서 실행권한 주기
chmod u+x gradlew
6. gradlew로 프로젝트를 jar 파일로 변경
./gradlew build: test 코드를 포함해서 프로젝트를 실행파일(jar)로 변경
./gradlew bootjar: test 코드를 제외하고 프로젝트를 실행파일(jar)로 변경
7. 배포 -> nohup으로 실행
application-dev.yml 파일을 만들어서 외부에 노출되면 안 되는 특정 변수들을 환경변수로 설정해 놨기 때문에 이 상태로 jar 파일을 만들면 환경변수들이 주입되지 않아 실행을 하지 못한다.
필요한 환경변수들을 설정하여 실행
- nohup: Linux java -jar 백그라운드 실행, 사용자가 로그아웃해도 백그라운드로 실행되게 하는 명령어
- Dspring.profile.active=dev: 개발환경에 맞는 Spring Profile 설정
- 환경변수 매핑: Ddb.username=xxxx
- log.out: 표준출력 쓰는 파일
- error.out: 정성작으로 실행이 안된 경우 에러출력 쓰는 파일
- &: 백그라운드로 실행하겠다는 의미
nohup java -jar -Dspring.profiles.active=dev -Ddb-username=xxx -Ddb-password=xxx -Dmail-usernmae=xxx -Dmail-password=xxx -Ds3-access-key=xxx -Ds3-secret-key=xxx /home/ubuntu/sprint2/libs/backend-0.0.1-SNAPSHOT.jar 1>~/log.out 2>~error/out &
8. postman을 사용하여 확인
gradle build시 서버 멈춤 현상 해결 방법 - Swap 메모리 사용
- 가상 메모리가 부족해서 발생하는 문제
Swap 메모리 : RAM의 메모리가 부족하므로, 리눅스의 HDD 공간을 RAM처럼 사용하는 것.
sudo dd if=/dev/zero of=/swapfile bs=128M count=32: dd 명령어를 통해 swap 메모리 할당
sudo chmod 600 /swapfile: swap 파일에 대한 읽기 및 쓰기 권한을 업데이트
sudo mkswap /swapfile: Linux swap 영역을 설정
sudo swapon /swapfile: swap 공간에 swap 파일을 추가하여 swap 파일을 즉시 사용할 수 있도록 만들기
sudo swapon -s : 성공했는지 확인
sudo vi /etc/fstab: /etc/fstab 파일을 편집하여 부팅 시 swap 파일을 활성화
/swapfile swap swap defaults 0 0: 편집기에서 파일을 열고, 파일 끝에 다음 줄 새로 추가하고 파일을 저장한 다음 종료