App Hosting ব্যবহারের সহজতা এবং কম রক্ষণাবেক্ষণের জন্য ডিজাইন করা হয়েছে, বেশিরভাগ ব্যবহারের ক্ষেত্রে ডিফল্ট সেটিংস অপ্টিমাইজ করা হয়েছে। একই সাথে, App Hosting আপনার নির্দিষ্ট প্রয়োজনের জন্য ব্যাকএন্ড পরিচালনা এবং কনফিগার করার জন্য সরঞ্জাম সরবরাহ করে। এই নির্দেশিকাটি সেই সরঞ্জাম এবং প্রক্রিয়াগুলি বর্ণনা করে।
apphosting.yaml তৈরি এবং সম্পাদনা করুন
পরিবেশগত ভেরিয়েবল বা রানটাইম সেটিংস যেমন কনকারেন্সি, সিপিইউ এবং মেমোরি লিমিটের মতো উন্নত কনফিগারেশনের জন্য, আপনাকে আপনার অ্যাপের রুট ডিরেক্টরিতে apphosting.yaml ফাইল তৈরি এবং সম্পাদনা করতে হবে। এই ফাইলটি ক্লাউড সিক্রেট ম্যানেজারের মাধ্যমে পরিচালিত গোপনীয়তার রেফারেন্সগুলিকেও সমর্থন করে, যা সোর্স নিয়ন্ত্রণে চেক করা নিরাপদ করে তোলে।
apphosting.yaml তৈরি করতে, নিম্নলিখিত কমান্ডটি চালান:
firebase init apphosting
এটি একটি মৌলিক স্টার্টার apphosting.yaml ফাইল তৈরি করে যার উদাহরণ (মন্তব্য করা হয়েছে) কনফিগারেশন রয়েছে। সম্পাদনা করার পরে, একটি সাধারণ apphosting.yaml ফাইলটি নিম্নলিখিতগুলির মতো দেখতে পারে, ব্যাকএন্ডের Cloud Run পরিষেবার জন্য সেটিংস, কিছু পরিবেশগত ভেরিয়েবল এবং ক্লাউড সিক্রেট ম্যানেজার দ্বারা পরিচালিত গোপনীয়তার কিছু উল্লেখ সহ:
# Settings for Cloud Run
runConfig:
minInstances: 2
maxInstances: 100
concurrency: 100
cpu: 2
memoryMiB: 1024
# Environment variables and secrets
env:
- variable: STORAGE_BUCKET
value: mybucket.firebasestorage.app
availability:
- BUILD
- RUNTIME
- variable: API_KEY
secret: myApiKeySecret
# Same as API_KEY above but with a pinned version.
- variable: PINNED_API_KEY
secret: myApiKeySecret@5
# Same as API_KEY above but with the long form secret reference as defined by Cloud Secret Manager.
- variable: VERBOSE_API_KEY
secret: projects/test-project/secrets/secretID
# Same as API_KEY above but with the long form secret reference with pinned version.
- variable: PINNED_VERBOSE_API_KEY
secret: projects/test-project/secrets/secretID/versions/5
এই নির্দেশিকার বাকি অংশে এই উদাহরণ সেটিংসের জন্য আরও তথ্য এবং প্রসঙ্গ প্রদান করা হয়েছে।
Cloud Run পরিষেবা সেটিংস কনফিগার করুন
apphosting.yaml সেটিংসের সাহায্যে, আপনি আপনার Cloud Run পরিষেবা কীভাবে সরবরাহ করা হবে তা কনফিগার করতে পারেন। Cloud Run পরিষেবার জন্য উপলব্ধ সেটিংস runConfig অবজেক্টে প্রদান করা হয়েছে:
-
cpu– প্রতিটি সার্ভিং ইনস্ট্যান্সের জন্য ব্যবহৃত CPU-এর সংখ্যা (ডিফল্ট 0)। -
memoryMiB– MiB-তে প্রতিটি সার্ভিং ইনস্ট্যান্সের জন্য বরাদ্দকৃত মেমোরির পরিমাণ (ডিফল্ট 512) -
maxInstances- একসাথে চালানোর জন্য সর্বোচ্চ সংখ্যক কন্টেইনার (ডিফল্ট ১০০ এবং কোটা দ্বারা পরিচালিত) -
minInstances– সর্বদা জীবিত রাখার জন্য কন্টেইনারের সংখ্যা (ডিফল্ট 0)। -
concurrency– প্রতিটি পরিবেশনকারী ইনস্ট্যান্স সর্বোচ্চ সংখ্যক অনুরোধ গ্রহণ করতে পারে (ডিফল্ট ৮০)।
cpu এবং memoryMiB মধ্যে গুরুত্বপূর্ণ সম্পর্কটি লক্ষ্য করুন; মেমোরি 128 থেকে 32768 এর মধ্যে যেকোনো পূর্ণসংখ্যার মানে সেট করা যেতে পারে, তবে মেমোরি সীমা বাড়ানোর জন্য CPU সীমা বাড়ানোর প্রয়োজন হতে পারে:
- 4GiB এর বেশি এর জন্য কমপক্ষে 2 টি CPU প্রয়োজন
- ৮ জিআইবি-র বেশি এর জন্য কমপক্ষে ৪টি সিপিইউ প্রয়োজন
- ১৬GiB এর বেশি এর জন্য কমপক্ষে ৬টি CPU প্রয়োজন
- 24GiB এর বেশি এর জন্য কমপক্ষে 8 টি CPU প্রয়োজন
একইভাবে, cpu এর মান কনকারেন্সি সেটিংসকে প্রভাবিত করে। যদি আপনি 1 CPU এর কম মান সেট করেন, তাহলে আপনাকে কনকারেন্সি 1 তে সেট করতে হবে এবং CPU শুধুমাত্র অনুরোধ প্রক্রিয়াকরণের সময় বরাদ্দ করা হবে।
পরিবেশ কনফিগার করুন
কখনও কখনও আপনার বিল্ড প্রক্রিয়ার জন্য অতিরিক্ত কনফিগারেশনের প্রয়োজন হয়, যেমন তৃতীয় পক্ষের API কী বা টিউনেবল সেটিংস। App Hosting আপনার প্রকল্পের জন্য এই ধরণের ডেটা সংরক্ষণ এবং পুনরুদ্ধার করার জন্য apphosting.yaml এ পরিবেশগত কনফিগারেশন অফার করে।
env:
- variable: STORAGE_BUCKET
value: mybucket.firebasestorage.app
Next.js অ্যাপের জন্য, পরিবেশ ভেরিয়েবল ধারণকারী dotenv ফাইলগুলি App Hosting সাথেও কাজ করবে। যেকোনো ফ্রেমওয়ার্কের সাথে গ্রানুলার এনভায়রনমেন্ট ভেরিয়েবল নিয়ন্ত্রণের জন্য আমরা apphosting.yaml ব্যবহার করার পরামর্শ দিই।
apphosting.yaml তে, availability প্রপার্টি ব্যবহার করে আপনি নির্দিষ্ট করতে পারেন যে কোন প্রক্রিয়াগুলি আপনার পরিবেশ ভেরিয়েবলে অ্যাক্সেস করতে পারে। আপনি একটি পরিবেশ ভেরিয়েবলকে শুধুমাত্র বিল্ড এনভায়রনমেন্টের জন্য উপলব্ধ বা শুধুমাত্র রানটাইম এনভায়রনমেন্টের জন্য উপলব্ধ করার জন্য সীমাবদ্ধ করতে পারেন। ডিফল্টরূপে, এটি উভয়ের জন্যই উপলব্ধ।
env:
- variable: STORAGE_BUCKET
value: mybucket.firebasestorage.app
availability:
- BUILD
- RUNTIME
Next.js অ্যাপের জন্য, আপনি আপনার dotenv ফাইলের মতো NEXT_PUBLIC_ প্রিফিক্সটিও ব্যবহার করতে পারেন যাতে ব্রাউজারে একটি ভেরিয়েবল অ্যাক্সেসযোগ্য হয়।
env:
- variable: NEXT_PUBLIC_STORAGE_BUCKET
value: mybucket.firebasestorage.app
availability:
- BUILD
- RUNTIME
বৈধ ভেরিয়েবল কীগুলিতে AZ অক্ষর বা আন্ডারস্কোর থাকে। কিছু এনভায়রনমেন্ট ভেরিয়েবল কী অভ্যন্তরীণ ব্যবহারের জন্য সংরক্ষিত থাকে। আপনার কনফিগারেশন ফাইলগুলিতে এই কীগুলির কোনওটি ব্যবহার করবেন না:
-
X_FIREBASE_দিয়ে শুরু হওয়া যেকোনো চলক -
PORT -
K_SERVICE -
K_REVISION -
K_CONFIGURATION
বিল্ড ওভাররাইড করুন এবং স্ক্রিপ্ট চালান
App Hosting সনাক্ত করা ফ্রেমওয়ার্কের উপর ভিত্তি করে আপনার অ্যাপের বিল্ড এবং স্টার্ট কমান্ড অনুমান করে। আপনি যদি একটি কাস্টম বিল্ড বা স্টার্ট কমান্ড ব্যবহার করতে চান, তাহলে আপনি apphosting.yaml এ App Hosting এর ডিফল্ট মানগুলি ওভাররাইড করতে পারেন।
scripts:
buildCommand: next build --no-lint
runCommand: node dist/index.js
বিল্ড কমান্ড ওভাররাইড অন্য যেকোনো বিল্ড কমান্ডের চেয়ে অগ্রাধিকার পায় এবং আপনার অ্যাপটিকে ফ্রেমওয়ার্ক অ্যাডাপ্টার থেকে বাদ দেয় এবং App Hosting প্রদত্ত যেকোনো ফ্রেমওয়ার্ক নির্দিষ্ট অপ্টিমাইজেশন অক্ষম করে। যখন আপনার অ্যাপের বৈশিষ্ট্যগুলি অ্যাডাপ্টার দ্বারা ভালভাবে সমর্থিত না হয় তখন এটি সবচেয়ে ভালোভাবে ব্যবহার করা হয়। আপনি যদি আপনার বিল্ড কমান্ড পরিবর্তন করতে চান কিন্তু এখনও আমাদের প্রদত্ত অ্যাডাপ্টার ব্যবহার করতে চান, তাহলে App Hosting ফ্রেমওয়ার্ক অ্যাডাপ্টারে বর্ণিত পদ্ধতি অনুসারে package.json এ আপনার বিল্ড স্ক্রিপ্ট সেট করুন।
App Hosting -ইনফার্ড কমান্ডের থেকে আলাদা কোনও নির্দিষ্ট কমান্ড ব্যবহার করার সময়, রান কমান্ড ওভাররাইড ব্যবহার করুন।
বিল্ড আউটপুট কনফিগার করুন
App Hosting ফ্রেমওয়ার্ক দ্বারা নির্দেশিত অব্যবহৃত আউটপুট ফাইলগুলি মুছে ফেলে ডিফল্টরূপে আপনার অ্যাপ ডিপ্লয়গুলিকে অপ্টিমাইজ করে। আপনি যদি আপনার অ্যাপ ডিপ্লয় আকার আরও অপ্টিমাইজ করতে চান বা ডিফল্ট অপ্টিমাইজেশনগুলি উপেক্ষা করতে চান, তাহলে আপনি apphosting.yaml এ এটিকে ওভাররাইড করতে পারেন।
outputFiles:
serverApp:
include: [dist, server.js]
include প্যারামিটারটি আপনার অ্যাপ স্থাপনের জন্য প্রয়োজনীয় অ্যাপ রুট ডিরেক্টরির সাথে সম্পর্কিত ডিরেক্টরি এবং ফাইলগুলির একটি তালিকা গ্রহণ করে। যদি আপনি নিশ্চিত করতে চান যে সমস্ত ফাইল রাখা হয়েছে, তাহলে include কে [.] এ সেট করুন এবং সমস্ত ফাইল স্থাপন করা হবে।
গোপন প্যারামিটার সংরক্ষণ এবং অ্যাক্সেস করুন
API কী-এর মতো সংবেদনশীল তথ্য গোপন হিসেবে সংরক্ষণ করা উচিত। সংবেদনশীল তথ্য সোর্স কন্ট্রোলে চেক করা এড়াতে আপনি apphosting.yaml এ গোপন তথ্য উল্লেখ করতে পারেন।
secret ধরণের প্যারামিটারগুলি স্ট্রিং প্যারামিটারগুলিকে প্রতিনিধিত্ব করে যার একটি মান ক্লাউড সিক্রেট ম্যানেজারে সংরক্ষিত থাকে। সরাসরি মানটি বের করার পরিবর্তে, সিক্রেট প্যারামিটারগুলি ক্লাউড সিক্রেট ম্যানেজারে অস্তিত্ব পরীক্ষা করে এবং রোলআউটের সময় মানগুলি লোড করে।
- variable: API_KEY
secret: myApiKeySecret
ক্লাউড সিক্রেট ম্যানেজারের সিক্রেটের একাধিক সংস্করণ থাকতে পারে। ডিফল্টরূপে, আপনার লাইভ ব্যাকএন্ডে উপলব্ধ একটি সিক্রেট প্যারামিটারের মান ব্যাকএন্ড তৈরির সময় সিক্রেটের সর্বশেষ উপলব্ধ সংস্করণে পিন করা হয়। যদি আপনার প্যারামিটারের সংস্করণ এবং জীবনচক্র পরিচালনার জন্য প্রয়োজনীয়তা থাকে, তাহলে আপনি ক্লাউড সিক্রেট ম্যানেজারের সাহায্যে নির্দিষ্ট সংস্করণে পিন করতে পারেন। উদাহরণস্বরূপ, সংস্করণ 5 এ পিন করতে:
- variable: PINNED_API_KEY
secret: myApiKeySecret@5
আপনি CLI কমান্ড firebase apphosting:secrets:set ব্যবহার করে গোপন তথ্য তৈরি করতে পারেন এবং আপনাকে প্রয়োজনীয় অনুমতি যোগ করতে বলা হবে। এই প্রবাহ আপনাকে স্বয়ংক্রিয়ভাবে apphosting.yaml এ গোপন তথ্য যোগ করার বিকল্প দেয়।
ক্লাউড সিক্রেট ম্যানেজার কার্যকারিতার সম্পূর্ণ স্যুট ব্যবহার করতে, আপনি ক্লাউড সিক্রেট ম্যানেজার কনসোল ব্যবহার করতে পারেন। যদি আপনি এটি করেন, তাহলে আপনাকে firebase apphosting:secrets:grantaccess কমান্ড ব্যবহার করে আপনার App Hosting ব্যাকএন্ডে অনুমতি প্রদান করতে হবে।
VPC অ্যাক্সেস কনফিগার করুন
আপনার App Hosting ব্যাকএন্ড একটি ভার্চুয়াল প্রাইভেট ক্লাউড (VPC) নেটওয়ার্কের সাথে সংযুক্ত হতে পারে। আরও তথ্য এবং উদাহরণের জন্য, Firebase App Hosting একটি VPC নেটওয়ার্কের সাথে সংযুক্ত করুন দেখুন।
অ্যাক্সেস কনফিগার করতে আপনার apphosting.yaml ফাইলে vpcAccess ম্যাপিং ব্যবহার করুন। সম্পূর্ণরূপে যোগ্য নেটওয়ার্ক/সংযোগকারীর নাম অথবা একটি আইডি ব্যবহার করুন। আইডি ব্যবহার করলে বিভিন্ন সংযোগকারী/নেটওয়ার্ক সহ স্টেজিং এবং প্রোডাকশন পরিবেশের মধ্যে পোর্টেবিলিটি সম্ভব হয়।
ডাইরেক্ট ভিপিসি এগ্রেস কনফিগারেশন ( apphosting.yaml ):
runConfig:
vpcAccess:
egress: PRIVATE_RANGES_ONLY # Default value
networkInterfaces:
# Specify at least one of network and/or subnetwork
- network: my-network-id
subnetwork: my-subnetwork-id
সার্ভারলেস সংযোগকারী কনফিগারেশন ( apphosting.yaml ):
runConfig:
vpcAccess:
egress: ALL_TRAFFIC
connector: connector-id
ব্যাকএন্ড পরিচালনা করুন
App Hosting ব্যাকএন্ডের মৌলিক ব্যবস্থাপনার জন্য কমান্ডগুলি Firebase CLI এবং Firebase কনসোলে প্রদান করা হয়েছে। এই বিভাগটি ব্যাকএন্ড তৈরি এবং মুছে ফেলা সহ কিছু সাধারণ ব্যবস্থাপনার কাজ বর্ণনা করে।
একটি ব্যাকএন্ড তৈরি করুন
App Hosting ব্যাকএন্ড হল পরিচালিত রিসোর্সের সংগ্রহ যা App Hosting আপনার ওয়েব অ্যাপ তৈরি এবং চালানোর জন্য তৈরি করে।
Firebase কনসোল : Build মেনু থেকে, App Hosting নির্বাচন করুন এবং তারপর Get started নির্বাচন করুন।
CLI: (সংস্করণ ১৩.১৫.৪ বা তার পরবর্তী) একটি ব্যাকএন্ড তৈরি করতে, আপনার স্থানীয় প্রকল্প ডিরেক্টরির রুট থেকে নিম্নলিখিত কমান্ডটি চালান, আপনার প্রকল্পআইডিটি একটি আর্গুমেন্ট হিসাবে সরবরাহ করুন:
firebase apphosting:backends:create --project PROJECT_ID
কনসোল অথবা CLI উভয়ের জন্যই, একটি অঞ্চল নির্বাচন করতে, একটি GitHub সংযোগ সেট আপ করতে এবং এই মৌলিক স্থাপনার সেটিংস কনফিগার করতে প্রম্পটগুলি অনুসরণ করুন:
আপনার অ্যাপের রুট ডিরেক্টরি সেট করুন (ডিফল্ট
/এ)সাধারণত এখানেই আপনার
package.jsonফাইলটি অবস্থিত।
লাইভ শাখা সেট করুন
এটি আপনার GitHub রিপোজিটরির শাখা যা আপনার লাইভ URL-এ স্থাপন করা হয়। প্রায়শই, এটি সেই শাখা যেখানে বৈশিষ্ট্য শাখা বা উন্নয়ন শাখা একত্রিত করা হয়।
স্বয়ংক্রিয় রোলআউট গ্রহণ বা প্রত্যাখ্যান করুন
স্বয়ংক্রিয় রোলআউটগুলি ডিফল্টরূপে সক্ষম থাকে। ব্যাকএন্ড তৈরি সম্পন্ন হওয়ার পরে, আপনি আপনার অ্যাপটি অবিলম্বে App Hosting স্থাপন করার জন্য বেছে নিতে পারেন।
আপনার ব্যাকএন্ডে একটি নাম দিন।
একটি ব্যাকএন্ড মুছুন
কোনও ব্যাকএন্ড সম্পূর্ণরূপে অপসারণ করতে, প্রথমে Firebase CLI অথবা Firebase কনসোল ব্যবহার করে এটি মুছে ফেলুন, এবং তারপর ম্যানুয়ালি সম্পর্কিত সম্পদগুলি সরিয়ে ফেলুন, বিশেষ যত্ন নিন যাতে অন্য ব্যাকএন্ড বা আপনার Firebase প্রকল্পের অন্যান্য দিক দ্বারা ব্যবহৃত কোনও সংস্থান মুছে না যায়।
Firebase কনসোল : Setting মেনু থেকে, Delete backend নির্বাচন করুন।
CLI: (সংস্করণ ১৩.১৫.৪ বা তার পরবর্তী)
App Hosting ব্যাকএন্ড মুছে ফেলার জন্য নিম্নলিখিত কমান্ডটি চালান। এটি আপনার ব্যাকএন্ডের জন্য সমস্ত ডোমেন অক্ষম করে এবং সংশ্লিষ্ট Cloud Run পরিষেবা মুছে ফেলে:
firebase apphosting:backends:delete BACKEND_ID --project PROJECT_ID(ঐচ্ছিক) Artifact Registry জন্য গুগল ক্লাউড কনসোল ট্যাবে, "firebaseapphosting-images"-এ আপনার ব্যাকএন্ডের জন্য ছবিটি মুছে ফেলুন।
ক্লাউড সিক্রেট ম্যানেজারে , গোপন নামে "অ্যাপহোস্টিং" লেখা যেকোনো গোপন তথ্য মুছে ফেলুন, বিশেষ যত্ন নিন যাতে এই গোপন তথ্যগুলি অন্য ব্যাকএন্ড বা আপনার ফায়ারবেস প্রকল্পের অন্যান্য দিক দ্বারা ব্যবহৃত না হয় ।