참고사이트
Django Project AWS - EC2 배포하기 (Window, ubuntu)
[Django 스터디#9-2] AWS 배포 - puTTY로 SSH 접속하기
AWS사이트에 들어가서 로그인 후 검색창에 EC2 검색 후 클릭합니다.
오른쪽 위에서 위치를 서울로 변경합니다.
인스턴스 시작을 클릭합니다.
클릭하게 되면 인스터스 생성 옵션 창이 뜨는데 운영체제는 Ubuntu를 클릭(프티티어 사용)합니다.
인스턴스 유형은 t2.micro(프리티어 사용) 클릭 후 밑에 새 키 페어 생성 클릭합니다.
클릭 후 창이 뜨면 키 페어 이름을 설정(이름은 본인 마음대로)하고 키 페어 생성을 클릭합니다.
그러면 이러한 키 페어가 다운로드 됩니다. 이 키는 처음에 다운로드가 된 후 더이상 발급받을 수 없기 때문에 잘 보관해야 합니다.
나머지는 건드릴 필요 없고 오른쪽 창에 인스턴스 시작을 누릅니다.
인스턴스 창으로 가서 확인을 해보면 처음엔 대기 중으로 뜨는데 1~2분 정도 지나면 실행 중으로 바뀝니다. 이렇게 인스턴스 생성을 완료했습니다.
PuTTY사이트에서 putty.exe, puttygen.exe를 설치합니다.
puttygen을 켜서 Load를 클릭합니다.
아까 AWS에서 키 페어 생성 후 다운로드 받은 키 페어를 불러옵니다. (키 페어 위치에 왔는데 안보일 경우 PuTTY Private Key Files를 All Files로 바꾸게 되면 보입니다.)
이러한 창이 뜨게 되면 성공적으로 불러오게 됩니다.
그 다음 puttygen창에 Save private key를 클릭합니다.
.ppk 파일을 생성하는데 키 페어의 이름과 같은 이름으로 저장합니다.
ppk 생성도 완료!
HostName은 ubuntu@ + 퍼블릭 IPv4 DNS 를 입력해주면 됩니다.
퍼블릭 IPv4 DNS는 해당 인스턴스를 클릭하게 되면 나옵니다.
SSH -> Auth 로 넘어가 Browse를 클릭합니다.
Browse로 아까 만든 ppk를 불러옵니다.
이러한 SSH터미널이 뜨게 되면서 창이 하나 뜰텐데 "accept"나 "예"를 눌러주면 됩니다.
(SSH터미널에 작성)
# sudo : 최고 관리자 권한으로 명령어 실행
$ sudo apt-get update
$ sudo apt-get install build-essential
# y 입력
$ sudo apt-get install python3
python 설치 확인
$ python3 -V
pip 설치
$ sudo apt-get install python3-pip
# y 입력
pip 업그레이드
$ sudo pip3 install --upgrade pip
SSH에서 프로젝트 폴더를 다운받기 전에 해당폴더에 requirements.txt가 없으면
pip freeze > requirements.txt 를 입력해서 만들어 줍니다. (VScode cmd 터미널에 입력)

프로젝트 폴더에서 settings.py로 이동해 ALLOWED_HOST = ['*'] 로 모든 IP에서 접속할 수 있도록 열어둡니다.

GitHub repository를 배포하기 전에 자신의 프로젝트를 GitHub에 올려야 합니다.
제가 적어놓은 GitHub 사용법으로 따라해주시면 됩니다.
참고 - GitHub 사용법 10번 주의사항에 보시면 자세하게 나와있습니다.
SSH 터미널에 아래 명령어를 입력합니다.
$ ssh-keygen -t rsa -C "본인의 GitHub 계정 이메일주소"
$ ls -al ~/.ssh (public key가 있는지 확인) # .pub 파일
$ cat ~/.ssh/해당파일이름.pub (SSH키를 확인하고 복사)
GitHub 자기계정 (우측 상단) -> Settings -> SSH and GPG keys -> New SSH key를 클릭합니다.
Title(사용자 임의로 작성)과 Key에 방금 cat ~/.ssh/해당파일이름.pub에서 복사한 키값을 넣어줍니다.
GitHub의 프로젝트 repostitory에서 Code를 클릭해 SSH의 주소값을 복사해줍니다.

SSH터미널에 아래 명령어를 입력해줍니다.
$ mkdir www
$ cd www
$ git clone 저장소주소 (복사한 SSH의 주소값)
비밀번호는 1번에 deploy key 생성에서 만들었던 패스워드를 입력하면 됩니다.
아래 명령어로 GitHub에서 받은 프로젝트의 폴더 이름을 확인한 뒤, cd 폴더이름으로 해당폴더로 이동합니다.
$ ls - l

SSH터미널에 아래 명령어를 입력합니다.
$ sudo apt-get install virtualenv
$ virtualenv -p python myvenv (가상환경이름은 임의로 정하면 됩니다.)
$ source myvenv/bin/activate
아까 만들어두었던 requirements.txt로 필요한 모듈을 한번에 다운 가능합니다.
$ pip install -r requirements.txt (VScode cmd 터미널에 입력)
SSH터미널에 아래 명령어를 입력합니다. (마이그레이션을 위한 모듈 설치)
$ pip install psycopg2-binary
$ pip install django
$ pip install djangorestframework
$ pip install Pillow
마이그레이션을 해줍니다.
$ python manage.py makemigrations
$ python manage.py migrate
실행을 하기 전에 AWS홈페이지에서 보안그룹에 들어가서 인바운드 규칙 편집을 클릭해줍니다.

규칙 추가를 눌러 포트 범위에 8000 을 입력해줍니다.

SSH터미널에 python manage.py runserver 0.0.0.0:8000 이나 python3 manage.py runserver 0.0.0.0:8000 을 입력해 서버를 열어줍니다.
퍼블릭 IPv4 DNS + 8000 을 입력해주면 배포가 완성됩니다.

- 서버를 실행시킵니다.
- 'Ctrl+z'를 눌러 해당 프로그램을 정지(pause)시킨 후 shell로 돌아옵니다.
- 'bg' 명령어를 쳐서 해당 프로그램을 백그라운드로 보내어 돌립니다.
- 'disown -h' 명령어로 ssh 연결이 끊어져도 해당 프로세스가 돌아가도록 합니다.
- 터미널 창을 닫습니다.
Error: That port is already in use.
runserver를 다시 실행 시킬 경우 위에 에러가 뜰수 있는데
sudo lsof -t -i tcp:8000 | xargs kill -9
위 명령어 실행 (disown 종료)