2018-07-03 TIL(EC2 Deploy 설정 및 ubuntu 명령어)

인스턴스 시작

Amazon Machine Image 선택 –> Ubuntu Server 16.04 LTS (HVM), SSD Volume Type

인스턴스 유형 선택

General purpose, t2.micro

보안 그룹 구성

새 키페어 생성 후 pem파일 다운로드

다운로드 한 파일을 ~/.ssh 폴더로 이동시킨다.

pem 파일 권한 재설정

chmod 400 ~/.ssh/<name>.pem

우분투 서버 접속(?)

ssh -i ~/.ssh/<name>.pem ubuntu@<public DNS>

Locale설정 (tab 누르고 OK에서 엔터)

-> sudo vi /etc/default/locale
LANG=en_US.UTF-8  
LANGUAGE=en_US.UTF-8  
LC_ALL=en_US.UTF-8  

update, upgrade

# 전체 패키지 업데이트
sudo apt-get update
# 의존성 검사하며 업그레이드
sudo apt-get dist-upgrade

zsh설치

sudo apt-get install zsh

oh-my-zsh 설치

curl -L http://install.ohmyz.sh | sh

root유저로 전환

sudo su

ubuntu유저의 shell을 변경 (작은따옴표아님 유의!)

chsh ubuntu -s `which zsh`

~/.zshrc의 첫 번째 줄 주석 해제

export PATH=$HOME/bin:/usr/local/bin:$PATH

exit후 다시 ssh접속

pip설치 및 version다운

sudo apt-get install python-pip
sudo python -m pip install -U pip

pipenv설치

sudo -H pip install -U pipenv

pyenv설치

curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

vi ~/.zshrc에서 맨 아래에 추가

export PATH="/home/ubuntu/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

pyenv를 위한 requirements설치

https://github.com/pyenv/pyenv/wiki/Common-build-problems

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 tk-dev libffi-dev

exit후 다시 ssh접속

pyenv로 필요한 파이썬 버전 설치

pyenv install 3.6.5

pipenv설치

pipenv install

파일 복사

scp -i ~/.ssh/fc-8th.pem \
-r ~/projects/deploy/ec-deploy \
ubuntu@ec2-13......amazonaws.com:/home/ubuntu/project

파일 지우기

ssh -i ~/.ssh/fc-8th.pem ubuntu@ec-13....amazoneaws.com rm -rf /home/ubuntu/project

파일 복사하고 지울 때마다 ssh 나갔다 들어오기

장고 설치

pipenv install django

runserver 띄우기

./manage.py runserver 0:8000

위의 파일 삭제, 복사 과정을 쉘 스크립트에 작성하면 편리하다.

deploy.sh

#!/usr/bin/env bash

IDENTITY_FILE="~/.ssh/FC-8th.pem"
USER="ubuntu"
HOST="ec2-....compute.amazonaws.com"
PROJECT_DIR="~/projects/deploy/ec2-deploy-practice"
SERVER_DIR="/home/ubuntu/project"

# 서버의 파일을 지움
ssh -i ${IDENTITY_FILE} ${USER}@${HOST} rm -rf ${SERVER_DIR}

# 서버에 프로젝트 파일을 다시 업로드
scp -i ${IDENTITY_FILE} -r ${PROJECT_DIR} ${USER}@${HOST}:${SERVER_DIR}

작성 후에 해당 파일에 실행권한을 주기 위해 다음과 같이 입력한다.

$ chmod 755 deploy.sh

그 다음 deploy.sh을 실행시키면 굳이 서버에 접속하지 않아도 로컬에서 서버로 파일 삭제 후 복사 명령을 실행할 수 있다.

Comments