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
=>키등록을 위한 패키지 설치
=>키를 추가
=>저장소를 추가
2)설치
=>패키지 업데이트
sudo apt-get update
=>설치
sudo apt-get install docker-ce docker-ce-cli containerd.io
=>버전 확인
sudo docker version
=>서비스 등록 및 실행
3)확인
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 |