TIL 24일차 - node 입문주차 개인 프로젝트(3)

박찬웅·2023년 3월 1일
0

항해99

목록 보기
29/105

23년 3월 1일

배운 것

오늘 내가 구현 한 것은 댓글 작성, 댓글 조회, 댓글 수정, 댓글 삭제 총 4가지의 API를 구현하였다. 그리고 완성된 개인프로젝트를 배포 하는 작업도 하였다.

시도 한 것

어제 무리하게 약간 밤을 새서 게시글 구현은 모두 끝나고 오늘부터 댓글 API 구현을 시작을 하였다. 가장 먼저 한 것은 댓글 작성 API부터 시작하였다. 다만 schemas 폴더 안에 comments.js에 가서 어떤 데이터를 만들 것인지 중요하였다. 단순하게 닉네임, 비밀번호, 댓글내용 이렇게만 적었다.
이제 router 폴더 안에 있는 comments.js 파일에서 구현을 시작하였다. 이틀전에 구현했던 게시글 작성 API를 참고를 하였다. 작성한 게시글 안에다 거기서 댓글을 추가하는 방식을 구현하는 것이였기 때문에 postId를 추가해서 해당 postId도 데이터를 만들어야 한다는 핵심이 필요했었다. 이건 어제 기술매니져님이 다른 분 질문 할 때 조언을 했던 것이라서 오늘 아침에 팀원분한테 어떻게 해야하는 지 방식을 알려주었다. 그걸 토대로 다시 schemas 폴더의 comments.js 가서 postId도 데이터 정의를 추가하였다.
그렇게 완성을하고 POST를 보냈는데 body안에 있는 데이터가 studio 3T에 등록이 되지 않는 오류가 있었다. 그래서 팀원들한테 물어보니까 경로 설정이 잘못되었다는 것을 알게 되었다.

router.use('/posts', [postsRouter, commentsRouter]);
// router.use('/comments', commentsRouter);

주석 친 코드가 내가 처음에 적었던 코드였고 /posts에서 계속 이어서 경로를 가는 것이였기 때문에 commentsRouter도 같이 경로 지정을 했어야 했다. 그래서 해결이 되었고 정상적으로 댓글 구현도 마무리 되었다.
이후에 댓글 조회 API를 만들었다. 이것도 이틀전에 구현했던 게시글 조회 API를 참고하면 어렵지 않게 구현을 하였다.
그렇게 오전에 빠르게 2가지 API를 구현을 하였고, 늦은 점심 먹은 후 나머지 댓글 수정, 삭제 API 둘도 약간의 위기는 있었지만 팀원한테 도움 받지 않고 스스로 구현을 하는데 성공하였다. 역시 각각의 게시글 수정, 삭제 API를 참고하면 할 수 있었다.

이렇게 댓글 API 4가지를 모두 구현을 마무리 하였고, 이제 마지막으로 배포하는 과정을 진행하였다. 저번주 토요일에 강의 들었던 것을 기억을 하였고, 다음과 같이 진행하면 되었다. (본인은 윈도우 사용자 윈도우 기준으로 설명)

  1. AWS 홈페이지에 들어가고 EC2에 가서 새로운 인스턴스를 생성을 한다. 이때 키페어 pem 파일이 없으면 새로 만들어 준다. (단, 이미 하나 인스턴스 돌아가는거 있으면 삭제하거나 중지 시켜야 한다.)

  2. GIT BASH에 들어가서 다음과 같이 명령을 치고 그런 다음 중간에 질문 하나 뜨는데 그대로 yes 입력하면 원격 컴퓨터에 접속한다.

ssh -i 받은키페어를끌어다놓기 ubuntu@AWS에적힌내아이피 
  1. 다음 명령어를 복사해서 붙히고 node.js를 설치한다. 설치 후 node -v와 npm -v를 입력해서 버전이 뜨면 정상적으로 설치 완료 된 것이다.
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -

sudo apt-get install -y nodejs
  1. 다음 명령어를 복사해서 붙히고 mongoDB를 설치한다. 설치 후 sudo service mongod start
    를 입력해서 아무 반응 없으면 정상 설치 된 것이다.
wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -

echo "deb [ arh=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
  1. 본인이 올린 깃허브에 가서 CODE를 누르고 HTTP의 주소를 복사 한 뒤 GIT BASH에 붙혀서 클론을 시킨다.
git clone 본인깃허브code의http주소
  1. 이제 순서대로 cd 본인의프로젝트명입력, npm install입력, node app.js(서버파일명이 다르면 node 다음에 그 파일을 적기)입력해서 3가지의 명령어를 적어주면 서버가 연결된다.

  2. AWS EC2에 가서 아까 만든 인스턴스에 정보를 보면 보안<보안 그룹<인바인드 규칙 편집을 눌러 준다.

  3. 규칙 추가를 누르고 거기서 2가지를 추가를 해야 하는데 하나는 IvP4, 포트번호는 본인이 테스트 했던 포트번호를 추가하고 다른 하나는 HTTP에 포트번호는 80을 추가로 지정해주고 규칙 저장을 눌러준다.

  4. 크롬에 새로운 창을 누르고 본인이 생성한 인스턴스에 가서 퍼블릭 IPv4 주소를 복사 하고 :(포트번호)를 추가로 넣어주면 배포는 끝난다.

  5. 다만 GIT BASH를 끄면 다시 홈페이지가 작동이 안하기 때문에 GIT BASH로 다시 돌아가서 아래의 3가지의 명령어를 순차적으로 입력해주면 GIT BASH를 꺼도 홈페이지가 작동이 된다.

sudo -s
npm install -g pm2
pm2 start app.js

이렇게 하면 배포는 마무리 되었고, 제출까지 무사히 하였다.

해결

댓글 API 4가지를 모두 다 구현을 하여서 배포까지 정상적으로 마무리 하였다.
내가 적은 코드들은 다음 링크를 타고 들어가면 볼 수 있다.
입문주차 개인 프로젝트 과제 깃허브 링크

알게 된 점

어제까지만 해도 개인과지를 무사히 마무리 할 수 있을까 걱정이 많이 되었었다. 하지만 댓글 API는 어제 이틀동안 고생했던 내가 적었던 게시판 API 코드들을 참고해서 적으면 쉽게 해결이 되었다. 물론 초반에 라우터 연결 설정이 잘못되었지만 팀원이 지적해줘서 구현은 쉽게 되었다. 또한 어제 기술매니저님이 말한 POSTID값을 추가해야 그 게시판의 댓글을 지정 할 수 있었기 때문에 빠르게 구현이 된 것 같았다.
그렇게 저녁에 완벽하게 배포까지 하고 제출까지 완벽하게 하였다. 역시 팀원들의 도움과 이전에 내가 적었던 코드들을 활용하는 것이 중요하였고, 내일까지 제출기한이였는데 하루 남기고 제출을 하였다. 다만 제출 하고 나서 아쉬웠던 것은 게시글이나 댓글을 POST 했을때 그때 생성했던 날짜를 구현 하지 못했던것은 아쉬웠다. 그냥 제출을 하고 나서 뒤늦게 아차 했지만 이미 지나간 일이라 어쩔수 없긴 했어도 그것만 빼면 나머지는 모두 구현을 하였기 때문에 성공적으로 마무리 되어서 좋았다.

앞으로 할 일

내일은 입문주차 마지막 날로 간단한 시험이 있다고 있는데 무사히 잘 보고, 또한 팀 과제 있는데 용어들을 정리하면서 마무리 할 것 같다. 아마 내일은 여유가 좀 있을듯 하다.

profile
향해 13기 node.js 백앤드

0개의 댓글