일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 배열
- 친절한 SQL 튜닝
- @PreAuthorize("isAuthenticated()")
- 이클립스 설치
- 연산자
- join
- 논리 연산자
- SpringSecurity 로그인
- 식별자
- StringBuffer
- 객체지향
- SQL튜닝
- SpringSecurity 로그아웃
- 오버라이딩
- 인텔리제이 Web 애플리케이션
- 객체
- spring 게시판 삭제
- 예약어
- 함수
- 산술 연산자
- 상속
- 자바의정석
- SQL
- 오버로딩
- 비교 연산자
- SQL 튜닝
- java
- 스프링시큐리티 로그아웃
- 친절한 SQL
- 반복문
- Today
- Total
gi_dor
AWS 배포 EC2 인스턴스 생성과 연결 배포 , MobaXterm 본문
프로젝트 당시 날짜가 안되어 선생님이 배포를 하셨기에 이렇게 학원 종료후
RDS 도 연결해 보고 이번에 EC2 를 만들어 배포 까지 해보려고합니다
https://product.kyobobook.co.kr/detail/S000001019679
책이 19년도여서 버전이 많이 안맞는다 .. 또한 사람들은 Ubuntu 또는 리눅스2 를 사용하고 책에서는 리눅스1을
사용하기에 쉽지 않아서 여러 블로그를 보며 하기에 시간이 오래걸렸습니다.
AWS 는 Amazon 에서 제공하는 클라우드 서비스 입니다
간단하게 생각하면 Amazon에서 가상의 컴퓨터를 대여해서 사용한다고 생각하면 됩니다
1. EC2
- 가상의 컴퓨터를 대여해준다
- 서버 , 스토리지 , 데이터베이스 등의 서비스를 제공
- 손쉽게 운영체제 ,CPU , RAM , 용량 구성
2. RDS Relational Database Service
- 관계형 데이터베이스 서비스
- 관계형 DB를 대여
Windows
Ubuntu
Java17
Springboot
EC2
RDS
Gradle
MySQL8
1. 인스턴스 생성
2. 새로운 키 생성
3. 네트워크 설정
3. 스토리지 구성
최대 30GB 까지 사용 할수 있다고 합니다
4. 생성
EC2 연결
인스턴스 생성시 만든 key 파일이 있는 곳에서 Git Bash 를 통해 터미널 실행합니다
ssh 명령어를 입력해 인스턴스에 접속
MobaXterm으로 EC2접속
'스프링부트와 AWS로 혼자 구현하는 웹서비스' 책에서는 putty 라는 프로그램을 사용했지만
학원에서는 MobaXterm 이라는 것을 사용하는 것을 볼수 있었다
Windows 만 지원하고 Mac 에서는 사용할수 없다
- SSH 원격 접속(원격 Linux 서버 접속) 가능
- FTP / SFTP 가능
- 윈도우 즐겨 찾기처럼 서버를 등록하고 로그인 및 비밀번호 등 접속 정보를 저장 후 자동 로그인 가능
- 보안 키 또한 저장 가능하여 매우 편리함.
FTP - File Transfer Protocol의 약자이며, 빠른 파일 전송이 주된 목적이다. 쉽게 말해서 Linux(원격 서버)에서 내 PC로 양 방향으로 파일 전송
SFTP - SSH의 파일 전송 버전을 뜻하고, 네트워크 프로토콜 중 하나이다.
https://backendcode.tistory.com/270
https://mobaxterm.mobatek.net/
생성한 인스턴스의 상세보기로 들어가 퍼블릭IPV4 주소를 입력한다 - 탄력적 IP 발급받아서 연결해서 사용
리눅스로 인스턴스 생성 시 ec2-user 를 사용한다고 한다
2월이후로 탄력적 IP 사용시 요금이 청구된다 하루에 0.17달러가 청구되어있더라..
인스턴스 생성시 만든 key
EC2 접속 완료
sudo apt update
0. 시간대 한국으로 변경
sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
date; // KST
1. Java17 , 환경변수
sudo apt install openjdk-17-jdk
java -version
// 자바 환경변수1
sudo nano /etc/environment
// 파일 맨 밑으로 가서
JAVA_HOME=/path/to/java/jdk
PATH=$PATH:$JAVA_HOME/bin
// 자바 환경변수2
nano ~/.bashrc
// 파일 맨 밑
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
2. Gradle
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install gradle // 여기서 아마 4.4.1버전 오래된 버전 설치되었다.
// 신상 gradle
// 알집으로 gradle 설치
wget https://services.gradle.org/distributions/gradle-8.3-bin.zip -P /tmp
// 알집 풀기
sudo unzip -d /opt/gradle /tmp/gradle-7.6.1-bin.zip
gradle --version
Please install unzip on your system using your favourite package manager. 오류 발생시
sudo apt-get update
sudo apt-get install unzip
sudo apt install gradle
3.MySQL
sudo apt install mysql-server // 설치
mysql -u RDS아이디 -h 호스트주소,엔드포인트 -P 3306 -p
// id , password 입력후
show databases; // DB확인
use DB이름; // 사용한 DB 선택
show tables; // DB안에 테이블 확인
// workbench에서 이미 import를 해놨기때문에 DB안에 테이블과 데이터들이 저는 조회가 되었습니다
mysql 에서 빠져 나오기
exit;
4. git , git clone
git clone -b 브랜치명 repository주소
c;one 판 파일을 MobaXterm으로 들어가 application.properties에 DB 접속정보 확인해주세요
저는 VSCode 가 설치되어서 코드가 보이는데 다른분들은 모르겠네요
5. 인텔리제이 - 프로젝트 실행 jar 파일빌드
./gradlew clean
./gradlew build 또는 ./gradlew bootJar
chmod +x gradlew
./gradlew build 를 했을시 72% 에서 30분이 지나도 안되어서 강제종료후 EC2인스턴스 접속이안되서
1시간 ? 정도 기다리면서 EC2 인스턴스 정지도 해보고 재시작도 해보고 재부팅도 했다가 다시 접속되어서
./gradlew bootJar 하니깐 바로 되었습니다
DB 2중화 이후 ./gradlew clean → ./gradlew build bootJar 하니깐 또또또 76%에서 멈추네
./gradlew build bootJar 라고 입력해서 계속 안되는 거였네요
주소를 복사해 해당 파일이 있는 폴더로 이동 MobaXterm에 myapp 폴더 생성 .jar 파일 붙여넣기
cd myapp
java -jar BookHub-0.0.1-SNAPSHOT.jar
nohup java -jar BookHub-0.0.1-SNAPSHOT.jar 1>log.out 2>err.out &
// nohup를 사용하면 프로세스를 실행하고 백그라운드로 이동시킨다고 한다
// 이렇게하면 터미널 세션이 종료되어도 계속 실행된다고 한다
cat err.out // err.out : 2는 에러출력을 뜻한다. 문제가 있을 때는 err.out에 출력
cat log.out // log.out : 1은 표준출력을 뜻한다. 문제가 없을 때는 log.out 파일에 로그를 기록
tail -f // 파일의 마지막만 보여준다고함 , -f를 붙이면 실시간 업데이트 된다고합니다
끼야옷!
http://인스턴스IP 또는 탄력적IP:8080
- 1일차 EC2 , RDS 가 뭔지
- 2일차 RDS 적용 해보기 , EC2인스턴스가 필요하다고함
- 3일차 RDS 프로젝트 적용 됨 , 배포 설정_java git 등등설치
배포 도전 ./gradlew build 74% 1hr 에서 화나서 강제종료 , Ec2 인스턴스 접속안됨 - 4일차 배포안됨 ./gradlew build 74% 30m 에서 화나서 강제종료 , Ec2 인스턴스 접속안됨
./gradlew bootJar 라는게 있어서 사용
배포 성공
참고 블로그
'AWS > CI CD' 카테고리의 다른 글
배포 자동화 중 발생한 문제 (0) | 2024.06.25 |
---|---|
Spring Boot 개인,토이 프로젝트에서 CI/CD (0) | 2024.06.18 |
프로젝트 CI/CD 적용 , 설명 (0) | 2024.06.18 |
AWS EC2 포트 포워딩 (0) | 2024.06.14 |
AWS RDS 데이터베이스 만들기 , 설정 , 연결 (0) | 2024.06.09 |