AWS란?
아마존 웹 서비스(영어: Amazon Web Services; AWS)는 아마존닷컴이 제공하는 각종 원격 컴퓨팅 서비스(웹 서비스)이다.
아마존 웹 서비스는 다른 웹 사이트나 클라이언트측 응용 프로그램에 대해 온라인 서비스를 제공하고 있다. 이러한 서비스의 상당수는 최종 사용자에 직접 공개되는 것이 아니고, 다른 개발자가 사용 가능한 기능을 제공하는 플랫폼을 제공하는 PaaS이다.
아마존 웹 서비스의 각종 서비스는 REST 프로토콜 및 SOAP 프로토콜을 통해 접근, 이용 및 관리가 가능하다. 비용은 실제 사용량에 따라 결정되며, 일부 서비스의 경우 미리 고정된 금액을 지불하는 형태도 있다.
1. Amazon 아이디 생성 및 로그인
- 최초 계정 생성의 경우 해외결제가 가능한 카드를 등록해야 한다.(1달러 결제 진행)
- 결제가 안되는 카드거나 잔액이 없는 경우 인스턴스 시작 불가
2. 우측 상단 나라 탭에서 서울 설정
- 서울을 제외한 다른 국가로 설정하여 시작하는 경우 속도가 현저히 저하됨
- 만약, 국가를 잘못 선택하여 시작했던 경우 인스턴스를 삭제 후 다시 구성해야 함
3. AWS 서비스 탭에서 ec2 검색 후 첫번째 EC2 선택
4. 인스턴스 시작
5. 유저 환경에 맞는 인스턴스 선택
- 2018년 7월 현재는 Ubuntu 16.04 LTS SSD Volume Type을 선택하고 업데이트를 진행
- 향후 18.04 버전이 업데이트되어 선택 가능하다면 해당 버전을 선택하는게 좋다.
6. 인스턴스 유형 선택
- 표시한 2번째 유형을 선택 후 우측 하단 다음 버튼 선택
7. 보안 그룹 구성 탭 선택
- 3~5단계는 Pass
7-1. 보안 그룹 구성 설정
- 보안 그룹 이름과 설명 부분 수정
- default값으로 launch-wizard라고 설정되어 있는데 추후 알아보기 어려우니 본인이 식별하기 쉽게 수정.
- 나의 경우는 EC2 Security Group으로 설정
8. 키 페어 생성 및 다운로드
- 기존 키 페어가 없는 경우 새 키 페어 생성 후 다운로드
- 키 페어 이름은 본인이 원하는 것으로 작성
- 인스턴스 시작
9. 인스턴스 이름 수정
- 표시한 Name의 Default값이 비어있으니 원하는 이름으로 수정하면 됨.
10. pem
파일 경로 지정
보안 상 중요한 파일이기 때문에 숨김폴더인 .ssh폴더로 이동시킨다.
mv ~/Downloads/fc-8th.pem ~/.ssh
11. ssh
명령어 실행
ssh -i ~/.ssh/fc-8th.pem ubuntu@ec2-13-209-87-29.ap-northeast-2.compute.amazonaws.com
- @ 뒤에 있는 부분은 아래 표시된 퍼블릭 DNS(IPv4) 값.
- 개별적으로 할당되는 값이 다르기 때문에 아래 표시된 부분을 복사하여 @ 뒤에 붙여넣기 할 것.
- 실행하면 터미널에서 아래와 같은 메시지가 나오게 되고 yes를 입력하여 접속 진행.
The authenticity of host 'ec2-13-124-186-240.ap-northeast-2.compute.amazonaws.com (13.124.186.240)' can't be established.
ECDSA key fingerprint is SHA256:F6G+EOXm92kZYD8V7XNIUeTaOatVfaqmM0pLhfnk0mw.
Are you sure you want to continue connecting (yes/no)?
- 만약 진행 중 아래 와 같은 메시지가 나온다면
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0664 for '/home/che1/.ssh/EC2-Che1.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 "/home/che1/.ssh/EC2-Che1.pem": bad permissions
Permission denied (publickey).
- 다음의 명령어로
pem
파일의 권한을 제한해준다.chmod 400 pem 파일명
여기서 pem 파일명은
- 키 페어 생명성 및 다운로드 챕터에서 받은 pem 파일명으로 나의 경우엔 fc-8th.pem이 됨
- l(엘) 명령어로 pem파일이 읽기만 가능한지 확인
-r-------- 1 ksw ksw 1.7K 7월 3 16:18 fc-8th.pem
<- 이런식으로 되어 있어야 함.
- 터미널 창이 제목이 아래처럼 변경되면 AWS서버에 접속이 된것임.
서버 환경 설정
1. Locale 설정
sudo vi /etc/default/locale
- 다음을 추가한 뒤 서버에 재접속
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_ALL=en_US.UTF-8
2. 기본 설정
- 패키지 정보 업데이트
sudo apt-get update
- 패키지 의존성 검사 및 업그레이드
sudo apt-get dist-upgrade
- 간혹 보라색 배경의 Package configuration 화면으로 encoding타입 설정하라고 하면 UTF-8 선택.
2-1. 만약 접속이 안되는 경우
- 인바운드 규칙보기 탭을 열어보고 포트: 22, 프로토콜: tcp 소스가 0.0.0.0인지를 확인
3. zsh 설치
sudo apt-get install zsh
4. oh-my-zsh 설치
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
5. root유저로 전환
sudo su
6. ubuntu 유저의 shell을 변경
chsh ubuntu -s `which zsh`
- whici zsh의 양쪽 끝은 따옴표가 아니라 키보드의 탭( Tab)키 바로 위에 있는 억음부호(`) 이다.
7. ~/.zshrc의 첫 번째 줄 주석 해제 (아래 부분)
export PATH=$HOME/bin:/usr/local/bin:$PATH
8.exit후 ssh재접속
ssh -i ~/.ssh/fc-8th.pem ubuntu@ec2-13-209-87-29.ap-northeast-2.compute.amazonaws.com
pipenv 환경 설정
1. pip설치 및 version다운
sudo apt-get install python-pip
sudo python -m pip install -U pip
2. pipenv 설치
sudo -H pip install -U pipenv
python환경 설정
1. pyenv 설치
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
2. vi ~/.zshrc에서 맨 아래에 추가
export PATH="/home/ubuntu/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
3. pyenv를 위한 requirements설치
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재접속
ssh -i ~/.ssh/fc-8th.pem ubuntu@ec2-13-209-87-29.ap-northeast-2.compute.amazonaws.com
4. pyenv 3.6.5 설치
pyenv install 3.6.5
- pyenv는 지속 업데이트 되므로 추후엔 3.6.5 이상을 사용할수 있음
Django 프로젝트 시작
1. deploy 폴더 생성 및 Django 기본 설정
~/projects/
deploy/
ec2-deploy/
git init, gitignore
pipenv install django
pipenv shell / django-admin.py startproject config
mv config app
2. ALLOWED_HOSTS 추가
# settings.py
ALLOWED_HOSTS = [
'localhost',
'127.0.0.1',
'.amazonaws.com',
]
config
폴더의settings.py
파일로 들어가 위와 같이 추가하여 접속을 허용해준다.
3. scp를 사용하여 서버에 업로드하기
scp -i ~/.ssh/fc-8th.pem \
-r ~/projects/deploy/ec2-deploy \
ubuntu@ec2-13-209-87-29.ap-northeast-2.compute.amazonaws.com:/home/ubuntu/project
위의 명령어를 구분하면 아래와 같다.
scp -i 키페어경로 -r 보낼폴더경로 유저명@퍼블릭DNS:받을폴더경로
보안 그룹에 포트 추가하기
1. 해당 보안그룹 편집
2. 규칙추가
- 포트범위는 8000으로 소스는 위치 무관
3. runserver 실행
./manage.py runserver 0:8000
4. 브라우저 에서 runserver 실행확인
ec2-13-209-87-29.ap-northeast-2.compute.amazonaws.com:8000
Reference
Comments