본문 바로가기
Study/AWS

AWS(3)

by 왕방개 2024. 4. 13.

1.EC2 개요

=>AWS의 IaaS(Infra as a Service)

=>OS(AMI)가 설치된 컴퓨터를 빌려주는 것

 

2.EC2 인스턴스 생성 및 원격 접속

=>AWS의 EC2 서비스 접속

 

=>인스턴스 시작을 클릭한 후 선택

-이름 입력

-AMI(운영체제) 선택

-인스턴스 유형(하드웨어) 선택

-키페어를 선택하거나 생성; 원격 접속을 위해서 필요

-네트워크 설정

보안 그룹을 생성하거나 선택하고 기본 포트중 ssh, http,https 설정 가능

스토리지 설정: 저장공간에 대한 설정

-고급 세부 정보나 요약(컴퓨터 대수를 설정 가능)은 기본 옵션 사용

-전부 설정 후 [ 인스턴스 시작]을 누르면 가상 서버가 만들어집니다

 

=>원격 접속

-준비물:pen파일 과 ec2의 public IP

-터미널에서 ssh -i 키페어 파일경로 AMI이름@publicIP

 

3.MySQL Server를 설치해서 외부에서 사용가능하도록 수정

1)설치

=>패키지 정보 업데이트:sudo apt-get update

 

=>설치:sudo apt-get install mysql-server

 

=>확인:mysql --version

 

2)관리자 비밀번호 설정

=>MySQL 에 루트 계정으로 접속:sudo mysql -u root -p

비밀번호는 설정한 값 ( 최초는 아예 없거나 ubuntu로 설정되있음)

 

=>mysql 데이터베이스 사용:use mysql;

 

=>관리자는 로컬에서만 접속하도록하고 비밀번호를 수정:alter user "root"@"localhost" identified with mysql_native_password by "하고싶은비번";

 

=>변경 내용 적용:flush privileges;

 

 

3)외부 접속 가능한 유저 생성:관리자 권한을 가진 설정 파일 변경

=>관리자로 접속:sudo su

 

=>설정 파일 수정하는데 bind-address: 0.0.0.0 으로 설정

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

수정은 i를 누르고 작업

저장은 esc 누르고 :wq!

 

=>수정한 후 mysql 재시작: service mysql restart

 

=>mysql에 관리자로 접속: mysql -u root -p

 

=>데이터베이스 생성: create database 데이터베이스이름;

 

=>유저 생성:create user '유저이름'@'%' identified by '비밀번호';

-@은 유저이름 과 %을 구분하기 위한 것이고 %은 0.0.0.0 과 의미가 같습니다

-% 대신에 IP를 작성하면 그 IP를 가진 곳에서만 접속이 가능

 

=>권한 부여:grant all privileges on 데이터베이스 이름.* to '유저이름'@'%';

-데이터베이스이름.* 은 itstudy라는 데이터베이스의 모든 테이블에 사용 가능한 권한입니다

-itstudy 대신에 *을 입력하면 모든 데이터베이스 사용이 가능하고  * 대신에 테이블이름을 입력하면 

-그 테이블만 사용이 가능

 

=>변경 내용 적용:flush privileges;

 

4)3306 번 포트에 외부에서 접속 가능하도록 보안 그룹을 수정

=>EC2 인스턴스 콘솔에 접속해서 보안 탭에서 보안 그룹 ID를 클릭해서 수정

-인바운드 규칙을 수정해서 3306번 모드 IP에서 접속가능하도록 수정

 

5)다른 컴퓨터에서 접속 확인

=>DB HOST은 EC2 의 public IP

=>port 는 3306

=>여기까지 했는데 오류가 뜨면 driver properties 탭에서 public key 허용을 True로 변경

 

4.Docker 설치

=>Linux의 중앙 저장소에 도커 프로그램이 등록되어 있지 않아서 도커는 저장소를 linux에 등록을 하고 설치해야 함.

일부 프로그램은 도커 처럼 key 등록을 하고 저장소를 등록한 후 패키지 정보를 업데이트 한 후 설치하기도 합니다.

 

1)저장소를 등록

=>패키지 업데이트

sudo apt-get update

 

=>키등록을 위한 패키지 설치

sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

 

=>키를 추가

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

=>저장소를 추가

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

 

echo   "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
 
 

2)설치

=>패키지 업데이트

sudo apt-get update

 

=>설치

sudo apt-get install docker-ce docker-ce-cli containerd.io

 

=>버전 확인

sudo docker version

 

=>서비스 등록 및 실행

sudo systemctl enable docker
sudo systemctl start docker
sudo docker run hello-world

 

3)확인

sudo docker ps -a
 

5.탄력적 IP 할당(Elastic IP)

=>서버는 고정된 IP를 가지고 있어야 클라이언트가 접속할 수 있습니다

=>AWS에서는 탄력적 IP를 이용해서 하나의 고정된 IP를 배정합니다

1개는 무료이고 그 이후 추가되는 IP는 유료입니다

 

6.Django Application을 EC2 에 배포

1)Linux 에 git 을 설치

sudo apt-get install git

 

2)Django Application 생성

=>가상 환경 생성

python3 -m venv ./myvenv

 

=>가상환경 활성화

myvenv\Scripts\activate

 

=>프로젝트 생성 및 실행

pip install django

 

django-admin startproject 프로젝트이름

 

cd 프로젝트이름

 

python manage.py runserver

 

브라우저에서 127.0.0.1:8000 으로 접속해서 확인

 

=>애플리케이션이 어느 컴퓨터에서나 실행 가능하도록 settings.py 의 ALLOWED_HOSTS=[*] 로 수정

 

=>외부에 배포를 하기 위해서 패키지의 의존성 관련 텍스트 파일을 생성

pip freeze > requirements.txt

 

=>git hub에 업로드

-git hub에서 repository 생성

 

-현재 프로젝트에서 연결하고 업로드

 

git init

 

git add .

 

git commit -m "메세지"

 

git remote add 브랜치이름 githubURL

 

git push 브랜치이름 main

 

=>ec2에서 작업

-파이썬 설치

sudo apt-get update

sudo apt-get upgrade python3

sudo apt-get install pip

 

-git clone

git clone githubURL

 

-cd 디렉토리

 

-sudo pip install -r requirements.txt

 

-sudo python3 manage.py runserver 0.0.0.0:80

 

6.도메인 연결


1)Route53
=>도메인을 발급하고 관리해주는 서비스
=>일반적으로 웹 애플리케이션을 IP를 직접 입력하지 않고 기억하기 쉬운 도메인을 이용합니다.
=>HTTPS는 IP에는 적용할 수 없고 도메인에만 적용 가능
=>도메인을 발급받아서 HTTPS를 적용하는 것은 최근에는 필수
모바일이나 웹 브라우저에서 HTTP로 접속하면 경고가 발생하거나 서비스가 안되는 경우가 있을 수 있음
=>도메인을 발급하고 DNS(Domain Name Service) 역할을 하는 서비스는 많은데 AWS에서 제공하는 서비스가 Route53 입니다.

'Study > AWS' 카테고리의 다른 글

AWS(6)-S3에 파일 upload(Django, Spring Boot, react)  (2) 2024.04.17
AWS(5) - DataBase  (0) 2024.04.16
AWS(4)  (0) 2024.04.15
AWS(2)-EC2 를 활용해 MySQL 접속  (0) 2024.04.11
AWS  (0) 2024.04.09