[AWS EC2에 배포하기]


본 포스팅은 개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.

EC2 인스턴스 생성

시작 전

  • 오른쪽 위에 지역이 서울인지 확인하자

단계 1: Amazon Machine Image(AMI) 선택

  • Ubuntu Server 18.04 LTS (HVM), SSD Volume Type 64비트 (x86) 선택

단계 2: 인스턴스 유형 선택

  • 기본으로 선택된 항목에서 다음 버튼 누르기

    그룹유형vCPUs메모리인스턴스 스토리지EBS 최적화 사용 가능네트워크 성능IPv6 지원
    General purposet2.micro 프리 티어 사용 가능11EBS 전용-낮음에서 중간

단계 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번 포트 개방

이제 접속하게 되면 EC2-error-01

지금 django settings ALLOWED_HOSTS 부분이 비어서 발생

따라서 ALLOWED_HOSTS에 ['.amazonaws.com'] 추가




© 2018. by Dev_Yonghee

Powered by Dev_Yong