상세 컨텐츠

본문 제목

구글파이어베이스를 사용해 노드js 웹서비스 만들기_1/5

노드js·자바스크립트

by 김일국 2023. 12. 19. 19:03

본문

표준노드js사이트를 구글파이어베이스 Funtions서비스를 이용해 호스팅에 배포할 때

현재 무료 Spark 계정을 사용하면, 유료  Blaze (pay-as-you-go) plan 요금제를 사용해야 가능하다면서 되지 않는다.

그래도, 신규 폴더에 firebase-tools 를 global로 설치하고, firebase login 명령으로 로그인 후 firebase init 명령으로 사용할 서비스와 폴더 구조를 만든다.( firestore 데이터베이스, funtions 기능. hosting 호스팅 ) 세가지를 선택해야, 작업한 표준노드js를 funtion 으로 불러와서 실행 할 수 있게 된다.

- 이 글에서는 표준노드js 와 파이어베이스용 노드js 는 약자로 구분한다. NB(표준) / FB(파이어베이스)

- [FB]표준노드js 실행은 npm run start 로 실행한다면, 파이어베이스 실행 명령은 firebase serve 로 실행한다.(아래)

현재 노드js 18버전 이상에서만 serve명령이 가능하다.(위)

- [NB+FB]표준노드js 와 파이어베이스 호스팅의 노드js 폴더구조(아래)

왼쪽표준 노드js앱소스를 오른쪽 파이어베이스호스팅용에선 functions 폴더에 그대로 붙여 넣는다(위).

- [FB]firebase deploy 전 위 처럼 소스를 복사 할 때 무조건 덮어쓰지 말고, package.json 파일은 dependencies 부분만 복사하고, firebase init 로 생성된 초기 index.js 파일대신(지웠음) 노드js앱의 server.js 파일을 하단 부분만 수정해 사용한다.(아래)

//module.exports = app; // 위 기존 노드js코드는 그대로 사용한다.
//app.listen(process.env.PORT || 80) //위 표준 노드js 코드 2줄 주석처리 후 아래 3줄 추가
//아래에서 파이어베이스 펑션기능으로 nodejsboard 이름을 정의하면 된다.
const functions = require('firebase-functions');
const nodejsboard = functions.https.onRequest(app);
module.exports = { nodejsboard };

- [FB]위에서 정의한 server.js 을 main-진입 파일로 만들려면, funtions 폴더의 package.json 을 아래 처럼 수정한다.(아래)

functions/package.json 파일(위)

- [FB]위에서 server.js에서 정의한 nodejsboard 라는 이름은 파이어베이스.json 파일에서 사용된다.(아래 코드를 추가.)

firebase.json 파일에 위 블럭영역을 추가한다.(위)

- [NB+FB] 표준노드js 앱과 파이어베이스 호스팅에 돌아갈 앱 비교(아래)

왼쪽이 표준노드js 환경에서 실행한 화면, 오른쪽이 파이어베이스 호스팅 환경에서 실행한 화면(위)

- 아쉽지만, 파이어베이스의 Funtion 기능을 사용한 호스팅은 무료가 아니라서, 표준노드js인 클라우드환경 K-PaaS 플랫폼에서 위 노드js 앱을 배포해 보았다.(아래 : https://nodejsboard.apps.emergency-cloudplatform.kr/ )

구글 로그인 인증을 사용한 모습니다.(위)

- 로그인 후 게시판 화면이다. 단, Function을 사용한 파이어베이스 호스팅은 유료라서 사용못했으나, DB는 파이어베이스의 FireStore 라는 무료json데이터베이스를 사용한다.(아래)

- 위 구글 파이어베이스에서 지원하는 구글 로그인 인증을 사용할 때, 초기에 권한 문제가 발생 되었다. 원인은 아래 2군데에서 허용 도메인을 추가해 주고 나서 해결이 되었다.
- 파이어베이스의 Authentication > 승인된 도메인 추가 : https://console.firebase.google.com/project/nodejsboard-1129e/authentication/settings

- 구글 클라우드 콘솔의 사용자 인증 정보 : https://console.cloud.google.com/apis/credentials/oauthclient/54081620771-6gn2pmgpnvbptk8o568rmdrfqqg6m2s8.apps.googleusercontent.com?project=nodejsboard-1129e

사이트가 2군데라서 처믕에 헷갈렸습니다.^^

현재 작업 중인 소스는 아래 깃 허브에 올려 놓았습니다.(단, 서비스계정키 파일은 보안때문에 제외 시켰습니다.)

1. 표준노드js : https://github.com/miniplugin/nodejsboard 

2. 파이어베이스호스팅기반노드js : https://github.com/miniplugin/nodejsfirebase  

3. K-PaaS 플랫폼 : https://digitalsolveup.kr/platform.do 

4. 표준노드js 앱 결과확인 URL : https://nodejsboard.apps.emergency-cloudplatform.kr/ 

단, 위 표준노드js 앱은 기본 CRUD 만 된다. 앞으로 페이징처리, 검색기능, 파일업로드 기능을 추가할 예정 이다.

관련글 더보기

댓글 영역