20211013 TIL

JIHYE·2021년 10월 13일
0
post-thumbnail

오늘 배운 것

오늘은 로그인과 회원가입을 위한 페이지를 만드는 것을 배웠다. JWT(Jason Web Token)를 이용하였다.

JWT(Jason Web Token)

클라이언트와 서버, 서비스와 서비스 사이 통신시 권한 인가를 위해 사용하는 토큰. 토큰이 유지되고 있는 동안은 로그인 상태가 유지된다. header, payload, signature의 세 부분으로 구성된다.

  • header : 토큰 타입과 사용되는 해시 알고리즘이 들어간다.
  • payload : 실제로 서버 간 전송되는 데이터 부분이 담긴다.
  • signature : 원본 그대로라는 것을 확인할 때 사용하는 서명 부분이다. JWT secret 메시지를 헤더에 지정된 암호 알고리즘으로 암호화해 전송한다.

AWS EC2 인스턴스에 mongoDB 설치하기

팀프로젝트중에 mongoDB를 새로운 인스턴스에 만들기로 했다. 그래서 새 EC2 인스턴스를 생성하고 22번, 27017번 포트를 열어준 뒤 mongoDB를 설치해주었다.

22번 포트를 열어주지 않으면 내 컴퓨터에서 인스턴스로 접속할 수 없고, 27017포트를 열어주지 않으면 mongoDB에 접속할 수 없다.

먼저 내 윈도우 컴퓨터에서 22번 포트를 통해 ec2 인스턴스에 접속해주었다.

ssh -i 키페어 ubuntu@인스턴스ip

접속이 되고 나면 프롬프트창에 ~$ 기호가 생긴다
이제는 리눅스환경이니까 리눅스 명령어들을 입력해준다.

EC2컴퓨터의 시간대를 한국으로 맞춰준다

sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

sudo는 SuperUser란 뜻으로 관리자 권한 실행이다.

리눅스에는 기본적으로 파이썬이 설치되어있는데 매번 python3라고 입력하기 귀찮으니까 python3를 python으로 바꿔주는 명령어를 입력해준다

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10

파이썬에서 빼놓을 수 없는 pip도 설치해주고

sudo apt-get update
sudo apt-get install -y python3-pip

pip3라는 명령어를 pip로 입력하기위한 명령어도 입력해준다

sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1

이제 mongoDB를 설치할차례인데 무슨 뜻인지는 모르겠지만 설명을 따라 입력해준다

wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list

sudo apt-get update

sudo apt-get install -y mongodb-org

이제 모든 설치가 끝나면 mongoDB를 실행해준다

sudo service mongod start

mongoDB에 접속하는 방법은 엄청 간단했다

mongo

만 입력하면 접속완료!

이제 계정을 만들어준다

먼저, admin 계정으로 바꿔주고

use admin;

계정을 생성한다

db.createUser({user: "ID", pwd: "비밀번호", roles: ["root"]});

이렇게 입력하면 Successfully added user 라는 말이 나오고,
입력했던 내용을 한번더 보여준다

Successfully added user; {"user": "ID", "PWD": "비밀번호", "roles": ["root"]}

여기까지 성공하고나면 엄청 기쁘기때문에 빠르게 나가서 DB를 재시작해준다

exite
sudo service mongod restart

여기까지만 끝나고 잘 돌아가면 참 좋을텐데...
우리 mongoDB는 기본값으로 내부접속만 허용한다. 외부에서도 허용할수있게 config파일을 조금 수정해줘야한다.

Windows에 메모장이 있다면 Linux에는 Vim이 있다.
config 파일을 찾아서 Vim으로 수정해주면 진짜_최종최종최종.txt 가 된다

sudo vi /ect/mongod.conf

관리자 권한으로 /ect폴더 밑의 mongod.conf 파일을 vim으로 열어줘 라는 의미이다.
명령어가 실행되면 여러 글자와 숫자들이 보이는데, 그중에

#network interfaces 라는 항목을 찾아서 bindIP 부분을 0.0.0.0 으로 수정해줘야한다

방향키로 요리조리 가는것까지는 잘되는데 수정이 안될건데, 그때 a 를 누르면 INSERT모드가 되면서 수정이 가능해진다

그다음 수정해줄 내용은 #how the process runs 부분인데 내용을 추가해준다.
timeZoneInfo 밑에줄에

security:
authorization: enabled

라고 추가해주면 끝!인데 어떻게 나가지?
:wq를 입력하고 엔터를 치면 저장하고 나가진다.

이제 즐겁게 다시 DB를 재시작하면 끝!

sudo service mongod restart

잘 연결이 되었는지는 robo3T로 확인하면 더 완벽하게 확인할 수 있다.

오늘 느낀 점

강의에서 제공해주는 파일로 설정할때는 몰랐던 복잡함이 있었다. 어려운건 아니었지만 그냥 복잡한 과정이었다. 블로그에 글로 정리하고나니 다음번에는 더 쉽게 할 수 있을것 같은 생각이 들었다.

profile
초보개발자의 개발일기

0개의 댓글