[AWS] EC2와 RDS를 이용한 무료 배포

최동혁·2023년 2월 28일
0

클라우드

목록 보기
7/18

EC2

인스턴스 생성

이름 설정

  • 의미 없다.
  • 아무거나 설정하자.

Ubuntu 20.04 프리티어

  • 프리티어이면서 20.04 버전의 우분투를 사용할 것이다.

키 페어

  • key pair를 ppk 확장자로 받는다.
  • 다운 받고 자신의 컴퓨터에 안전하게 보관하도록 하자.

인스턴스 확인

  • 전부 설정을 하고 잠시 기다리면 인스턴스 상태가 실행 중이 뜨면서 활성화가 된다.

RDS

MySQL 생성

  • MySQL을 선택해준다.

템플릿

  • 물론 공짜 버전이다.

이름 생성

  • EC2 만들때랑 마찬가지로 의미없다.

암호 생성

  • db 서버에 접속할 암호이다.
  • 계정은 디폴트로 admin으로 설정되어 있으니 굳이 안건들고 암호를 자신의 암호로 설정하자.

엑세스 허용

  • 연결 항목에 퍼블릭 액세스를 허용으로 해놓아야 한다.
  • 이렇게 해놓지 않으면 EC2에서는 접근이 될지 몰라도 자신의 로컬 컴퓨터에서 workbanch를 통해 접속을 하려면 되지 않는다.

스키마 생성

  • 추가 구성 항목에 있다.
  • CREATE [초기 데이터베이스 이름] 과 같은 뜻이다.
  • 사용할 DB의 이름을 설정하자.

Putty

키페어 저장

  • 아까 다운로드 받은 key pair 파일을 putty를 접속해 집어넣어주자.

  • EC2에 들어가서 만들어진 서버를 보면 퍼블릭 IPv4 DNS가 나와있다.
  • 우리는 이 앤드포인트를 이용해 ssh 접속이나 외부 접속을 할 것이다.

  • putty에 22번 포트로 해당 DNS를 입력해서 ssh 접속을 하자.

  • 위와 같이 로그인 아이디를 치라고 하는데 디폴트는 ubuntu이다.

  • 그러면 위 그림과 같이 활성화가 된다.
  • 루트 사용자로 진행하고 싶으면 sudo su - root 명령어를 입력하면 된다.

FileZilla

  • 물론 github에 프로젝트가 올라가 있는 사람은 git clone으로 프로젝트를 가지고 와도 된다.

  • FileZilla 가장 상단 왼쪽 버튼을 클릭하자.

  • 새 사이트를 만들어준다.
  • 프로토콜은 SFTP, 호스트는 퍼블릭 IPv4 (공인 IP) 주소를 쓰고 포트는 22를 입력한다.
  • 사용자는 ubuntu이고, putty에서 했던것 처럼 키 파일을 넣어준다.

  • 프로젝트를 원하는 폴더 밑에 드래그 해서 옮겨준다.
  • 집파일로 옮겨줘야 한다.

  • 옮겨진 것을 확인할 수 있다.

인스턴스 및 프로젝트 초기 설정

파이썬 설치

  • sudo su - root
    • 관리자 계정으로 로그인
  • apt update
  • apt install python3.9
  • 파이썬 버전은 자신의 프로젝트에 설치된 파이썬 버전과 비슷하게 진행하면 된다.

파이썬 버전 변경

  • update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 2
  • update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
  • update-alternatives --config python3

  • 0번을 입력해서 3.9 버전으로 바꿔준다.

  • 그리고 나서 python3 --version 명령어를 통해 잘 바뀌었는지 확인

서버 관련 패키지 설치

  • apt-get install apache2 apache2-dev python3-pip libmysqlclient-dev libjpeg-dev python3.9-dev

프로젝트 압축 해제 및 초기 설정

  • apt install unzip
  • unzip [압축파일명] -d [압축 해제하고 싶은 폴더의 경로]

만약 가상환경 관련 폴더가 있다면 삭제

  • rm -rf [폴더 이름]

가상환경 설치

  • apt install virtualenv
  • virtualenv [가상환경이름 아무거나]

가상환경 활성화

  • source [가상환경폴더 이름]/bin/activate
  • pip install -r requirements.txt
    • 서버를 구동시키기 위한 필요 모듈 정리한 파일이 txt파일임.
    • 없다면 직접 freeze를 이용해 만들어서 옮기거나 수동 설치 바람.
    • 물론 가상환경 활성화 시키고

아파치 장고 연동

  • 가상환경 활성화 풀기

    • deactivate
  • pip install mod_wsgi

  • vi /etc/apache2/sites-enabled/000-default.conf

LoadModule wsgi_module "/usr/local/lib/python3.9/dist-packages/mod_wsgi/server/mod_wsgi-py39.cpython-39-x86_64-linux-gnu.so"
WSGIPythonHome "/usr"

# 위에 두 줄은  mod_wsgi-express module-config 입력 후 출력 결과 붙여넣기 한 것

WSGIScriptAlias / "/[Project 폴더]/[Project 안의 설정 폴더]/wsgi.py"

WSGIPythonPath "/[Project 폴더]"


<Directory "/[Project 폴더]/[Project 안의 설정 폴더]">
	<Files wsgi.py>
		Require all granted
	</Files>
</Directory>



Alias /static/ /[Project 폴더]/static/

<Directory /[Project 폴더]/static/>
	Require all granted
</Directory>



Alias /media/ /[Project 폴더]/media/

<Directory /[Project 폴더]/media/>
	Require all granted
</Directory>
  • 위의 코드를 가이드라인으로 작성하면 된다.
  • vi 들어가기 전에 mod_wsgi-express module-config 명령어를 입력해서 나온 출력물을 복사한 후 들어가서 붙여넣기를 해야한다.
  • project안의 설정 폴더는 wsgi.py가 있는 폴더를 뜻한다.
  • project 폴더의 경로는 처음 경로부터 다 써주어야 한다.

방화벽 해제

EC2

  • EC2 -> 인스턴스 -> 인스턴스 이름 클릭 -> 보안 -> 보안 그룹 이름 클릭 -> 인바운드 규칙 -> 인바운드 규칙 편집 -> HTTP에 0.0.0.0/0 추가

RDS

  • RDS -> DB 인스턴스 -> 인스턴스 이름 클릭 -> 연결 & 보안 -> VPC 보안 그룹 이름 클릭 -> 인바운드 규칙 -> 인바운드 규칙 편집 -> mysql의 설정에서 소스 부분을 anywhere로 설정

Django db 설정

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'DB이름',
        'USER': '계정',
        'PASSWORD': '패스워드',
        'HOST': 'RDS의 엔드포인트 주소',
        'PORT': '3306',
        'OPTIONS': {
            'init_command': 'SET sql_mode="STRICT_TRANS_TABLES"'
        }
    }
}
  • 해당 프로젝트 settings.py에 위와 같이 db 설정을 해준다.
  • RDS의 엔드포인트 주소는 RDS에 들어가서 엔드포인트 주소를 있는 그대로 넣어주면 된다.
  • DB 이름은 아까 스키마 생성한 이름 그대로
  • 계정은 위에서 admin으로 설정
  • 비밀번호는 자신이 설정한 비밀번호

결과

  • aws에서 발급 받은 퍼블릭 IPv4(공인 ip)를 입력하면 된다.
  • 나는 도메인을 매핑 시켜서 설정했다.
profile
항상 성장하는 개발자 최동혁입니다.

0개의 댓글