AWS EC2 배포(1) - EC2 생성 및 기본 세팅

Y·2023년 4월 10일
0

인프라

목록 보기
1/2

프로젝트를 할 때마다 매번 AWS 서버를 올리는데, 세팅 과정을 매번 찾아보면서 하기보다도 정리해두는 게 좋을 것 같아서 포스팅을 한다.

1. 인스턴스 생성

인스턴스 생성은 AWS 페이지에서 EC2-인스턴스-인스턴스 시작 누르면 된다.
이름 설정해주고, 애플리케이션 및 OS 이미지, 인스턴스 유형 설정해주고 키페어도 새로 생성하거나 기존에 있던 걸로 설졍 해주면됨. 키페어는 서버에 접속할 때 필요하니까 생성한 것을 꼭 잘 보관해둬야한다.
애플리케이션 및 OS 이미지는 나는 대부분 Ubuntu를 썼던 것 같은데 (과제로 ubuntu를 몇 번 다뤄봤어서..) 뭘 써도 크게 상관은 없을듯하다. 인스턴스 유형은 t2-micro, t3-micro는 프리티어로 사용 가능하다.
네트워크 설정은 나중에 보안그룹 수정해줄수 있으니 적당히 넘기고, 스토리지 구성은 프리티어에서 30GB가 최대니 30GB로 설정해준다. 그러고 나면 인스턴스가 생성이 된다.

2. 서버 세팅

1까지는 사실 정리할만한 내용도 아니고, 정리하고자 했던건 여기서부터다. 일단 인스턴스를 생성하고, 로컬에서 서버에 접속하는 환경이라고 하자.
키페어가 내 컴퓨터에 있어야한다. 그리고 키페어를 기반으로 ssh 접속을 해주면 된다. 이때, 키페어가 있는 디렉토리로 들어가서 명령어를 입력해주는데 이 명령어는 인스턴스 페이지에서 '연결'-'SSH 클라이언트'에 있는 명령어를 복사해서 붙여넣기 해주면 된다. 그런데 키페어의 권한 설정이 열려있으면 아래와 같은 오류가 발생한다.

Permissions 0644 for '-' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.

chmod 400 ./(키페어 파일명)을 cmd에 입력해줘서 키페어 파일의 권한설정을 바꿔주면 정상적으로 접속이 된다.

이제 접속을 하면 서버에 이것저것 세팅을 해야한다. 무슨 프로그램을 올리느냐에 따라 다르겠지만 일단 이번에는 자바 스프링 + mysql 을 올리기 위해 서버를 사용할 것이기 때문에 다음 항목들을 차례로 설치하도록 한다.

(1)git
(2)java
(3)mysql

가장 먼저

 sudo apt-get update
 sudo apt-get upgrade

명령어를 입력한다. 현재 사용 가능한 패키지와 버전 목록을 업데이트하고, 목록에 있는 버전에 대해 최신 버전으로 재설치하는 것이다. 대부분 뭘 설치할때는 이 명령어는 매번 입력해줬던 걸로 기억한다... 이후에는

 sudo apt-get install git

을 입력해주면 된다. (그런데 기본적으로 이미 깔려있는듯하다?) 설치 확인해주려면 git --version 입력해주면 된다.
java의 경우 예전에는 파일을 가져와서 저장하고... 복잡했는데 지금은 Openjdk로 바로 설치가 되는 듯하다. 나는 java11을 쓸거라서 java11을 설치해준다.

 sudo apt-get install openjdk-11-jdk
 

를 입력해주면 된다. 설치 확인해주려면 java --version 입력해주면 된다. 이제 환경변수 설정을 해주면 된다.

 vim ~/.bashrc

를 입력해서 해당 파일에 접근해주고, 가장 아래에 해당 문구를 그대로 작성해주면 된다. (=앞뒤에 띄어쓰기 하면 오류남! 띄어쓰기 x)(vim 편집기 사용법대로 쓰면 된다.. i 쓰면 수정, 수정 후 저장할때는 esc버튼 + :wq)

 export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))
 export PATH=$PATH:$JAVA_HOME/bin

그리고 나서

 source ~/.bashrc

해주면 적용됨. echo $JAVA_HOME 해주면 적용된 거 확인할 수 있다.

이제 mySQL 설치해주면 된다.

 sudo apt-get install mysql-server

입력해준다. mysql --version 입력하면 역시 설치 확인해줄 수 있다. 이제 Mysql은 루트 설정 등을 해줘야하니까 접속한다. 처음에는 비밀번호가 없어서, 다음과 같이 입력해서 들어가면 된다.

 sudo mysql -u root -p

패스워드 치라고 나오는데 그냥 엔터치면 된다. 이후에 패스워드 설정해주면 된다.

 alter user "root"@"localhost" identified with mysql_native_password by "암호";

입력해주면된다. 나는 8버전이라 저런데, 다른 버전은 구문이 다륻고 한다. 그러고 나서 암호 적용을 위해 명령어를 또 입력해준다.

FLUSH PRIVILEGES;

이제 비밀번호 적용이 됐다. quit; 입력하면 mysql에서 나올 수 있다. 여기까지 하면 기본적인 세팅은 끝이고, 추가적으로 Mysql을 콘솔에서 다 처리하기에는 솔직히 불편하다... 그래서 로컬에서도 ec2 mysql에 접속할 수 있도록 외부 접속을 허용해준다.

 sudo su

를 통해서 최고 권한을 부여받는다. (나중에 user로 돌아오려면 sudo su - (user name) 입력해주면 된다.) 그리고 현재 디렉토리에 따라서 다른데, 디렉토리가 /#이 될때까지 cd.. 입력으로 이동해준다. /#까지 왔으면 다음 입력을 해준다.

 cd etc/mysql/mysql.conf.d
 vi mysqld.cnf

이후에 해당 파일을 수정해준다. blind-address라는 부분이 있는데, 그걸 찾아서 경로만 수정해주면 된다.

 blind-address = 0.0.0.0

이렇게 해주면 된다. 그리고나서 다음 명령어 입력해서 mysql을 재시작해준다.

sudo service mysql restart

이제 로컬 workbench에 연결을 해주자. 그러려면 ec2 IPv4 주소가 필요한데, 여기서 문제점이 있다. 이 주소는 재시작 할때마다 매번 바뀐다. 재시작 안 하면 되는 거 아닌가요? 싶겠지만 서버 용량에 비해 많은 걸 넣을수록 서버가 자주 뻗는다.. 그러면 서버 뻗을때마다 재시작시키고 각종 환경설정값 매번 바꿔줘야돼서 정말 귀찮다. 그래서 고정 IP를 할당해주도록 한다.
(그런데 이 글 작성하다가 리전을 잘못 설정한걸 발견했다... 그래서 다시 했다....... 리전 설정 꼭 확인해보고 하시길...)

EC2 페이지의 네트워크 및 보안>탄력적 IP 페이지로 들어가서 탄력적 IP 주소 할당 누르고 생성해준다. 설정은 딱히 바꿀 것 없다. 그리고 생성된 탄력적 ip주소 선택하고 작업>탄력적 ip 주소 연결해서 인스턴스랑 연결해주면 된다. 그러면 끝. 그리고 mysql 연결을 위해서 현재 인스턴스의 보안 그룹에 들어가서 인바운드 규칙 편집을 누르고 3306 포트에 대해서 (유형에서 MYSQL/Aurora해주면 됨) 소스에 0.0.0.0/0을 넣어준다.

그다음엔 이제 workbench와 연동만 남았다. 새로 db 생성을 해주는데, connection method를 Standard TCP/IP over SSH로 해준다. 이때 SSH hostname에 ec2 IPv4주소 (public) 입력해주고 username도 ec2 username, key file에 키페어 파일 넣어준다. mysql hostname은 127.0.0.1, server port는 3306, username, password는 각자 설정해준것으로 입력해주면 잘 접속된다.

이까지하면 기본적인 세팅은 끝이다. 이제 그다음으론 Github Actions를 이용해서 CI/CD를 적용해보도록 한다.

profile
개발자, 학생

0개의 댓글