본문 바로가기

백엔드

(19)
[리눅스 디버깅] npm을 -g 옵션으로 글로벌로 설치할 시 permission denied, mkdir ... 이 오류가 발생하는 가능성이 가장 큰 것중 하나는 node를 sudo 권한으로 설치시 발생한다고 한다. 해결법: npm install -g 로 설치되는 디렉토리 경로를 자신의 home directory로 변경. $ mkdir ~/.npm-global $ npm config set prefix '~/.npm-global' $ vi ~/.profile profile 하단에 다음 코드를 추가한다 export PATH=~/.npm-global/bin:$PATH 다시 쉘에서 다음을 실행한다. source ~/.profile 이후에 다시 설치를 진행한다. 만약 이후에도 에러가 발생할 시 다음을 실행한다. $ sudo chown -R $USER:$GROUP ~/.npm $ sudo npm install -g 설치할 ..
[MongoDB] Mongoose에서 트랜잭션 처리 트랜잭션(Transaction) Tansactions let you execute multiple operations in isolation and potentially undo all the operations if one of them fails. This guide will get you started using transactions with Mongoose. 사용 예시: Q&A 게시글 Q&A는 하나의 질문글과 그 질문에 해당하는 답변글로 이루어져있다. 그 둘은 각각 다른 모델이며, 현재 질문글만 생성되어있고 관리자 유저가 해당 질문에 대한 답변을 작성하는 요청을 한다고 가정할 시, 먼저, 트랜잭션을 위한 startSession 객체를 몽구스에서 가져오고, 모델을 import한다. const {s..
[공유기 설정] 외부 IP에서 서버로 접속 가능하게 설정하기 개요 집에서 사용하는 노트북이나 컴퓨터를 직접 서버로 사용하게 된다면, 외부에서 접속이 가능하게 허용해야 한다. 0. 공유기 관리 사이트 접속 설치된 공유기 IP 주소를 이용하여 설정 사이트에 접속하여 로그인한다. 1. DMZ 설정 DMZ란, De-Millitarized Zone으로 기본적으로 공유기에서 방화벽 기능으로 외부로 접속이 가능하나 외부에서 내부접속이 방화벽에 의해 차단된다. 이는 보안을 위한 기본적인 조치이다. 이를 해결하기 위해 DMZ로 특정 주소를 설정하여 해당 주소로의 접속을 허용해준다. 이를 설정하기 위해, 먼저 터미널을 실행하여 ipconfig 명령을 수행하여 Wi-fi의 IP 주소를 획득한다.(무선 랜 Wi-fi 어답터의 IPv4 주소 사용.) 얻어온 주소를 아래와 같이 DMZ I..
[Node.js] nodemailer로 이메일 인증 구현하기 nodemailer Node.js에서 사용하는 이메일 전송 라이브러리이다. 이번 문서에서는 이메일로 인증코드를 보내 클라이언트에서 해당 인증 코드를 입력하면 회원가입이 계속해서 진행되는 예제를 다룬다. 구현과정 기본 셋업 구현 1. 기본 셋업 먼저 nodemailer 라이브러리와 dotenv, ejs를 설치해준다. dotenv는 node 프로젝트에서 전역적으로 사용되는 변수를 정의할 수 있는 라이브러리이다. 여기에는 보통 중요 정보(비밀번호, 키값) 등이 저장되어 깃허브에서 추적하지 않게 .gitignore에 등록해야 한다. 그리고 ejs는 이메일로 전송될 내용이 담겨있다. npm install dotenv nodemailer ejs 그리고 메일을 전송하는데에 사용할 계정에 대한 정보를 수정한다. 이번 ..
[Node.js] Firebase Cloud Messaging을 이용하여 클라이언트에 메시지 전송하기 Firebase Cloud Message Firebase Cloud Message 이하 FCM은 메시지를 간단하게 보낼 수 있는 크로스 플랫폼 메시징 솔루션이다. 해당 내용은 아래 소개한 글에 자세히 설명되어있다. [안드로이드] Firebase Cloud Messaging Firebase Cloud Messaging Firebase Cloud Messaging 이하 FCM은 메시지를 빌드, 전송, 수신하는 크로스 플랫폼 메시징 솔루션이다. 안드로이드 앱에서 흔하게 볼 수 있는 Push 메시지가 대표적인 사용 예시이다.. bb-library.tistory.com 구현과정 Firebase console에서 서버키를 발급받기 firebase 셋업 메시지 전송 요청 1. Firebase console에서 서버키..
[Node.js] 6. 서버와 MongoDB 연결하기 MongoDB MongoDB는 NoSQL 데이터베이스로 기존에 학습한 MySQL의 관계형 데이터베이스와 데이터를 저장한다는 점을 제외하고는 완전히 다르다. NoSQL은 컬렉션(SQL의 테이블)과 문서(SQL의 로우)로 구성된다. SQL은 일관성 측면에서 특장점이 있고, NoSQL은 확장성에 이점이 있다. MongoDB 설치 및 세팅 먼저 설치는 https://www.mongodb.com/download-center/community에서 진행할 수 있다. 계속 next를 하고 중간에 좌측 하단에 Install MongoDB Compass도 체크하여 설치한다. 설치가 완료되면 시스템 변수의 path에 MongoDB의 경로인 C:\Program Files\MongoDB\Server\4.4\bin을 추가해준다...
[Node.js] 5. 외부에서의 서버 접속 허용하기. 개요 이전 문서까지는 오직 localhost만 서버에 접속할 수 있었다. 이번 문서에서는 외부 클라이언트도 서버에 접속하는 것을 허용하게 세팅하는 법을 다룬다. 이번 문서에서는 linux에 대한 기초적인 이해가 필요하다. 추가로 클라우드 서버는 Ubuntu 16.04를 기준으로 한다. 과정 클라우드 플랫폼 - 네이버 클라우드 플랫폼(NCF) pm2 패키지 설치 서버 구동 1. 클라우드 플랫폼 AWS. Toast, 구글 클라우드 플랫폼 등 다양한 클라우드 플랫폼이 존재한다. 이번 문서에서는 네이버 토스트 클라우드를 사용하려 한다. 현재 가입시 10만 크레딧을 주고, Micro 서버라는 성능이 뛰어나진 않지만 소규모로 쓸만한 서버도 1년간 무료로 제공한다. 서버 생성법은 https://console.nclo..
[Node.js] 4. Express 라우터 Router 코드를 계속해서 작성하다 보면 server 파일의 코드 양이 많아지고 지저분해지면서 개발자는 자연스럽게 이를 리팩토링하고 싶어진다. 이를 위해 Express의 라우터 객체를 이용하여 프로젝트 구조를 깔끔하게 정리할 수 있다. 초기의 코드 const express = require("express"); const mysql = require("mysql"); const dbConfig = require("./config/database.js"); const connection = mysql.createConnection(dbConfig); const bodyParser = require("body-parser"); const server = express(); server.use(bodyPar..