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

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

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

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

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

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

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

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

  • از گردش کار در صفحه میزبانی کنسول 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 حذف کنید:

  • از گردش کار در صفحه میزبانی کنسول 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 در یک سایت میزبانی، دستور CLI زیر را از ریشه دایرکتوری پروژه خود اجرا کنید:

firebase target:apply hosting TARGET_NAME RESOURCE_IDENTIFIER

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

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

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