초보 개발자

ec2 본문

AI 웹개발 트랙 - 내배캠/9주차 ~

ec2

taehyeki 2022. 3. 17. 13:54

ec는 elastic computing의 약자이다.

기본적인 서비스이며, 서버를 하나 빌린다고 볼 수도 있다. 

따라서 RAM,CPU등을 설정할 수도 있다.

 

먼저 인스턴스를 생성해보자

ubuntu 20.04버전과 프리티어, 새 키페어를 생성했다.

 

이 키페어를 통해서 서버와 ssh방식으로 통신할 수 있는 것이다. 서버는 공개키를 나는 개인 키를 가지게 되고,

공개키에서 생성한 암호를 개인키에서 풀어서 접속하는 관계, 공개키에서 생성한 암호는 개인키에서밖에 풀 수 없다고 한다. 최초 접속시에는 이렇게 비대칭키(서버는 공개키를 가지고, 유저는 개인키를 가지기에)를 사용하지만, 그 이후에는 같은 키를 공유하여 정보를 암호화, 해독을 한다고 한다 (대칭키 형식) 

 

SSH 명칭부터 접속까지 한 번에 이해하기 1 | 가비아 라이브러리 (gabia.com)

 

가비아 라이브러리

IT 콘텐츠 허브

library.gabia.com

쉽게말해서 다운로드한 파일이 서버에 접속할 때 필요한 카드키라고 생각하자.

 

그리고 이 받은 키페어의 접속권한을 소유자만 읽을 수 있도록 변경해주어야한다.

현재 소유자, 그룹, 그외 사용자 다 읽을 수 있기 때문인 것 같다. 아래와 같이 명령을 해주면 바뀌게 되는데

왜 400이냐하면,

위의 그림을 살펴보면 파일 소유자, 그룹, 그 외 사용자 이 3개가 있다. 그리고 각 각 읽기, 쓰기, 실행이 존재한다.

읽기는 4, 쓰기는 2, 실행은 1이라고 이미 정해져있다. 따라서 각 권한을 주고싶은 것을 더해주면된다.

읽기만 주려면 4, 읽기와 쓰기만 5, 쓰기와 실행만 3, 읽기와 실행만 5, 실행만 1, 이런식으로 말이다. 주고싶지 않은 경우에는 0을 적으면 된다.

 

나는 소유자에게만 그리고 읽기 권한만 주고싶기에 400을 준 것이다.

chmod 400 '파일 경로'

잘 변한 것을 확인할 수 있다.

 

이 후 아래와 같이 입력하면 서버에 접속할 수 있게 된다. 퍼블릭 ipv4주소는 인스턴스에 가면 확인할 수 있다.

인스턴스를 생성하고 접근할 때 무조건 ubuntu인 것은 아니다. 우리가 아까 서버를 우분투 기반으로 만들었기에 ubuntu라고 적힌 것이지 다른 운영체제라면 다른 것이 적힐 것이다.

ssh -i 받은키페어를끌어다놓기 ubuntu@퍼블릭 IPv4 주소

 

나의 경우는 아래와 같다.

ssh -i renshu.pem ubuntu@54.227.229.97

 

긴 화면이지만 저렇게 입력하고 yes를 입력하면 아래와 같이 잘 서버에 접속한 것을 확인할 수 있다.

기본 우분투에는 파이썬, 깃 등이 깔려있긴 하지만, 깡통 그 자체이기에 전부 다 설정을 해주어야 한다.

 

기본적으로 python을 사용하려면 python3을 입력해주어야한다. 하지만 아래의 명령어를 사용하면 python3을 python만 입력해도 자동으로 python3으로 인식하게 만들어준다.

# python 이라는 명령어로 3 버전 이상을 실행하도록 하는 명령어입니다.
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10

차근 차근 아래와 같이 해주자. 아래의 alternaive역시 pip3을 pip로 대체시켜주는 역할을 한다.

# pip3 설치
sudo apt-get update
sudo apt-get install -y python3-pip

# 버전 확인
pip3 --version

# pip3 대신 pip 라고 입력하기 위한 명령어
# 아래 명령어를 입력하면 pip 라고 쳐도 pip3를 작동시킬 수 있습니다.
sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1

이 후에 pip install django를 한 뒤에 django-admin startproject config . 를 했는데 django를 인식을 못하길래

sudo apt install pipenv였나? pipenv 가상환경을 만들어 준 후 그 안에서 django 를 설치하고 프로젝트를 생성하니 잘 되었다.

 

그 이후에 settings.py에 가서 allow_host에 우리의 ipv4주소를 적어두고, python manage.py runserver '0.0.0.0:8000'으로 서버를 열어준다.

 

이렇게 해도 접근이 안될텐데 그 이유는 우리가 인스턴스 보안그룹에 8000번 포트를 열어주지 않아서이다. 아래와 같이 설정해주면 잘 접근이 되는 것을 확인할 수 있다.

'AI 웹개발 트랙 - 내배캠 > 9주차 ~' 카테고리의 다른 글

eb deploy에 관한 내용  (0) 2022.03.26
elb  (0) 2022.03.17
aws ec2를 사용하여 docker 배포해보기  (0) 2022.03.11
docker network  (0) 2022.03.08
docker bind mount  (0) 2022.03.08