각 Firebase 프로젝트에 하나 이상의 Firebase Hosting 사이트를 설정할 수 있습니다. 사이트가 모두 같은 Firebase 프로젝트에 있으므로 모든 사이트에서 프로젝트의 다른 Firebase 리소스에 액세스할 수 있습니다.
같은 Firebase 프로젝트 내에서 여러 Hosting 사이트를 설정하여 관련 사이트 및 앱 사이에 Firebase 리소스를 보다 쉽게 공유할 수 있습니다. 예를 들어 블로그, 관리 패널, 공개 앱을 동일한 Firebase 프로젝트에 개별 사이트로 설정한 경우 이러한 사이트 및 앱은 고유한 자체 도메인 또는 콘텐츠를 보유하면서도 모두 같은 Firebase Authentication 사용자 데이터베이스를 공유할 수 있습니다.
1단계: Firebase CLI 버전 업데이트
Firebase CLI를 최신 버전으로 업데이트하여 최신 Firebase Hosting 기능을 사용하세요.
2단계: 사이트 더 추가
다음 방법 중 하나를 사용하여 Firebase 프로젝트에 사이트를 추가합니다.
Firebase Console의 Hosting 페이지에 있는 워크플로를 사용합니다.
Firebase CLI 명령어를 사용합니다.
firebase hosting:sites:create SITE_ID
Hosting REST API를 사용합니다.
projects.sites.create
각 방법마다 사이트의 Firebase에서 프로비저닝된 기본 하위 도메인을 구성하는 데 사용되는 SITE_ID
를 지정합니다.
SITE_ID.web.app
SITE_ID.firebaseapp.com
이러한 URL에는 SITE_ID
가 사용되기 때문에 사이트 ID에는 다음과 같은 요구사항이 있습니다.
- 유효한 호스트 이름 라벨이어야 합니다. 즉,
.
,_
등을 포함할 수 없습니다. - 30자(영문 기준) 이하여야 합니다.
- Firebase 내에서 전역적으로 고유해야 합니다.
필요에 따라 각 사이트에 커스텀 도메인을 추가하여 여러 URL에 같은 콘텐츠 및 구성을 제공할 수도 있습니다.
보조 사이트 삭제
다음 방법 중 하나를 사용하여 Firebase 프로젝트에서 원하지 않는 사이트를 삭제합니다.
Firebase Console의 Hosting 페이지에 있는 워크플로를 사용합니다.
Firebase CLI 명령어를 사용합니다.
firebase hosting:sites:delete SITE_ID
Hosting REST API를 사용합니다.
projects.sites.delete
Firebase 프로젝트 ID와 SITE_ID
가 같은 기본 사이트는 삭제할 수 없습니다.
3단계: 사이트 배포 대상 설정
사이트가 여러 개 있고 Firebase CLI 배포 명령어를 실행하는 경우 CLI에는 각 사이트에 배포해야 하는 설정을 전달하는 방법이 필요합니다. 배포 대상을 사용하면 테스트 또는 사이트에 배포하기 위한 firebase.json
구성 파일 및 Firebase CLI 명령어에서 TARGET_NAME
으로 특정 사이트를 고유하게 식별할 수 있습니다.
배포 대상을 만들고 TARGET_NAME
을 Hosting 사이트에 적용하려면 프로젝트 디렉터리의 루트에서 다음 CLI 명령어를 실행합니다.
firebase target:apply hosting TARGET_NAME RESOURCE_IDENTIFIER
여기에서 매개변수는 다음과 같습니다.
TARGET_NAME - 배포할 Hosting 사이트의 고유한 이름(사용자가 직접 정의)
RESOURCE_IDENTIFIER - Firebase 프로젝트에 나열된 Hosting 사이트의
SITE_ID
예를 들어 Firebase 프로젝트에서 두 개의 사이트(myapp-blog
및 myapp-app
)를 만든 경우 다음 명령어를 실행하여 각 사이트에 고유한 TARGET_NAME
(각각 blog
및 app
)을 적용할 수 있습니다.
firebase target:apply hosting blog myapp-blog
firebase target:apply hosting app myapp-app
배포 대상 설정은 프로젝트 디렉터리의 .firebaserc
파일에 저장되므로 프로젝트당 배포 대상을 한 번만 설정하면 됩니다.
4단계: 각 사이트의 호스팅 구성 정의
firebase.json
파일에서 호스팅 구성을 정의할 때 사이트의 적용된 TARGET_NAME
을 사용합니다.
firebase.json
파일에 여러 사이트의 구성이 정의되어 있으면 배열 형식을 사용합니다.{ "hosting": [ { "target": "blog", // "blog" is the applied TARGET_NAME for the Hosting site "myapp-blog" "public": "blog/dist", // contents of this folder are deployed to the site "myapp-blog" // ... }, { "target": "app", // "app" is the applied TARGET_NAME for the Hosting site "myapp-app" "public": "app/dist", // contents of this folder are deployed to the site "myapp-app" // ... "rewrites": [...] // You can define specific Hosting configurations for each site } ] }
firebase.json
파일에 한 사이트의 구성만 정의되어 있으면 배열 형식을 사용할 필요가 없습니다.{ "hosting": { "target": "blog", "public": "dist", // ... "rewrites": [...] } }
5단계: 로컬 테스트, 변경사항 미리보기, 사이트에 배포
로컬 프로젝트 디렉터리의 루트에서 다음 명령어 중 하나를 실행합니다.
명령어 | 설명 |
---|---|
firebase emulators:start --only hosting |
로컬로 호스팅된 URL에서 기본 Hosting 호스팅 사이트의 Hosting 콘텐츠 및 구성을 에뮬레이션합니다. |
firebase emulators:start --only hosting:TARGET_NAME |
로컬로 호스팅된 URL에서 지정된 Hosting 사이트의 Hosting 콘텐츠 및 구성을 에뮬레이션합니다. |
firebase hosting:channel:deploy \ |
미리보기 URL에서 기본 Hosting 사이트의 Hosting 콘텐츠 및 구성을 배포합니다. |
firebase hosting:channel:deploy \ |
미리보기 URL에서 지정된 Hosting 사이트의 Hosting 콘텐츠 및 구성을 배포합니다. |
firebase deploy --only hosting |
firebase.json 에 구성된 모든 Hosting 사이트의 라이브 채널에 Hosting 콘텐츠 및 구성을 배포합니다.
|
firebase deploy --only hosting:TARGET_NAME |
지정된 Hosting 사이트의 실시간 채널에 Hosting 콘텐츠 및 구성을 배포합니다. |
명령어 | 설명 |
---|---|
(권장되지 않음, 대신 emulators:start 사용)firebase serve --only hosting |
로컬로 호스팅된 URL에서 기본 Hosting 사이트의 Hosting 콘텐츠 및 구성을 제공합니다. |
(권장되지 않음, 대신 emulators:start 사용)firebase serve --only hosting:TARGET_NAME |
로컬로 호스팅된 URL에서 지정된 Hosting 사이트의 Hosting 콘텐츠 및 구성을 제공합니다. |