프로젝트 배포를 위한 EC2+RDS+GIT ACTION 사용기 목차
1. EC2생성 및 연결 (현재)
2. RDS + EC2설정
3. GITAction + EC2 + CodeDeploy등을 이용한 CD(자동배포)
목차
EC2 인스턴스 생성
AWS가입 및 IAM권한까지는 다 했다고 가정하고 바로 EC2 인스턴스시작(이라 적혀있고 생성이라 보자)
1.인스턴스 생성
나는 Amazon Linux 2023 AMI로 설정했다.
사실 대부분 Ubuntu나 AmazonLinux2를 선택하는 편이다.
내 포스팅으로 끝까지 따라갈거면 똑같이 리눅스로 하는걸 추천함. EC2 서버에서 사용하는 명령어도 달라지기 때문이다. 만약 다른 포스팅도 참고해서할거라면 본인이 어떤 버전을 선택하는지 잘 기억해놓고 찾길 바란다.
2. 인스턴스 유형
인스턴스 유형은 t2.micro(프리티어) 로 그냥 설정하자
3. 키 페어 설정
본인이 발급받은 키페어가 있다면 (.pem파일도 갖고 있고 어느 경로인지 다 기억해야됨!!!) 선택하고
모른다 or 없다면 옆에 새 키페어를 생성해서 잘 갖고 있도록 하자.
나도 앞선 3개는 만든 기억도 없는데 pem파일도 없어서 새로 생성한게 freetier_202310이다.
3-1. 키페어 생성
이름만 작업해주고 키 페어 생성을 누르면 바로 pem파일이 다운받아지니 잘 옮겨놓도록 하자.
EC2연결에 중요한 역할을 한다.
4. 네트워크 설정
처음에 보면 수정할 수 없는 모습인데 옆에 편집 버튼을 눌러서 편집하자.
퍼블릭IP는 차후에 탄력적IP를 발급받을 예정이니 일단 비활성화를 해놓자. 밑에 설명 같이 해둠!
그리고 보안그룹이 있다면 기존을 선택하고 없다면 생성을 선택하자.
보안그룹 이름이나 설명 부분은 고쳐도 되고 안고쳐도 되고.
나는 설명에다가만 어느 ec2의 보안그룹 설정인지 명시해뒀다.
보안 그룹 규칙은 나중에 수정이 가능하다. 이렇게만 설정하고 넘어가도 좋다.
혹시나 미리 해둘거라면 아래와같이 4개를 다 해두록 하자.
사람들마다 등록한 포트가 다 달라서 헷갈렸는데 HTTP/80포트는 기본포트이므로 아이피만 치고 들어가고 싶다면 설정해놓길 바란다.
5. 스토리지
스토리지는 프리티어 제공 최대가 30기가이므로 30으로 넣어도 되고 8~30 중 아무 값이나 입력해도 상관없다.
고급세부는 쓰루하고
6. 요약
요약으로 넘어오면 인스턴스 시작으로 생성이 완료된다.
추가 - EC2 인스턴스 프라이빗IP만 할당된 경우 퍼블릭IP받기
자 위에서 우리 퍼블릭IP 자동할당 안했으니까 이제 탄력적 IP발급을 받아 줄 것이다.
없는 것은 아래와 같이 보이면 없는 것이다.
이렇게 프라이빗 IP어쩌고저쩌고 라고 하면 퍼블릭IP가 없는거니까 탄력적 IP주소 할당받으러 가즈앙
EC2 왼쪽 리스트에서 네트워크 빛 보안 - 탄력적IP로 이동하자.
해당 화면으로 가서 작업 - 탄력적 IP 주소 연결을 누르면 아래와 같이 셋팅하면 된다.
이건 딱 봐도 연결할 인스턴스와 프라이빗주소가 하나씩 밖에 없었어서 쉬울 것이다.
이제 이러고나서 EC2 인스턴스로 가면
퍼블릭 IPv4주소 그리고 퍼블릭 IPv4 DNS에 값이 할당 된 것이 보인다.
다시 인스턴스에 연결 - SSH 클라이언트에 들어가보면
드디어 퍼블릭 DNS를 사용하여 어쩌고저쩌고 라는 멘트로 바뀌어있다.
* 주의점 - 차후 EC2 인스턴스 종료 시, 탄력적 IP주소 할당에 관련하여 릴리즈를 별도로 해줘야 요금부과가 되지 않으니 둘 다 취소해야한다는 점을 인지하고 있길 바란다. 나는 몰라서 3000원정도 삥뜯겼다.
EC2 연결(in Terminal)
위에서 시키는대로 SSH연결을 하는 방법 (맥은 터미널에서 하면 됨)
#페어키.pem 저장해 둔 경로로 이동
chmod 400 페어키.pem
ssh -i "공개키.pem" user명@퍼블릭DNS
참고로 알아두면 좋은 ssh연결에 쓰이는 user이름
앞서 말했듯이 나는 Amazon Linux 사용자라 ec2-user@퍼블릭DNS다.
Amazon Linux 2 또는 Amazon Linux AMI의 경우 사용자 이름은 ec2-user입니다.
CentOS AMI의 경우 사용자 이름은 centos 또는 ec2-user입니다.
Debian AMI의 경우 사용자 이름은 admin입니다.
Fedora AMI의 경우 사용자 이름은 fedora 또는ec2-user입니다.
RHEL AMI의 경우 사용자 이름은 ec2-user 또는 root입니다.
SUSE AMI의 경우 사용자 이름은 ec2-user 또는 root입니다.
Ubuntu AMI의 경우 사용자 이름은 ubuntu입니다.
Oracle AMI의 경우 사용자 이름은 ec2-user입니다.
Bitnami AMI의 경우 사용자 이름은 bitnami입니다.
그리고 실행을 해봤더니 갑자기 에러같은게 뜬다.
The authenticity of host '내가 접속하려는 주소' can't be established.
ED25519 key fingerprint is SHA256:1Z4nS88D//T5S0l4fB29n2tlcgOg0XJ3nQuov2pj0+w.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
보통 최초 접속하려고 할 때 지문 등록하겠냐~ 라는 느낌으로 물어본다고 한다. yes로 하자.
나중에 인스턴스 또 생성해서 접속해보려고하면 또 날 수도 있다고 함
Warning: Permanently added '내가 접속하려는 주소' (ED25519) to the list of known hosts.
ssh_dispatch_run_fatal: Connection to 주소 port 22: Broken pipe
근데 이어서 나는 에러 Connection to 22 port에 에러..? 나 인바운드 규칙 설정했는데..?
찾아보니 SSH연결 후 일정시간 이상 서버와 상호작용이 없을 경우 발생한다고 한다. 내가 위에 저 에러 뜨는거 보고 찾느라 방치해놓은다음 yes 눌러서 진행하니까 났나봄 ㅎㅎ;;
다시 시도하니 정상 접속 되는 것을 볼 수 있다.
근데 이런 경우가 꽤 빈번할 수 있기 때문에 설정해두자.
터미널 config설정
명령어를 입력하여 config파일을 확인하자
vi ~/.ssh/config
해당 파일에 값이 있으면 아래에 추가하고 하나도 없으면 추가해서 작성하고 :wq
Host *
ServerAliveInterval 30
ServerAliveCountMax 5
또 매번 EC2접속할 때마다 퍼블릭IP나 DNS를 카피하거나 외워서 쓰기 번거로우니 호스트이름을 설정하자.
만약에 설정 안하면 늘 페어키 있는 위치에서 접속 + DNS 주소 외우든 해서 번거로움!!!!
위 config파일에 이어서 쓰면 될 것 같은데
Host 호스트별칭
User ubuntu/ec2-user #둘중 본인 서버에 맞게
HostName 퍼블릭IP
IdentityFile 페어키경로
설정이 잘 됐다면 이 뒤로는 아주 간단하게 EC2에 접속할 수 있다.
ssh hyeonjin
EC2 접속 후 설정
참고로 우분투 명령어랑 리눅스 명령어는 좀 다름. 위에서 말했듯이 나는 아마존리눅스 서버다.
자바는 원하는 버전으로 찾아서 선택하고 나는 보통 11이나 17을 많이 써서 둘 다 기록해둔다.
#git설치
sudo yum install -y git
#자바11설치
sudo yum install java-11-amazon-corretto.x86_64
#자바17설치
sudo yum install java-17-amazon-corretto
#TimeZone확인 후 설정
timedatectl
#timeZone KST로 변경
sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
내가 좀 명령어로만 보면 결과값이 잘못될까 두려워하는 불신론자라 사진을 첨부한다.
나같은 사람을 위해 ㅎㅎ..
#인스턴스 재시작 후에도 KST유지를 위한 설정변경 - sudo안붙이면 readOnly에러남
sudo vim /etc/sysconfig/clock
아마 들어가보면 이렇게 기본값이 셋팅되어 있을 것이고 UTC -> Asia/Seoul 로 바꿔주면 된다.
설정 후에는 인스턴스 서버 재부트를 해주면 되겠다.
sudo reboot
그리고 접속종료를 원한다면 Command + D
여기까지 EC2 연결이 끝났다면 이제 mysql설치와 RDS생성 및 연결을 마저 하러 다음 포스팅에 가보자.
'IT이야기 > AWS' 카테고리의 다른 글
AWS EC2서버에 SWAP 적용하기 (Linux) (0) | 2024.10.30 |
---|---|
[AWS] S3 StatusCode 301에러 해결 (0) | 2024.10.22 |
[AWS Redis] SpringBoot + Redis 설정 및 생성, EC2(AmazonLinux) 설정까지 (1) | 2024.02.13 |
[GitActions] AWS EC2로 자동 배포하기 (feat Linux) / GITAction + EC2 + CodeDeploy등을 이용한 CD (0) | 2024.01.18 |
AWS EC2 mysql설치 및 RDS 연동 그리고 배포 (MAC) (0) | 2024.01.17 |