[Firebase] Firebase ์น ํธ์คํ ์์ฑ, ๋ฐฐํฌํ๊ธฐ + ๊ด๋ จ ์๋ฌ
ํ์ด์ด๋ฒ ์ด์ค์ ์น ํธ์คํ ์์ฑ, ๋ฐฐํฌํ๊ธฐ
ํ์ด์ด๋ฒ ์ด์ค์ ํธ์คํ ์๋น์ค๋ฅผ ์ด์ฉํด๋ณด์
Firebase ?
- ํ์ด์ด๋ฒ ์ด์ค๋ 14๋ ๋์ ๊ตฌ๊ธ์์ ์ธ์ํ ๋ชจ๋ฐ์ผ, ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐํ๋ซํผ! 16๋ ๋ ๋ถํฐ ๊ตฌ๊ธ์์ ์๋น์ค๋ฅผ ๋ํญ ๊ฐํํ Baas(Backend as a service) ์๋น์ค ์ด๋ฏ๋ก, ๋ฐฑ์๋๋ฅผ ๋์ ํด ์ค์ ํ๋ก ํธ์๋์ ์ง์คํ ์ ์๊ฒ ์๋น์ค๋ฅผ ์ง์ํด์ค๋ค.
- ์ ์ฉ๋์ : android, ios, web
- ๋ํ์ ์ธ ๊ธฐ๋ฅ : ์ธ์ฆ, ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์คํ ๋ฆฌ์ง, ์๊ฒฉ ๊ตฌ์ฑ, ํธ์ ์๋, Analytics
- ์ฅ์
- ๊ฐํธํ ๊ตฌ์ถ : ์ธํ๋ผ ์ ๋ฐ์ ํ๊ฒฝ ๊ตฌ์ฑ๊ณผ ํ์ฅ ๋ฑ์ ์์์ ํด์ฃผ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์๋ ๊ทธ์ ํ์ํ ๊ธฐ๋ฅ์ ์ฐ๋์์ผ ์ฌ์ฉํ๋ฉด ๋๋ค.
- ๊ฐ๊ฒฉ : ํน์ ์ฌ์ฉ๋ ์ด๊ณผ์ ๊ฐ๊ฒฉ ์ง๋ถ์ด ์์ง๋ง, ๊ฐ๋จํ ํ๋ก์ ํธ๋ ๊ธฐ๊ฐ ์๊ด์์ด ๋ฌด๋ฃ๋ก ๊ฐ๋ฅ!!
- ๋ค์ํ ๊ธฐํ ์๋น์ค : ๊ตฌ๊ธ์์ ๊ด๋ฆฌํ๋ฏ๋ก ์ฌ๋ฌ๊ฐ์ง ๊ตฌ๊ธ ์๋น์ค ์ฐ๋ ๊ฐ๋ฅ
Firebase Web Hosting?
- ๊ฐ๋ฐ์๋ฅผ ์ํ ํ๋ก๋์ ๋ฑ๊ธ ์น ์ฝํ ์ธ ํธ์คํ ์๋น์ค
- ๋ฐฑ์๋ ๊ธฐ๋ฅ์ ํด๋ผ์ฐ๋ ์๋น์ค ํํ๋ก ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ์๋ฒ๋ฆฌ์ค ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ๊ธฐ๋ฅ
- Pricing :
- ์ ์ฅ์: 10 GB
- Data transfer : 360 MB/day
- ํธ์คํ ๊ณต์ ๋ฌธ์ : https://firebase.google.com/docs/hosting/
- ํธ์คํ ์์ํ๊ธฐ ๊ฐ์ด๋ : https://firebase.google.com/docs/hosting/quickstart
Firebase ์น ํธ์คํ ์์ฑ, ๋ฐฐํฌํ๊ธฐ ์์ ์์๋ ํฌ๊ฒ ๋ค์ ์์๋ก ์งํ๋ฉ๋๋ค.
- Firebase ํ๋ก์ ํธ ์์ฑ
- Firebase ํธ์คํ ์ค์
- Firebase ์ด๊ธฐํ
- Firebase ๋ฐฐํฌ ๋ฐ ํ์ธ
1. Firebase ํ๋ก์ ํธ ์์ฑ
1-1 ๋ก๊ทธ์ธ
์๋ ์ฃผ์๋ก ๋ค์ด๊ฐ์ ์ฝ์๋ก ์ด๋ > ๊ณ์ ์ ํ ๊ตฌ๊ธ ๊ณ์ ์ ํตํด ๋ก๊ทธ์ธ์ ์งํํด ์ฃผ์ธ์.
https://console.firebase.google.com/
1-2 ํ๋ก์ ํธ ์์ฑ
ํ๋ก์ ํธ ๋ง๋ค๊ธฐ ํด๋ฆญ
ํ๋ก์ ํธ ์ด๋ฆ์ ์ง์ ํด์ค๋๋ค.
'๊ณ์' ํด๋ฆญ!
๊ธฐ๋ค๋ฆฌ๋ค ๋ณด๋ฉด~
์ง์! '๊ณ์' ํด๋ฆญ!
ํ๋ก์ ํธ ์์ฑ ์๋ฃ!
2. Firebase ํธ์คํ ์ค์
2-1 Firebase CLI ์ค์น
ํฐ๋ฏธ๋์ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด npm์ด ์๋์ผ๋ก Firebase CLI ์ค์นํฉ๋๋ค.
Firebase CLI๋ npm์ ํตํด ๋ฐฐํฌ๋๊ธฐ ๋๋ฌธ์ npm์ด ์ค์น๋์ง ์์๋ค๋ฉด ์ค์นํด์ผ ํฉ๋๋ค.
$ npm install -g firebase-tools
2-2 Firebase Login
Firebase CLI๊ฐ Firebase์ ์ ๊ทผํ ์ ์๋๋ก ๋ก๊ทธ์ธํฉ๋๋ค.
npm์ผ๋ก ์ค์นํ firebase-tools ๋ชจ๋์ ์ฌ์ฉํ๋ฏ๋ก ํฐ๋ฏธ๋์์ ์๋ ๋ช ๋ น์ด๋ฅผ ํตํด ๋ก๊ทธ์ธํฉ๋๋ค.
$ firebase login
Firebase์ CLI ์ฌ์ฉ ๋ฐ ์๋ฌ ๋ฆฌํฌํ ์ ๋ณด์ ๊ดํ ์์ง์ ํ์ฉํ๊ฒ ๋๋ ์ง๋ฌธ์ผ๋ก y ํน์ n ์ ๋ ฅ ํ ์ํฐ!
Waiting for authentication...์ด๋ผ๋ ๋ฌธ๊ตฌ์ ํจ๊ป ์ดํ์ ๊ณ์ ์ ํ์ ์์ฒญํ๋ ๋ธ๋ผ์ฐ์ ์ฐฝ์ด ๋จ๊ฒ ๋ฉ๋๋ค.
๊ณ์ ์ ์ ํํ๊ณ ํ์ฉ! ํด๋ฆญ
๋ก๊ทธ์ธ์ด ์๋ฃ๋๋ฉด Firebase CLI ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ์๋ค๋ ๋ฌธ๊ตฌ๊ฐ ๋ํ๋ฉ๋๋ค.
cmd์์๋ ์ฑ๊ณต ๋ฉ์์ง๊ฐ ์ถ๋ ฅ๋์ด ์์ต๋๋ค~!๐
3. ํ๋ก์ ํธ ์ด๊ธฐํ
ํ๋ก์ ํธ ์ด๊ธฐํ๋ฅผ ํตํด Firebase ํ๋ก์ ํธ์ ์ฐ๊ฒฐํด์ค๋๋ค.
3-1 firebase init
์น ํ์ผ์ ๋ด์ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ ํ ์๋ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$ firebase init
Firebase Project๋ฅผ ์ด๊ธฐํํ๊ธฐ ์ํ ๋๋ ํ ๋ฆฌ๊ฐ ๋ณด์ด๋ฉฐ,
Firebase์ ์ด๋ค ๊ธฐ๋ฅ์ ์ฌ์ฉํ ๊ฑด์ง ๋ฌผ์ด๋ณด๋ ์ ํ ๋ฉ์์ง๊ฐ ๋์ต๋๋ค.
์ฐ๋ฆฌ๋ Hosting์ ์ฌ์ฉํ๋ฏ๋ก ํ์ดํ ๋ฒํผ์ผ๋ก ์ด๋ ํ ์คํ์ด์ค๋ฐ๋ก ์ฒดํฌ ํ ๋ค์ ์ํฐ!
์ด์ 1. firebase ํ๋ก์ ํธ ์์ฑ ์งํ์ ํตํด ์์ฑํ์๋ ํ๋ก์ ํธ(hostingdemo)๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์
Use an existing project ๋ฅผ ์ ํํ ํ ์ํฐ!
ํ๋ก์ ํธ ๋ชฉ๋ก์์ ์ํ๋ ํ๋ก์ ํธ๋ฅผ ์ ํํ๊ณ ์ํฐ!
์น์์ public์ผ๋ก ์ ๊ทผํ ์ ์๋ directory์ ์ด๋ฆ์ ๋ฌด์์ผ๋ก ํ ์ง ์ ํด์ผ ํฉ๋๋ค.
์ฆ, ๊ธฐ๋ณธ ์น ํ์ผ(html, css, js ํ์ผ)๋ค์ด ๋ค์ด๊ฐ๋ repo ์ด๋ฆ์ด์ฃ !!
์น ํ๋ฉด์ ์ ๊ฐ ๊ฐ๋จํ to do list๋ก ๋ง๋ค์์ต๋๋ค. ๋ถ์กฑํ์ง๋ง ํ ์คํธ์ฉ์ผ๋ก ํ์ํ์ ๋ถ๋ค ์ฌ์ฉํ์ธ์ :)
: https://github.com/lxxyeon/LetsHybrid/tree/main/hosting
ํ์ด์ด๋ฒ ์ด์ค ๊ธฐ๋ณธ ๊ถ์ฅ ๊ฐ์ธ "public"์ผ๋ก ์ค์ ํ์์ต๋๋ค.
๋๋จธ์ง๋ ๋ค No!
๋ชจ๋ ์ง๋ฌธ์ด ๋์ด ๋๋ฉด ์ค์น ์๋ฃ๊ฐ ๋๋ฉด ์๋ฃ๋์๋ค๋ ๋ฌธ๊ตฌ์ ํจ๊ป CLI์ command line์ผ๋ก ๋ณต๊ทํฉ๋๋ค.
4. Firebase ๋ฐฐํฌ ๋ฐ ํ์ธ
๋๋์ด ๋ง์ง๋ง ๋จ๊ณ!!
4-1 Firebase serve
ํธ์คํ ์ Firebase์ ์ฌ๋ฆฌ๊ธฐ ์ ๋ก์ปฌ ํ๊ฒฝ์์ ํ ์คํธ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ฌ ์๋์ด ์๋๋์ง ํ์ธ!
$ firebase serve --only hosting
๋ช ๋ น์ด ์ ๋ ฅ ์ ๋ก์ปฌ ํธ์คํธ์ 5000๋ฒ ํฌํธ์ ์คํ๋์๋ค๊ณ ์ถ๋ ฅ๋ฉ๋๋ค.
๋์ค๋ ์ฃผ์๋ก ๋ค์ด๊ฐ๋ฉด
์ง์! ํ์ด์ง๊ฐ ์ ๋ก๋ฉ๋์์์ ์ ์ ์์ต๋๋ค. ํด~ ์ด์ ๋ฐฐํฌ๋ง ๋จ์์ด์!!๐๐ป
+ ์นํ์ผ ์์ ํ ๋ก์ปฌํ ์คํธํ๋
์ ์ฃผ์๋ก ๋ค์ด๊ฐ๋ ์นํ์ผ ์ฌ๋ฆฐ๋๋ก ์น ํ๋ฉด์ด ์ ๋์ค๊ณ ์์ต๋๋ค!
4-2 Firebase deploy
์ด์ ์๋ ๋ช ๋ น์ด๋ฅผ ํตํด Firebase ํ๋ก์ ํธ์ ๊ธฐ๋ณธ ํธ์คํ ์ฌ์ดํธ(projectID.web.app ๋ฐ projectID.firebaseapp.com)์ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
Firebase ํ๋ก์ ํธ์ ๋ฐ์ดํฐ๋ฅผ ๋ก์ปฌ์ ๋ฐ์ดํฐ์ ๋๊ธฐํํ๋ ์์ ์ด๋ผ๊ณ ๋ณด๋ฉด ๋ฉ๋๋ค.
$ firebase deploy
๋ช ๋ น์ด ์ ๋ ฅ ์ ๋ช ๊ฐ์ ํ์ผ์ด ๋ณ๊ฒฝ๋์๋์ง, ํธ์คํ ์ฑ๊ณต ์ฌ๋ถ, ํธ์คํ ์ฃผ์ ๋ฑ์ ์ ์ ์์ต๋๋ค.
์๋ฃ ๋ฉ์์ง์ ํจ๊ป ์ถ๋ ฅ๋ Hosting URL์ ์ ๊ทผํ์ฌ
๋ค์๊ณผ ๊ฐ์ด Setup Complete ๋ฌธ๊ตฌ์ ํจ๊ป ๋ฐฐํฌ๊ฐ ์ ๋์์์ ์ ์ ์์ด์~:)
hosting ์ฃผ์๋ก ๋ค์ด๊ฐ๋ ๋์ผํ ํ๋ฉด์ด ์ ์ถ๋ ฅ๋๋ ๊ฒ ํ์ธ!
๋ํ, Firebase Console์์ ๋ฐฐํฌ ๊ธฐ๋ก์ ํ์ธํ ์ ์์ต๋๋ค.
ํด๋น ๋๋ฉ์ธ์ ๋ค์ด๊ฐ๋ฉด ํ ์คํธํ ๊ทธ๋๋ก ์ ๋ฐฐํฌ๋์์์ ์ ์ ์๋ค์!
public ํด๋ ์์ ๋ด์ฉ์ ์์ ํ๊ณ ๋ค์ deploy ๋ช ๋ น์ด๋ฅผ ํตํด ๋ฐฐํฌํ๋ฉด ๋ฐ๋ก๋ฐ๋ก ์ ์ฉ๋ ์น ํ๋ฉด์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
๋ฌด๋ฃ๋ก ๊ฐ๋จํ๊ฒ ์น ํธ์คํ
๋ฐฐํฌํ ์ ์๋ค๋ !! ๐๐ป
์ค๋๋ง์ ํ์ด์ด๋ฒ ์ด์ค ์น ํธ์คํ ํ๋๊น ๋ฐ์ํ ์๋ฌ!
Error: Failed to get Firebase project hostingdemo-a9104. Please make sure the project exists and your account has permission to access it.
๊ถํ์ด ๋ง๋ฃ๋์์ผ๋ฏ๋ก ์๋ ๋ช ๋ น์ด ์ํํ์ฌ ๋์ค๋ ์ฃผ์๋ก ์๋ ์ฐ๊ฒฐ๋์ด ๊ณ์ ๊ถํ์ ๋ค์ ๋ฐ์ผ๋ฉด ํด๊ฒฐ!
firebase login --reauth