[AWS EC2에 배포하기]
본 포스팅은 개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
EC2 인스턴스 생성
시작 전
- 오른쪽 위에 지역이 서울인지 확인하자
단계 1: Amazon Machine Image(AMI) 선택
- Ubuntu Server 18.04 LTS (HVM), SSD Volume Type 64비트 (x86) 선택
단계 2: 인스턴스 유형 선택
기본으로 선택된 항목에서 다음 버튼 누르기
그룹 유형 vCPUs 메모리 인스턴스 스토리지 EBS 최적화 사용 가능 네트워크 성능 IPv6 지원 General purpose t2.micro 프리 티어 사용 가능 1 1 EBS 전용 - 낮음에서 중간 예
단계 3 ~ 단계 5
- 다른 설정 없이 다음 버튼 누르기
단계 6: 보안 그룹 설정
- 새 보안 그룹을 생성하여 보안 그룹 이름과 설명에
EC2 Security Group
적기.
단계 7: 인스턴스 시작 검토
새 키 페어 생성을 하고 원하는 키 페어 이름을 적고 다운로드한다.
- 다운로드 완료하면
mv ~/Downloads/bulletin_board.pem ~/.ssh
를 입력하자 - 파일을 옮기면 인스턴스 시작을 누르자
인스턴스에 연결하기
ssh ubuntu@ec2-13-125-93-190.ap-northeast-2.compute.amazonaws.com
실행하면 permisson denied
가 뜰 것으로 예상
왜냐하면 우리가 pem키 생성한 것에 대한 허가된 인증키가 없기 때문
재입력
ssh -i ~/.ssh/gomsinhouse.pem ubuntu@ec2-13-125-93-190.ap-northeast-2.compute.amazonaws.com
private key file 에러발생
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/Arcanelux/.ssh/fastcampus.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/Users/Arcanelux/.ssh/fastcampus.pem": bad permissions
Permission denied (publickey).
pem
파일을 확인해보면 나만 읽을 수 있도록 권한을 수정해야 함
.ssh 폴더
에 들어간 후
chmod 400 [pem파일명]
chmod 400 gomsinhouse.pem
확인해보면 권한이 -rw-r--r--@
에서 => -r--------@
변경됨
-r——–@ 뜻은 즉 나만 읽을 수 있고 나머지는 못 읽게 하는 것
EC2(원격컴퓨터) 접속 후 기본 설치
지금 내 원격컴퓨터에는 깡통이다 (아무것도 설치가 안 되어있는 상태)
따라서 설치를 해보자
# 패키지 정보를 업데이트
sudo apt-get update
# 설치되어 있는 패키지들을 의존성 검사하며 업그레이드
sudo apt-get dist-upgrade
# zsh 설치
sudo apt-get install zsh
# oh-my-zsh 설치
sudo curl -L http://install.ohmyz.sh | sh
# 이렇게 하면 Password: chsh: PAM: Authentication failure 란 에러가 뜬다
# ubuntu라는 유저는 root 권한을 가진 유저가 아니기 때문
# 외부에서 접속은 되지만 root권한은 가지고 있지 않음
# Default shell 변경
# shell 변경 후엔 exit로 연결을 종료한 뒤 재연결
sudo chsh ubuntu -s /usr/bin/zsh
# python3는 ubuntu에 기본적으로 설치되어있음
# 따라서 pip3 설치만 해주면 됨
sudo apt install python3-pip
언어설정(locale)
언어는 한국어로 하지말자 (오류가 났을 때 찾아볼수가 없다 - stackover flow에..)
sudo vi /etc/default/locale
LC_CTYPE="en_US.UTF-8"
LC_ALL="en_US.UTF-8"
LANG="en_US.UTF-8"
TIP (syntax highlighter, autosuggestions)
- syntax highlighter : 해당 명령어가 유효하면 색이 변경 됨
- auto suggestions : 이전에 입력했던 명령어 자동 완성 기능
설치 후 vim ~/.zshrc 에서 plugins=() 항목에 각각 zsh-syntax-highlighting, zsh-autosuggestions 추가
# syntax highlighter 설치
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git
echo "source ${(q-)PWD}/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ${ZDOTDIR:-$HOME}/.zshrc
# 설정 후 적용
source ~/.zshrc
# auto suggestions 설치
git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
# 설정 후 적용
source ~/.zshrc # 설정 적용
django runserver 확인
# vim ~/.zshrc 에서 두 번째 주석 해제 => 이 부분 export PATH=$HOME/bin:/usr/local/bin:$PATH
# pip3 에서 django admin 위치를 찾을 수 없으므로 vim ~/.zshrc 에 추가
# pip3 PATH 추가
export PATH=$HOME/.local/bin:$PATH
# 지금 virtualenv 를 설치안하고 간단하게 test하기 위해서 추가 했던 것
- python3 manage.py runserver 0:8000
그치만 8000번 포트로 runserver 하고나서 외부에서 접속하려고 하면 안됨!
- EC2에는 현재 ssh 22 번 포트만 개방되어 있는 상태
- 보안그룹 항목 인바운드에 8000번 포트 개방
이제 접속하게 되면
지금 django settings ALLOWED_HOSTS 부분이 비어서 발생
따라서 ALLOWED_HOSTS에 ['.amazonaws.com']
추가