EC2
인스턴스 생성
이름 설정
Ubuntu 20.04 프리티어
- 프리티어이면서 20.04 버전의 우분투를 사용할 것이다.
키 페어
- key pair를 ppk 확장자로 받는다.
- 다운 받고 자신의 컴퓨터에 안전하게 보관하도록 하자.
인스턴스 확인
- 전부 설정을 하고 잠시 기다리면 인스턴스 상태가 실행 중이 뜨면서 활성화가 된다.
RDS
MySQL 생성
템플릿
이름 생성
암호 생성
- 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
서버 관련 패키지 설치
- apt-get install apache2 apache2-dev python3-pip libmysqlclient-dev libjpeg-dev python3.9-dev
프로젝트 압축 해제 및 초기 설정
- apt install unzip
- unzip [압축파일명] -d [압축 해제하고 싶은 폴더의 경로]
만약 가상환경 관련 폴더가 있다면 삭제
가상환경 설치
- apt install virtualenv
- virtualenv [가상환경이름 아무거나]
가상환경 활성화
- source [가상환경폴더 이름]/bin/activate
- pip install -r requirements.txt
- 서버를 구동시키기 위한 필요 모듈 정리한 파일이 txt파일임.
- 없다면 직접 freeze를 이용해 만들어서 옮기거나 수동 설치 바람.
- 물론 가상환경 활성화 시키고
아파치 장고 연동
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"
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)를 입력하면 된다.
- 나는 도메인을 매핑 시켜서 설정했다.