linux 프리티어, region 서울로 생성하겠습니다.
만약 region이 해외로 지정될 경우 ec2에 접속한 터미널이 다소 느릴 수 있습니다.
region이 서울이 아니어도 기존에 생성된 ec2 인스턴스 이미지를 복사하여 원하는 region으로 옮겨 인스턴스를 새로 생성할 수 있습니다. 하지만 몇 백원의 요금이 추가될 수 있으므로 원하는 지역으로 잘 생성하시기 바랍니다.
먼저 인스턴스에 접속하기 위해서는 터미널로 원격지에 있는 서버에 SSH 연결을 해야합니다. Windows
의 경우 putty
를 설치해야 하며 Mac은 기본 터미널에서 SSH 연결을 지원하기 때문에 설치할 필요가 없습니다.
인스턴스를 생성하고 받은 키페어를 이용하여 원격지에 접속합니다.
일반적으로 linux는 ec2-user
를 사용합니다.
Linux
ssh -v -i 키페어.pem ec2-user@[퍼블릭 IPv4 DNS]
Ubuntu
ssh -v -i 키페어.pem ubuntu@[퍼블릭 IPv4 DNS]
permisson denied ERROR 발생시
chmod 400 [다운로드 받은 키페어 경로]/[키페어 이름].pem
키페어 파일에 읽기 권한을 부여합니다.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
. ~/.nvm/nvm.sh
source ~/.nvm/nvm.sh
nvm install node
node -v
npm -v
npm install yarn -g
curl -o- -L https://yarnpkg.com/install.sh | bash
git clone [깃 저장소 주소]
깃 저장소가 private일 경우 매번 로그인을 해줘야 합니다. 하지만 깃 원격지 주소를 연결할 때 깃에 저장된 액세스 토큰을 주소에 넣어주면 로그인 과정을 생략할 수 있습니다.
git remote set-url origin https://<your-access-token>@github.com/username/repo.git
저의 경우 기존에 설치했던 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을 활성화시키고 예산을 설정하여 추가 지출을 사전에 방지하세요!