[MEMO APP] Back-end/서버구축 (1)
🔨nodemon 설정
이전에 우리가 만든 서버소스는 node를 이용해서 해당 파일을 직접 실행시켜주었습니다.
이런방식의 실행은 개발할때 조금 불편한? 귀찮은? 일이 생깁니다.
우리가 서버를 실행시켜둔 상태에서 특정 소스를 추가한다거나 수정할때 이전과 이후의 결과물은 달라지겠죠? 하지만 서버를 다시 재 실행시키지 않는다면 우리가 추가한 내역이 서버에 반영되어지지 않습니다.
이러한 소스코드 수정여부에 대하여 감지하고 서버를 재 실행시켜주는것을 돕는것이 nodemon의 역할이라고 생각하시면 되겠습니다.
그럼 지금부터 해당 모듈을 설치해보도록 하죠! ( yarn add nodemon )
이제 서버를 실행시킬때 node nodemon --watch src/ src/index.js 로 실행하면 수정내역이 반영이 되어집니다. ㅎㅎ
( 매번 서버를 실행하려니... 실행문이 너무 길어 귀찮네요 )
이렇게 실행문이 긴것들은 우리가 이전에 만들어두었던 package.json에서 매크로처럼 짧은 문장으로 대체가 가능합니다.
package.json 파일을 열어보면 scripts라는 키를 가진 곳이 보일것입니다.
그곳에 다음의 내용을 추가하도록하죠
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start:dev": "nodemon --watch src/ src/index.js"
},
이제 실행시에 yarn start:dev 혹은 npm run start:dev로 실행이 가능해졌습니다.
🔨 보안관련 미들웨어 dotenv, koa-helmet 설치
우리가 만드는 서비스들은 웹상에서 특정유저의 요청을 받고 그에대한 응답을 해주는 방식의 서비스입니다. 이러한 과정에서 악의적인 sql문장을 보내여 DB내의 혼란을 야기시키거나 우리가 주고받는 응답 메시지를 영탐해서 악의적으로 사용하는 사람들이 있습니다.
이를 위해서 중요한 내용은 따로 숨기거나, 기본적인 보안을 위한 프로그램들을 구축해야 우리의 서버 뿐만 아니라 우리의 서비스를 사용하는 사용자들을 안전하게 만들 수 있습니다.
그래서 첫번째로 해줄일은 dotenv입니다.
dotenv는 중요한 소스 가령 우리가 사용할 port번호나 나중에 사용할 암호화된 pw를 만들때 사용되어지는 key값등을 저장하게 됩니다.
일단 설치해보도록 하죠, yarn add dotenv 해줍시다.
설치가 완료되었다면, 우리가 이전에 만들었던 src 폴더와 같은경로 안에 .env 파일을 만들어줍니다.
그리고 그안에 우리가 앞으로 사용할 서버 포트를 채워넣어주겠습니다.
PORT = 4000
그리고 다시 index.js로 돌아와서 소스코드를 조금 수정해주도록 하겠습니다.
우리가 .env 에 작성한 코드들을 다른 특정 파일에서 불러다 쓰기 위해서는 dotenv 모듈을 import 해주어야 합니다. 이를 위해 다음의 코드를 index.js 상단에 작성해주도록 하겠습니다.
// 환경변수를 불러옵니다.
require('dotenv').config();
const {
PORT: port
} = process.env;
이전에 사용했던 const port = 4000 이 코드는 지우고 .env에 작성한 PORT 변수를 가져와서 port라는 소문자이름으로 바꿔 사용해 대체했습니다.
이런식으로 상단에 require('dotenv').config(); 를 작성해주게 되면 process.env에서 우리가 .env에서 작성해준 변수들을 사용이 가능해집니다.
(왜 이렇게 하냐구요? 나중에 해커가 소스코드를 열어봐도 port나 key와 같이 중요한 값은 볼수 없도록 하기 위해서 입니다 ㅎㅎ)
이제 중요한 값들도 숨겼으니 보안 모듈(미들웨어)를 설치후 연결해 보아요.
우리가 보안을 위해사용할 모듈은 바로 helmet 입니다.
사실 express를 이용해 개발을 조금 해본 친구들이라면 helmet이 뭔진 바로 알꺼에요.
node.js를 이용해 웹서버를 개발할때 간편하게 기본적인 보안설정을 이 모듈이 다 맡아서 해주기 때문에 꽤나 유명한 모듈입니다.
하지만 우리는 koa에서 사용하기 때문에 일반적인 helmet을 받진 않을껍니다.
(이유즉슨, 뇌피셜이지만 koa는 promise 기반이라 기존helmet과 인터페이스가 맞지 않아서가 아닐까... 싶습니다. 이게 아니라면 가르쳐주세요 ㅎㅎ)
그럼 설치를 진행해 봅시다. yarn add koa-helmet 을 해주시고 index.js를 열어주세요.
그 다음에는 설치한 모듈을 우리의 app에 연결해 주도록 하겠습니다.
일단 설치한 모듈을 상단에 아래의 소스코드를 추가하여 불러와주도록 하겠습니다.
const helmet = require('koa-helmet');
그다음 해줄 연결작업도 마저 해주도록 하겠습니다.
express 나 koa 에서 특정 미들웨어(=모듈)을 연결해줄때는 use라는 메서드를 사용하게 됩니다.
(예를들어 app.use(...) 와같은 형태인거죠)
그래서 우리가 연결해줄 미들웨어는 helmet 이니깐 .use(helmet) 이 될꺼고 이 미들웨어는 우리가 만들 서버 전체에 적용이 되어져야 하니 app에 연결해주어야 합니다. 즉 app.use(helmet)이 되겠네요.
// 미들웨어 연결
app.use(helmet);
자, 기본적인 보안설정이 완료되었습니다. 가장 많이 시도되는 웹보안 공격에 대해 이친구가 대처를 잘 도와줄껍니다.
이번 포스팅은 여기서 마치고, 다음포스팅에서는 router 설정전에 DB 연결처리를 먼저하고 그 이후에 router 처리를 해주도록 하겠습니다.
todoList
* DB연결 / MongoDB
* Router 연결
'Gorilla-Kim > Project' 카테고리의 다른 글
[MEMO APP] Back-end/ DB연결 (1) (0) | 2020.03.16 |
---|---|
[MEMO APP] Back-end/ 라우팅 (2) (0) | 2020.03.15 |
[MEMO APP] Back-end/서버구축 (2), 라우팅 (1) (0) | 2020.03.13 |
[MEMO APP] Back-end/환경설정 (2) (0) | 2020.03.12 |
[MEMO APP] Back-end/환경설정 (1) (0) | 2020.03.12 |