1️⃣ keypair.pem 다운로드
EC2를 처음 생성할 때 받은 keypair를 잘 보관해 둔다. (딱 한 번만 다운로드 가능)
2️⃣ 경로 이동 후 keypair의 권한 변경
keypair가 있는 곳으로 경로 이동
$ cd ~keypair경로
내 경우
> cd /Users/컴퓨터이름/Downloads
keypair의 권한 변경
$ chmod 600 keypair이름.pem
keypair 이름이 abcd.pem 일 경우
> chmod 600 abcd.pem
을 터미널에 입력해 준다.
3️⃣ 터미널에서 접속
터미널에서 접속
$ ssh -i key-pair-이름.pem username@EC2퍼블릭IPv4DNS
> ssh -i /key-pair-이름.pem username@EC2퍼블릭IPv4DNS
여기서 내 username이 뭔지 몰라 조금 헤맸다.
접속 명령어를 입력했더니...
❗️ This key is not known by any other names
The authenticity of host EC2퍼블릭IPv4DNS (xx.xxx.xxx.xxx)' can't be established.
ED25519 key fingerprint is SHA256:-----------/-------------.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?
여기서 yes를 입력한 후 Enter를 누른다.
❗️ SSH known hosts
Warning: Permanently added 'EC2퍼블릭IPv4DNS' to the list of known hosts.
위의 경고가 발생했다. 그래서 아래 명령을 통해 호스트 관련 파일을 삭제했다.
$ ssh-keygen -R EC2퍼블릭IPv4DNS
4️⃣ 연결 성공
5️⃣ root 계정으로 전환
이후에 할 작업인 chmod는 root user인 상태에서 진행해야 되기 때문에 root 계정으로 로그인을 해야 한다.
$ whoami
ubuntu
$ su
whoami 명령어를 통해 현재 사용 중인 실질적인 아이디를 확인할 수 있다.
지금은 ubuntu로 로그인되어 있다.
su는 substitute user의 줄임말인데 다른 계정으로 전환하는 리눅스 명령어다.
사용자의 권한을 root로 변경하기 위해 해당 명령어를 입력해 준다.
$ su [option] [사용자명]
해당 명령어에서 사용자명을 입력하지 않으면 root로 사용자 전환을 한다.
+ su를 이용해 다른 사용자로 전환 후 원래 사용자로 돌아가기 위해서는 exit을 입력하면 된다.
그런데 나는 아무것도 설정한 게 없는데 root 패스워드를 입력하라는 안내가 나온다.
$ sudo passwd
위 명령어를 통해 root 암호를 초기 설정한 후 root로 로그인할 수 있다.
✅ Ubuntu 일 경우
6️⃣ openjdk 설치
설치 가능한 package를 검색한다.
$ apt-cache pkgnames | grep openjdk | sort -r
나는 자바 17 버전을 받고 싶었는데 11 버전만 나왔다.
따라서 아래 명령어를 통해 설치 가능한 패키지 리스트를 최신화했다.
$ sudo apt update
패키지 리스트가 업데이트돼서 그중 openjdk-17-jdk를 설치해 준다.
$ sudo apt install openjdk-17-jdk
+ jdk 설치 후 환경설정
- JAVA_HOME 경로는 '/Library/Java/JavaVirtualMachines/{설치버전}/Contents/Home'이다.
'/Library/Java/JavaVirtualMachines' 디렉토리로 이동해 jdk 설치 버전을 확인한다.
# 디렉토리 이동
$ cd /Library/Java/JavaVirtualMachines
# 해당 디렉토리에 존재하는 파일목록 상세 표시
$ ll
7️⃣ 깃허브 프로젝트 클론
$ sudo git clone {깃허브 프로젝트 url}
8️⃣ 소스코드 빌드
여기까지 진행사항을 요약해 보자면 ec2에 접속해 자바를 다운로드하고 깃허브에 있는 프로젝트를 클론 받은 상태이다.
이제 해당 프로젝트에 내장되어 있는 gradlew를 이용해 빌드를 수행해 jar 파일을 생성해야 한다.
ls 명령어를 통해 디렉토리의 내용을 확인한 후 cd 명령어로 프로젝트 파일로 이동한다.
$ ./gradlew build
빌드가 성공적으로 수행되면 build/libs 에 jar 파일이 생성된다.
🌱 테스트 없이 빌드하기
빌드할 때 테스트를 하지 않고 싶은 경우
./gradlew build --exclude-task test
🌱 환경변수를 설정해 놓았을 경우
export PROD_DB_PASSWORD="password1\!"
만약 환경변수 값에 !, @, #, $ 등이 문자열에 포함되어 있는 경우 이스케이프를 해주어야 한다.
따라서 느낌표 앞에 이스케이프를 위한 특수문자인 \(백슬래쉬)를 함께 입력해 준다.
환경변수를 설정했으면 env 명령어를 통해 저장된 환경변수를 확인할 수 있다.
8️⃣ - 1️⃣ ❗️bash: ./gradlew: Permission denied
하지만 gredlew를 실행할 수 있는 권한이 없어서 Permission denied가 뜨게 된다..!
bash: ./gradlew: Permission denied
이 경우 아래 명령를 통해 gradlew에 실행 권한을 추가해 주면 문제가 간단히 해결되는데..
$ chmod +x gradlew
8️⃣ - 2️⃣❗️chmod: changing permissions of 'gradlew': Operation not permitted
chmod: changing permissions of 'gradlew': Operation not permitted
나의 경우 처음에 5번 과정에서 root 계정으로 전환을 하지 않아 권한 변경 작업이 허용되지 않는다는 문구가 떴다.
이는 chmod는 root user인 상태에서 진행해야 되기 때문이다.
$ whoami
ubuntu
$ su
whoami 명령어를 통해 현재 사용 중인 아이디를 확인해 보았더니 root가 아닌 ubuntu가 나왔다.
따라서 사용자의 권한을 root로 변경하기 위해 해당 명령어를 입력해 준다.
그 후 다시 8-1 과정으로 돌아가 gradlew에 실행 권한을 준 뒤 ./gradlew build를 실행한다.
9️⃣ jar 파일 실행시키기
소스코드 빌드 성공 후 build/libs 디렉토리로 이동해 ls 명령어로 디렉토리 내용을 출력해 보면
- 0.0.1-SNAPSHOT-plain.jar
- 0.0.1-SNAPSHOT.jar
이렇게 두 개의 jar 파일이 생성되어 있는 것을 볼 수 있다.
아래 명령어를 통해 jar 파일을 실행시킨다.
java -jar [파일명].jar
'Back-end' 카테고리의 다른 글
[Spring Boot] 멀티모듈 java.lang.ClassNotFoundException, Gradle 의존성 옵션 (0) | 2023.02.20 |
---|---|
[Spring Boot] DB Schema 및 Data 초기화 schema.sql data.sql (0) | 2023.02.19 |
[Spring Security] CSRF disable? (0) | 2023.01.26 |
[Spring Boot] RestController, ResponseEntity란? (0) | 2023.01.20 |
[Spring Boot] H2 설치, Spring Boot H2 연결 (0) | 2023.01.18 |