📜

2. AWS EC2 인스턴스 생성 및 설정

Created
2020/12/26 04:33
Tags

EC2 인스턴스 생성

체크리스트
Ubuntu Server로 인스턴스를 생성한다.
pem key를 안전한 곳에 잘 보관한다.
사용자에게 AmazonEC2FullAccess를 부여한다.
보안 그룹의 Inbound 정책에 80, 8080 포트를 추가한다.
이제 부여받은 pem key를 가지고 다음과 같이 인스턴스 서버에 접속 가능하다.
ssh -i [PATH_TO_PEM_KEY] ubuntu@[PUBLIC_DNS_OF_INSTANCE]
Plain Text
복사
이 때 올바른 pem key를 이용했는데 permission error를 뱉어낼 때가 있다. 아마도 pem key의 권한 설정이 잘못 되어 있기 때문이다. 권한이 너무 open되어 있으면 보안상 접속을 거부하는데, 다음과 같은 명령어로 맞는 권한 설정을 해줄 수 있다.
chmod 600 [PATH_TO_PEM_KEY]
Plain Text
복사

서버 환경 설정

이제 서버에서 나의 코드를 돌릴 수 있도록 기본적인 환경 설정들을 해야 한다. 이 부분은 전적으로 Che1's Blog의 내용을 따랐다.
locale 설정
sudo vi /etc/default/locale
Plain Text
복사
LC_CTYPE="en_US.UTF-8" LC_ALL="en_US.UTF-8" LANG="en_US.UTF-8"
Plain Text
복사
기본 설정들
패키지 정보 업데이트
sudo apt-get update
Plain Text
복사
패키지 의존성 검사 및 업그레이드
sudo apt-get dist-upgrade
Plain Text
복사
Python 패키지 매니저 설치
sudo apt-get install python-pip
Plain Text
복사
zsh 설치
sudo apt-get install zsh
Plain Text
복사
oh my zsh 설치
sudo curl -L <http://install.ohmyz.sh> | sh
Plain Text
복사
디폴트 쉘을 zsh로 변경 (재접속 필요)
sudo chsh ubuntu -s /usr/bin/zsh
Plain Text
복사
Python 환경 설정
pyenv 설치 (그냥 conda를 깔아도 될 것 같기는 하다.)
curl -L <https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer> | bash
Plain Text
복사
pyenv 환경변수 설정 (pyenv 설치 시 환경변수 설정을 알려 준다. 그것을 믿고 따라하자.)
vi ~/.zshrc # zsh shell을 이용하지 않는다면 vi ~/.bash_profile export PATH="/home/ubuntu/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
Plain Text
복사
또한, 환경 변수 설정 변경을 바로 적용하고 싶다면 다음 명령어를 통해 가능하다.
source ~/.zshrc
Plain Text
복사
pyenv 필수 패키지 설치
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils
Plain Text
복사
pyenv를 통해 python 설치 (본 프로젝트에서는 3.7.3 버전 이용)
pyenv install 3.7.3
Plain Text
복사
Pillow를 위한 python 라이브러리 설치
sudo apt-get install python-dev python-setuptools
Plain Text
복사
Django 환경 설정 Django 프로젝트는 Ubuntu Server의 /srv/ 디렉토리에 저장한다. 그렇기 때문에 srv 디렉토리의 소유자를 ubuntu 유저로 변경한다. 변경 후 루트 디렉토리에서 ls -la 명령어를 통해 권한을 확인할 수 있다.
sudo chown -R ubuntu:ubuntu /srv/
Plain Text
복사

Ubuntu 서버에 Django 프로젝트 업로드

프로젝트를 업로드하기 전에, 서버에서 작업하기 위한 설정들을 마쳐야 한다. 예컨대, settingsALLOWS_HOSTS 에 다음의 호스트를 추가해 줄 수 있다.
ALLOWED_HOSTS = [ 'localhost', '.ap-northeast-2.compute.amazonaws.com', ]
Plain Text
복사
Git을 이용한 코드 업로드. 다만 .gitignore 을 통해 git에 동기화되지 않은 파일들은 직접 작성해주거나 scp 해주어야 한다.
git remote add origin <https://github.com/[USERNAME]/[PROJECT_NAME].git> git pull <remote> <branch> # 나의 경우엔 origin master
Plain Text
복사
Django 프로젝트 가상환경 설정
Ubuntu 서버에 가상 환경 설치
pyenv virtualenv 3.7.3 [YOUR_LOCAL_VIRTUALENV_NAME]
Plain Text
복사
다음의 명령어로 생성된 가상 환경을 활성화할 수 있다.
pyenv activate [VIRTUALENV_NAME]
Plain Text
복사
가상 환경 내에서 Django 프로젝트 패키지 설치
pip install -r requirements.txt
Plain Text
복사
pip upgrade
pip install --upgrade pip
Plain Text
복사

프로젝트 실행

위에서 8080 포트를 열어 두었으니, 8080포트를 통해 서버에 접속할 수 있다. 다음의 명령어로 프로젝트를 실행시킨 뒤 DNS:8080로 접속해보자.
python manage.py runserver 0:8080
Plain Text
복사
이제 인스턴스 서버의 기본적인 세팅이 끝났다.
E.O.D.