AWS EC2 인스턴스 설정하기

GonnabeAlright·2022년 3월 8일
0
post-thumbnail

linux 프리티어, region 서울로 생성하겠습니다.
만약 region이 해외로 지정될 경우 ec2에 접속한 터미널이 다소 느릴 수 있습니다.
region이 서울이 아니어도 기존에 생성된 ec2 인스턴스 이미지를 복사하여 원하는 region으로 옮겨 인스턴스를 새로 생성할 수 있습니다. 하지만 몇 백원의 요금이 추가될 수 있으므로 원하는 지역으로 잘 생성하시기 바랍니다.

먼저 인스턴스에 접속하기 위해서는 터미널로 원격지에 있는 서버에 SSH 연결을 해야합니다. Windows의 경우 putty를 설치해야 하며 Mac은 기본 터미널에서 SSH 연결을 지원하기 때문에 설치할 필요가 없습니다.

인스턴스를 생성하고 받은 키페어를 이용하여 원격지에 접속합니다.

일반적으로 linux는 ec2-user를 사용합니다.

SSH 접속

Linux

ssh -v -i 키페어.pem ec2-user@[퍼블릭 IPv4 DNS]

Ubuntu

ssh -v -i 키페어.pem ubuntu@[퍼블릭 IPv4 DNS]

permisson denied ERROR 발생시

chmod 400 [다운로드 받은 키페어 경로]/[키페어 이름].pem

키페어 파일에 읽기 권한을 부여합니다.

nvm 설치

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
. ~/.nvm/nvm.sh
source ~/.nvm/nvm.sh

node 설치

nvm install node

설치 확인

node -v
npm -v

yarn 설치 (npm)

npm install yarn -g

yarn 설치 (curl)

curl -o- -L https://yarnpkg.com/install.sh | bash

Git clone

git clone [깃 저장소 주소]

깃 저장소가 private일 경우 매번 로그인을 해줘야 합니다. 하지만 깃 원격지 주소를 연결할 때 깃에 저장된 액세스 토큰을 주소에 넣어주면 로그인 과정을 생략할 수 있습니다.

Git 액세스 토큰 추가

git remote set-url origin https://<your-access-token>@github.com/username/repo.git

mySQL 설치

Trouble Shooting

저의 경우 기존에 설치했던 mysql5 버전(mysql57-community-release-el7-11.noarch)과 충돌이 일어나 설치하려는 mysql8 버전을 설치하면 계속해서 에러가 발생하고 mysql -V 명령어를 입력하면 command not found가 발생하였습니다.

따라서 기존에 설치했던 mysql57-community-release-el7-11.noarch를 삭제합니다.

yum remove mysql57-community-release-el7-11.noarch
sudo yum list installed | grep mysql
sudo yum remove mysql80-community-release.noarch
sudo yum clean all --verbose
sudo yum update

rpm을 사용해서 mysql8 버전 설치

rpm -Uvh https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm

mysql 모든 repo 파일 disable

sed -i 's/enabled=1/enabled=0/' /etc/yum.repos.d/mysql-community.repo

mysql-community-server 실행

yum --enablerepo=mysql80-community install mysql-community-server

import GPG KEY

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

mysql-community-server 재실행

yum --enablerepo=mysql80-community install mysql-community-server

mysql 버전 확인

mysql -V

yum 업데이트

sudo yum update

mysql 시작 및 status 확인

sudo systemctl start mysqld
sudo systemctl status mysqld

characterset 설정 및 원격지 접속 허용

vim /etc/my.cnf
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
bind-address=0.0.0.0
FLUSH PRIVILEGES;

mysql 재시작

systemctl restart mysqld

mysql 임시 비밀번호 확인 (root@localhost: <임시 비밀번호>)

cat /var/log/mysqld.log | grep

mysql root 계정 접속

mysql -u root -p

root 비밀번호 변경

ALTER user 'root'@'localhost' identified with mysql_native_password by '새 비밀번호';

user, host 확인

SELECT Host, User from user;

User 생성

CREATE USER 'hongjinhyeok'@'localhost' IDENTIFIED BY 'Gonnabea1right!';

로컬호스트 -> 원격 접속 허용

UPDATE mysql.user SET Host='%' WHERE Host='localhost' AND User='hongjinhyeok';
UPDATE mysql.db SET Host='%' WHERE Host='localhost' AND User ='hongjinhyeok';

권한 부여

GRANT ALL PRIVILEGES ON *.* to 'hongjinhyeok'@'%';

변경 내용 적용

FLUSH PRIVILEGES;

mysql 재시작

systemctl restart mysqld

AWS EC2는 서버를 구동시키면 고정 IP가 아니라 매번 변경됩니다. 따라서 고정 IP를 할당 받기 위해서는 탄력적 IP를 생성하고 인스턴스와 연결해야 합니다. 탄력적 IP 요금이 부과되지 않기 위해서는 아래와 같은 조건을 만족시켜야 합니다.

  • 탄력적 IP 주소가 EC2 인스턴스에 연결되어 있습니다.
  • 탄력적 IP 주소와 연결된 인스턴스가 실행 중입니다.
  • 인스턴스에 연결된 탄력적 IP 주소가 하나만 있습니다.
  • 탄력적 IP 주소가 첨부된 네트워크 인터페이스에 연결되어 있습니다.

다음과 같은 조건을 만족시키면서 잘 관리해보세요! 무과금을 위해서 프리티어를 사용하고 있는데 요금이 발생되면 아까우니까요...😂😂😂

✅ Tip

  • 탄력적 IP를 인스턴스와 연결하였다면 호스트명에 탄력적 IP주소를 할당하여 접근하세요!
  • EC2 보안그룹은 포트별로 내 IP로 제한하여 외부 접근을 차단하세요! (인바운드 규칙)
  • AWS Cost Explorer을 활성화시키고 예산을 설정하여 추가 지출을 사전에 방지하세요!

0개의 댓글