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
복사
서버 환경 설정
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 프로젝트 업로드
프로젝트를 업로드하기 전에, 서버에서 작업하기 위한 설정들을 마쳐야 한다. 예컨대, settings 의 ALLOWS_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.