منابع پروژه را در چندین سایت به اشتراک بگذارید

شما می توانید یک یا چند سایت Firebase Hosting را در یک پروژه Firebase راه اندازی کنید. از آنجایی که سایت ها همه در یک پروژه Firebase هستند، همه سایت ها می توانند به منابع Firebase دیگر پروژه دسترسی داشته باشند.

  • هر سایتی تنظیمات میزبانی مخصوص به خود را دارد.
  • هر سایت مجموعه ای از مطالب خود را میزبانی می کند.
  • هر سایت می تواند یک یا چند دامنه مرتبط داشته باشد.

با راه اندازی چندین سایت Hosting در یک پروژه Firebase، می توانید به راحتی منابع Firebase را بین سایت ها و برنامه های مرتبط به اشتراک بگذارید. به عنوان مثال، اگر وبلاگ، پنل مدیریت و برنامه عمومی خود را به عنوان سایت های جداگانه در یک پروژه Firebase راه اندازی کنید، همه آنها می توانند پایگاه داده کاربری Firebase Authentication یکسان را به اشتراک بگذارند، در حالی که دامنه یا محتوای منحصر به فرد خود را نیز دارند.

مرحله 1 : نسخه Firebase CLI خود را به روز کنید

با به روز رسانی به آخرین نسخه Firebase CLI به جدیدترین ویژگی های Firebase Hosting دسترسی پیدا کنید.

مرحله 2 : سایت های اضافی را اضافه کنید

سایت های اضافی را با استفاده از یکی از روش های زیر به پروژه Firebase اضافه کنید:

  • از گردش کار در صفحه Hosting کنسول Firebase استفاده کنید

  • از دستور Firebase CLI استفاده کنید: firebase hosting:sites:create SITE_ID

  • از Hosting REST API: projects.sites.create استفاده کنید

برای هر یک از این روش‌ها، یک SITE_ID مشخص می‌کنید که برای ساختن زیر دامنه‌های پیش‌فرض ارائه‌شده توسط Firebase برای سایت استفاده می‌شود:

  • SITE_ID .web.app
  • SITE_ID .firebaseapp.com

از آنجایی که SITE_ID برای این URL ها استفاده می شود، شناسه سایت دارای شرایط زیر است:

  • باید یک برچسب نام میزبان معتبر باشد، به این معنی که نمی تواند حاوی . ، _ و غیره
  • باید 30 کاراکتر یا کمتر باشد
  • باید در Firebase در سطح جهانی منحصر به فرد باشد

به هر سایت، می‌توانید به صورت اختیاری دامنه‌های سفارشی اضافه کنید تا محتوا و پیکربندی یکسانی را به چندین URL ارائه کند.

حذف یک سایت ثانویه

سایت های ناخواسته را با استفاده از یکی از روش های زیر از پروژه Firebase حذف کنید:

  • از گردش کار در صفحه Hosting کنسول Firebase استفاده کنید

  • از دستور Firebase CLI استفاده کنید: firebase hosting:sites:delete SITE_ID

  • از Hosting REST API استفاده کنید: projects.sites.delete

توجه داشته باشید که نمی‌توانید سایت پیش‌فرض را که همان SITE_ID ID پروژه Firebase شما است، حذف کنید.

مرحله 3 : اهداف استقرار را برای سایت های خود تنظیم کنید

هنگامی که چندین سایت دارید و دستورات استقرار Firebase CLI را اجرا می کنید، CLI به راهی برای برقراری ارتباط بین تنظیماتی که باید در هر سایت مستقر شود نیاز دارد. با Deploy targets می توانید به طور منحصر به فرد یک سایت خاص را با یک TARGET_NAME در فایل پیکربندی firebase.json و در دستورات Firebase CLI خود برای آزمایش یا استقرار در سایت های خود شناسایی کنید.

برای ایجاد یک Deploy target و اعمال TARGET_NAME در یک سایت Hosting ، دستور CLI زیر را از ریشه دایرکتوری پروژه خود اجرا کنید:

firebase target:apply hosting TARGET_NAME RESOURCE_IDENTIFIER

جایی که پارامترها عبارتند از:

  • TARGET_NAME - یک نام منحصر به فرد (که خودتان تعریف کرده اید) برای سایت Hosting که در آن مستقر هستید

  • RESOURCE_IDENTIFIER - SITE_ID برای سایت Hosting که در پروژه Firebase شما فهرست شده است

برای مثال، اگر دو سایت ( myapp-blog و myapp-app ) در پروژه Firebase خود ایجاد کرده‌اید، می‌توانید با اجرای دستورات زیر یک 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 محتوای Hosting و پیکربندی سایت Hosting پیش فرض را در یک URL میزبانی محلی شبیه سازی می کند
firebase emulators:start --only hosting: TARGET_NAME محتوای Hosting و پیکربندی سایت Hosting مشخص شده را در یک URL میزبانی محلی شبیه سازی می کند.
firebase hosting:channel:deploy \
CHANNEL_ID
محتوای Hosting و پیکربندی سایت Hosting پیش فرض را در یک URL پیش نمایش مستقر می کند
firebase hosting:channel:deploy \
CHANNEL_ID --only TARGET_NAME
محتوای Hosting و پیکربندی سایت Hosting مشخص شده را در یک URL پیش نمایش مستقر می کند
firebase deploy --only hosting محتوا و پیکربندی Hosting را در کانال زنده همه سایت های Hosting پیکربندی شده در firebase.json پیاده می کند.
firebase deploy --only hosting: TARGET_NAME محتوا و پیکربندی Hosting را در کانال زنده سایت Hosting مشخص شده مستقر می کند
فرمان توضیحات
(توصیه نمی شود؛ به جای آن emulators:start )
firebase serve --only hosting
محتوای Hosting و پیکربندی سایت Hosting پیش فرض را در یک URL میزبانی محلی ارائه می دهد
(توصیه نمی شود؛ به جای آن emulators:start )
firebase serve --only hosting: TARGET_NAME
محتوای Hosting و پیکربندی سایت Hosting مشخص شده را در یک URL میزبانی محلی ارائه می دهد.