유광열 튜터님 강의
- 클라우드: IT 서비스를 운영할 시 필요한 기계들을 온라인으로 대여할 수 있는 서비스
- AWS : 아마존에서 서비스하는 클라우드
- EC2 : AWS에서 대여해주는 서버용 컴퓨터 (Elastic Compute Cloud)
- MobaXterm : 클라우드 서버에 접속하기 위한 프로그램 (콘솔 사용 및 파일 관리, putty와 filezilla 합친 느낌)
EC2에 리눅스를 설치하면 해당 컴퓨터의 시간대가 초기화(UTC+0)되어 DB에 데이터 업데이트 시 잘못된 시간이 저장될 수 있음
→ 대한민국 서울 시간대로 조정해야 함
1) 프로젝트 빌드
# ./gradlew 파일에 실행 권한 부여 해야 할 수 있음
chmod +x ./gradlew
./gradlew build
# 또는
./gradlew bootJar
2) EC2 대여 (인스턴스 생성)
- 키 페어 : 서버에 접속할 수 있는 암호 파일
- 인바운드 규칙 편집 : 외부에서 서버 컴퓨터로 접근할 수 있는 규칙 정함
해당 프로젝트는 8080포트를 사용하고 있음 → 외부에서 해당 포트로 접근할 수 있도록 설정해야 함
3) SSH 접속
✅ EC2 인스턴스 생성 시 .pem 키 파일 다운로드
✅ 보안 그룹에서 포트 22 (SSH) 열려 있어야 함
✅ 인스턴스 퍼블릭 IPv4 주소 확인
1. 키 파일 권한 설정
키 파일 있는 디렉토리 이동 후
chmod 400 first_key.pem # 400: 읽기만 허용
2. SSH 접속
OS가 Ubuntu일 경우 유저네임 ubuntu
ssh -i first_key.pem ubuntu@IPv4 주소
4) TimeZone 설정
관리자(루트) 권한 사용
$ sudo su
현재 시간대 확인
timedatectl
대한민국 시간대로 변경
timedatectl set-timezone Asia/Seoul
5) JDK 다운로드
다운로드 목록 받아옴 (패키지 목록을 업데이트해서 새로운 버전이 있는지 확인)
sudo apt update
목록에 openjdk가 있는지 검색
apt-cache search openjdk
openjdk-17-jdk 설치
apt install -y openjdk-17-jdk
자바가 잘 설치되었는지 확인
java -version
6) 폴더 만들기 / 배포
mkdir my_app # /home/ubuntu/my_app
- 로컬에 있는 mybatis_project-0.0.1-SNAPSHOT.jar 파일을 my_app 디렉터리에 넣기
my_app 디렉토리의 권한을 수정해서 ubuntu 사용자에게 쓰기 권한을 부여
sudo chown ubuntu:ubuntu /home/ubuntu/my_app
# 로컬 터미널
scp -i /Users/t2024-m0206/Documents/Dev/key/first_key.pem /Users/t2024-m0206/Documents/git/Sparta_CodingClub/AWS/build/libs/mybatis_project-0.0.1-SNAPSHOT.jar ubuntu@IPv4:/home/ubuntu/my_app/
ls -l /home/ubuntu/my_app/
7) 서버 프로그램 실행
cd my_app/
nohup java -jar mybatis_project-0.0.1-SNAPSHOT.jar 1>log.out 2>err.out &
nohup: 유저가 콘솔에 접속 중이지 않더라도 서버 실행 유지 (터미널 세션이 끊겨도 계속 실행되도록 해줌)
java -jar : 자바 jar파일 실행 (내부 톰캣용)
파일명 : m + tab 자동완성
1>log.out : 1은 표준 출력, 문제 없을 때 log.out 파일에 로그 기록
2>err.out : 2는 에러 출력, 문제 있을 때 err.out에 출력
&: 백그라운드 실행 (유저가 로그아웃하면 꺼짐. nohup과 같이 사용하면 실행 유지 가능)
8) 로그 확인
cat err.out
cat log.out
tail -f log.out (파일 내용 중 마지막만 보여줌. -f 붙이면 실시간 업데이트)
9) 프로세스 확인 및 kill
자바 프로세스 확인
ps -ef | grep mybatis_project-0.0.1-SNAPSHOT.jar
프로세스 종료
kill -9 프로세스아이디
'DevOps > AWS' 카테고리의 다른 글
마이크로서비스 아키텍처 트러블슈팅: "Connection refused" 오류 해결 (0) | 2025.05.09 |
---|---|
AWS Lightsail 배포 (1) | 2025.05.07 |