on
[노드 기초반] 5주차 개발일지
[노드 기초반] 5주차 개발일지
1. 배운 내용
크롤링
AWS EC2 인스턴스 이용해서 코드 배포
도메인 연결
2. 새로 알게 된 내용
(1) 크롤링
- axios로 크롤링할 페이지 접속, iconv-lite로 HTML 데이터 한글 깨짐 방지
# 한글 깨짐 방지 코드 const content = iconv.decode(html.data, "EUC-KR").toString();
- cheerio로 특정 태그를 가르켜 데이터 가져오기
const $ = cheerio.load(content); const list = $("ol li"); await list.each( async (i, tag) => { let desc = $(tag).find("p.copy a").text() let image = $(tag).find("p.image a img").attr("src") let title = $(tag).find("p.image a img").attr("alt") let price = $(tag).find("p.price strong").text() })
(2) AWS EC2 서버
- 현재 내 사양
mac os big sur 11.6 intel
- EC2 인스턴스 생성 (ubuntu 18 64, arm)
* 키페어생성하고 pem이나 cer 인증서 다운받아두기 *
- EC2 인스턴스 중지해야함
중지하고 다시 시작하면 퍼블릭 IP 바뀜
- 보안그룹 설정
27017, HTTP(88), TCP 열어주기
- EC2 접속 및 nodejs, mongodb 설치
// EC2 접속 // 1. 키페어 접근권한 변경 sudo chmod 400 받은키페어끌어다놓기 // 2. ssh로 접속하기 ssh -i 받은키페어끌어다놓고 ubuntu@퍼블릭IP // nodejs 설치 // 1. 설치 파일 다운로드 curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash - // 2. 설치 명령어 sudo apt-get install -y nodejs // 3. 설치 확인 node -v npm -v // 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 // 끄기 sudo service mongod stop // 재시작 sudo service mongod restart // mongodb 접속 계정 생성하기 mongo // admin으로 데이터베이스 바꾸기 use admin; // 지금 사용하는 데이터베이스 조회하기 (결과는 admin이라고 나와야 함) db; // 계정 생성하기 db.createUser({user: "test", pwd: "test", roles:["root"]}); // 계정 생성된 거 확인하기 (배열처럼 보이는 놈 출력되어야 함) db.getUsers(); // 나오기 exit; // 변경했으면 항상 재시작해주기
- mongodb 외부에서 열기
// mongodb 설정 파일 vi 에디터로 열기 sudo vi /etc/mongd.conf
// 내용 중 다음을 찾아서 변경해준다. // bindIp는 어디서든지 접속할 수 있다는 뜻으로 0.0.0.0으로 지정 bindIp: 127.0.0.1 -> bindIp: 0.0.0.0 // security는 보안상 문제로 user 못 건드리게 설정해줌 # security: -> security: authorization: "enabled" // 입력은 i, 다했으면 esc 누르고 :wq로 저장하고 나온다. // 변경했으니까 재시작해주기 // robo 3t에서도 접속 안되면 제대로 서비스가 시작되었는지 확인한다. sudo services mongod status
- PM2 이용해서 프로세스 관리
// EC2 인스턴스 관리자 권한 취득 sudo -s sudo su // EC2 인스턴스 관리자 권한 취득 해제 exit // PM2 설치 npm install -g pm2 // 스키마 이름에 대문자인지, 소문자인지 확인한 후 // 서버 실행 pm2 start index.js // 프로세스 목록 조회 pm2 list // 서버 끄기 pm2 stop index pm2 delete index pm2 kill
3. 느낀 점
생각보다 내용이 많아서 좀 놀랐고, 이제 정말 AWS로 배포하는 방법을 익힌 것 같다. 그리고 EC2 에서 자동 시작이나 스케줄링 할 수 있게 프로세스 관리하는 방법도 배워서 좋았다. 그런데 mongodb가 약간 문제를 발생시켜서 (순서대로 했는데도) 삭제하고 재설치 하니까 괜찮았다. 이걸 조금 더 활용해서 포트폴리오 사이트도 만들 수 있을 것 같다는 생각이 들었다. 그리고 자바스크립트로는 크롤링 해본 적이 없었는데 이렇게 배울 수 있어서 좋았다. 그런데 마지막 수업이라 그런지 만약에 내가 전공자가 아니고 비전공자였으면 좀 어려웠을 것 같다. 그리고 슬랙에서 매번 멘토들이 다 답장해주던데 대단하다고 느꼈다. 드디어 7, 8주만에 수료한 게 웃기지만 그래도 수료해서 다행이다 !
반응형
from http://dev-jejecrunch.tistory.com/111 by ccl(A) rewrite - 2021-11-23 00:26:49