আপনার গতিশীল সামগ্রী তৈরি এবং পরিবেশন করতে বা মাইক্রোসার্ভিস হিসাবে REST API তৈরি করতে Firebase হোস্টিংয়ের সাথে ক্লাউড ফাংশনগুলিকে যুক্ত করুন৷
Firebase-এর জন্য ক্লাউড ফাংশন আপনাকে HTTPS অনুরোধের জবাবে স্বয়ংক্রিয়ভাবে ব্যাকএন্ড কোড চালাতে দেয়। আপনার কোড Google এর ক্লাউডে সংরক্ষণ করা হয় এবং একটি পরিচালিত পরিবেশে চলে। আপনার নিজস্ব সার্ভার পরিচালনা এবং স্কেল করার কোন প্রয়োজন নেই।
উদাহরণ স্বরূপ Firebase হোস্টিং-এর সাথে একীভূত ক্লাউড ফাংশনগুলির জন্য কেস এবং নমুনাগুলি ব্যবহার করুন, আমাদের সার্ভারহীন ওভারভিউ দেখুন।
ক্লাউড ফাংশনগুলিকে ফায়ারবেস হোস্টিংয়ের সাথে সংযুক্ত করুন
এই বিভাগটি ফায়ারবেস হোস্টিংয়ের সাথে একটি ফাংশন সংযোগ করার জন্য একটি ওয়াক-থ্রু উদাহরণ প্রদান করে।
মনে রাখবেন যে গতিশীল সামগ্রী পরিবেশন করার কর্মক্ষমতা উন্নত করতে, আপনি ঐচ্ছিকভাবে আপনার ক্যাশে সেটিংস টিউন করতে পারেন৷
ধাপ 1: ক্লাউড ফাংশন সেট আপ করুন
নিশ্চিত করুন যে আপনার কাছে Firebase CLI এর সর্বশেষ সংস্করণ আছে এবং আপনি Firebase হোস্টিং শুরু করেছেন।
CLI ইনস্টল করা এবং হোস্টিং শুরু করার বিষয়ে বিস্তারিত নির্দেশাবলীর জন্য, হোস্টিংয়ের জন্য শুরু করুন নির্দেশিকা দেখুন।
আপনি ক্লাউড ফাংশন সেট আপ করেছেন তা নিশ্চিত করুন:
আপনি যদি ইতিমধ্যেই ক্লাউড ফাংশন সেট আপ করে থাকেন, তাহলে আপনি ধাপ 2-এ যেতে পারেন: একটি HTTPS ফাংশন তৈরি করুন এবং পরীক্ষা করুন ।
আপনি যদি ক্লাউড ফাংশন সেট আপ না করে থাকেন:
আপনার প্রকল্প ডিরেক্টরির রুট থেকে নিম্নলিখিত কমান্ডটি চালিয়ে ক্লাউড ফাংশনগুলি শুরু করুন:
firebase init functions
অনুরোধ করা হলে, JavaScript নির্বাচন করুন (এই ওয়াক-থ্রু উদাহরণ JS ব্যবহার করে)।
আপনার স্থানীয় প্রকল্প ডিরেক্টরিতে আপনার একটি
functions
ডিরেক্টরি আছে কিনা পরীক্ষা করুন (আপনি এইমাত্র চালানো ফায়ারবেস কমান্ড দ্বারা তৈরি)। এইfunctions
ডিরেক্টরি যেখানে ক্লাউড ফাংশনের কোড থাকে।
ধাপ 2: আপনার হোস্টিং সাইটের জন্য একটি HTTPS ফাংশন তৈরি করুন এবং পরীক্ষা করুন
আপনার প্রিয় সম্পাদকে
/functions/index.js
খুলুন।নিম্নলিখিত কোড দিয়ে ফাইলের বিষয়বস্তু প্রতিস্থাপন করুন।
এই কোডটি একটি এইচটিটিপিএস ফাংশন তৈরি করে (
bigben
নামে) যা একটি ঘড়ির মতো দিনের প্রতিটি ঘন্টার জন্য একটিBONG
সহ HTTPS অনুরোধের উত্তর দেয়৷const functions = require('firebase-functions'); exports.bigben = functions.https.onRequest((req, res) => { const hours = (new Date().getHours() % 12) + 1 // London is UTC + 1hr; res.status(200).send(`<!doctype html> <head> <title>Time</title> </head> <body> ${'BONG '.repeat(hours)} </body> </html>`); });
Firebase স্থানীয় এমুলেটর স্যুট ব্যবহার করে স্থানীয়ভাবে আপনার ফাংশন পরীক্ষা করুন।
আপনার স্থানীয় প্রকল্প ডিরেক্টরির রুট থেকে, নিম্নলিখিত কমান্ডটি চালান:
firebase emulators:start
CLI দ্বারা প্রত্যাবর্তিত স্থানীয় URL এর মাধ্যমে ফাংশনটি অ্যাক্সেস করুন, উদাহরণস্বরূপ:
।http://localhost:5001/ PROJECT_ID /us-central1/bigben
HTTPS অনুরোধ সম্পর্কে আরও জানতে ক্লাউড ফাংশন ডকুমেন্টেশন দেখুন।
পরবর্তী ধাপে আপনাকে একটি Firebase হোস্টিং ইউআরএল থেকে এই HTTPS ফাংশনটি কীভাবে অ্যাক্সেস করা যায় তার মাধ্যমে নিয়ে যায় যাতে এটি আপনার Firebase-হোস্ট করা সাইটের জন্য গতিশীল সামগ্রী তৈরি করতে পারে।
ধাপ 3: আপনার ফাংশনে সরাসরি HTTPS অনুরোধ
পুনর্লিখনের নিয়মের সাহায্যে, আপনি একটি একক গন্তব্যে নির্দিষ্ট প্যাটার্নের সাথে মেলে এমন অনুরোধগুলিকে সরাসরি করতে পারেন। নিম্নলিখিত ধাপগুলি আপনাকে দেখায় কিভাবে bigben
ফাংশন চালানোর জন্য আপনার হোস্টিং সাইটে ../bigben
পাথ থেকে সমস্ত অনুরোধগুলি পরিচালনা করতে হয়।
আপনার
firebase.json
ফাইল খুলুন।hosting
বিভাগের অধীনে নিম্নলিখিতrewrite
কনফিগারেশন যোগ করুন:"hosting": { // ... // Add the "rewrites" attribute within "hosting" "rewrites": [ { "source": "/bigben", "function": "bigben", "region": "us-central1" // optional (see note below) "pinTag": true // optional (see note below) } ] }
Firebase এমুলেটরগুলির সাথে আবার পরীক্ষা করে আপনার পুনঃনির্দেশ আশানুরূপ কাজ করে তা নিশ্চিত করুন৷
আপনার স্থানীয় প্রকল্প ডিরেক্টরির রুট থেকে, নিম্নলিখিত কমান্ডটি চালান:
firebase emulators:start
CLI (সাধারণত
localhost:5000
) দ্বারা প্রত্যাবর্তিত আপনার সাইটের জন্য স্থানীয়ভাবে হোস্ট করা URL দেখুন, কিন্তুbigben
সহ URL যুক্ত করুন, যেমন:http://localhost:5000/bigben
আপনার ফাংশন এবং আপনার সাইটের জন্য এর কার্যকারিতা পুনরাবৃত্তি করুন। এই পুনরাবৃত্তি পরীক্ষা করতে Firebase এমুলেটর ব্যবহার করুন।
যদি
hosting.rewrites
কনফিগারেশনের একটিfunction
ব্লক থেকেregion
বাদ দেওয়া হয়, তাহলে Firebase CLI স্বয়ংক্রিয়ভাবে ফাংশনের সোর্স কোড থেকে অঞ্চলটিকে সনাক্ত করার চেষ্টা করে যা, অনির্দিষ্ট থাকলে,us-central1
এ ডিফল্ট হয়। ফাংশনের সোর্স কোড অনুপলব্ধ হলে, CLI নিয়োজিত ফাংশন থেকে অঞ্চল সনাক্ত করার চেষ্টা করে। ফাংশনটি একাধিক অঞ্চলে থাকলে, CLI-এর জন্যhosting.rewrites
কনফিগারেশনেregion
উল্লেখ করতে হবে।
pinTag
বৈশিষ্ট্যটি শুধুমাত্র Firebase (2nd gen) এর জন্য ক্লাউড ফাংশনে উপলব্ধ। এই বৈশিষ্ট্যটির সাহায্যে, আপনি নিশ্চিত করতে পারেন যে আপনার সাইটের গতিশীল সামগ্রী তৈরি করার জন্য প্রতিটি ফাংশন আপনার স্ট্যাটিক হোস্টিং সংস্থান এবং হোস্টিং কনফিগারেশনের সাথে সিঙ্কে রাখা হয়েছে। এছাড়াও, এই বৈশিষ্ট্যটি আপনাকে হোস্টিং প্রিভিউ চ্যানেলগুলিতে ফাংশনে আপনার পুনর্লিখনের পূর্বরূপ দেখতে দেয়।যদি আপনি
"pinTag": true
hosting.rewrites
কনফিগারেশনের একটিfunction
ব্লকে সত্য, তাহলে "পিন করা" ফাংশনটি আপনার স্ট্যাটিক হোস্টিং সংস্থান এবং কনফিগারেশনের সাথে স্থাপন করা হবে, এমনকি যখনচালানো হয়। আপনি যদি আপনার সাইটের একটি সংস্করণ রোল ব্যাক করেন, "পিন করা" ফাংশনটিও রোল ব্যাক করা হয়৷
firebase deploy --only hosting এই বৈশিষ্ট্যটি ক্লাউড রান ট্যাগের উপর নির্ভর করে, যার সীমা প্রতি পরিষেবা প্রতি 1000 ট্যাগ এবং প্রতি অঞ্চলে 2000 ট্যাগ রয়েছে৷ এর মানে হল শত শত স্থাপনের পরে, একটি সাইটের প্রাচীনতম সংস্করণগুলি কাজ করা বন্ধ করে দিতে পারে।
পুনর্লিখনের নিয়ম সম্পর্কে আরও বিস্তারিত জানার জন্য হোস্টিং কনফিগারেশন পৃষ্ঠায় যান। আপনি বিভিন্ন হোস্টিং কনফিগারেশনের প্রতিক্রিয়াগুলির অগ্রাধিকার ক্রম সম্পর্কেও শিখতে পারেন।
মনে রাখবেন যে গতিশীল সামগ্রী পরিবেশন করার কর্মক্ষমতা উন্নত করতে, আপনি ঐচ্ছিকভাবে আপনার ক্যাশে সেটিংস টিউন করতে পারেন৷
ধাপ 4: আপনার ফাংশন স্থাপন করুন
একবার আপনার ফাংশনটি এমুলেটরে পছন্দসইভাবে কাজ করে, আপনি বাস্তব প্রকল্প সংস্থানগুলির সাথে এটি স্থাপন, পরীক্ষা এবং চালানোর জন্য এগিয়ে যেতে পারেন। উত্পাদনে চলমান ফাংশনগুলির জন্য স্কেলিং আচরণ নিয়ন্ত্রণ করতে রানটাইম বিকল্পগুলি সেট করার বিবেচনা করার এটি একটি ভাল সময়।
আপনার স্থানীয় প্রকল্প ডিরেক্টরির রুট থেকে নিম্নলিখিত কমান্ডটি চালিয়ে আপনার সাইটে আপনার হোস্টিং সামগ্রী এবং কনফিগারেশনের পাশাপাশি আপনার ফাংশন স্থাপন করুন:
firebase deploy --only functions,hosting
নিম্নলিখিত URLগুলিতে আপনার লাইভ সাইট এবং আপনার ফাংশন অ্যাক্সেস করুন:
আপনার ফায়ারবেস সাবডোমেন:
PROJECT_ID .web.app/bigben
এবংPROJECT_ID .firebaseapp.com/bigben
যেকোনো সংযুক্ত কাস্টম ডোমেন :
CUSTOM_DOMAIN /bigben
একটি ওয়েব ফ্রেমওয়ার্ক ব্যবহার করুন
আপনি আপনার অ্যাপের গতিশীল বিষয়বস্তু পরিবেশন করতে এবং জটিল ওয়েব অ্যাপ আরও সহজে লিখতে ক্লাউড ফাংশনে Express.js এর মতো ওয়েব ফ্রেমওয়ার্ক ব্যবহার করতে পারেন।
নিম্নলিখিত বিভাগটি Firebase হোস্টিং এবং ক্লাউড ফাংশনগুলির সাথে Express.js ব্যবহার করার জন্য একটি ওয়াক-থ্রু উদাহরণ প্রদান করে৷
আপনার
functions
ডিরেক্টরি থেকে নিম্নলিখিত কমান্ডটি চালিয়ে আপনার স্থানীয় প্রকল্পে Express.js ইনস্টল করুন:npm install express --save
আপনার
/functions/index.js
ফাইলটি খুলুন, তারপর আমদানি করুন এবং Express.js শুরু করুন:const functions = require('firebase-functions'); const express = require('express'); const app = express();
নিম্নলিখিত দুটি শেষ পয়েন্ট যোগ করুন:
আমাদের ওয়েবসাইটের সূচী পরিবেশন করার জন্য প্রথম এন্ডপয়েন্ট যোগ করুন
/
.app.get('/', (req, res) => { const date = new Date(); const hours = (date.getHours() % 12) + 1; // London is UTC + 1hr; res.send(` <!doctype html> <head> <title>Time</title> <link rel="stylesheet" href="/style.css"> <script src="/script.js"></script> </head> <body> <p>In London, the clock strikes: <span id="bongs">${'BONG '.repeat(hours)}</span></p> <button onClick="refresh(this)">Refresh</button> </body> </html>`); });
এবং
/api
এর অধীনে JSON ফর্ম্যাটে, API হিসাবেBONG
গণনা ফেরত দেওয়ার জন্য আরেকটি শেষ পয়েন্ট:app.get('/api', (req, res) => { const date = new Date(); const hours = (date.getHours() % 12) + 1; // London is UTC + 1hr; res.json({bongs: 'BONG '.repeat(hours)}); });
একটি HTTPS ফাংশন হিসাবে Express.js অ্যাপ রপ্তানি করুন:
exports.app = functions.https.onRequest(app);
আপনার
firebase.json
ফাইলে, সমস্ত অনুরোধapp
ফাংশনে নির্দেশ করুন। এই পুনঃলিখনটি Express.js-কে আমাদের কনফিগার করা বিভিন্ন সাবপাথ পরিবেশন করতে দেয় (এই উদাহরণে,/
এবং/api
)।{ "hosting": { // ... // Add the "rewrites" attribute within "hosting" "rewrites": [ { "source": "**", "function": "app" } ] } }
মিডলওয়্যার যোগ করুন
আমাদের উদাহরণ অব্যাহত রেখে, এখন আপনি Express.js ব্যবহার করছেন, আপনি সাধারণ উপায়ে Express.js মিডলওয়্যার যোগ করতে পারেন। উদাহরণস্বরূপ, আপনি আমাদের শেষ পয়েন্টগুলিতে CORS অনুরোধগুলি সক্ষম করতে পারেন৷
নিম্নলিখিত কমান্ডটি চালিয়ে
cors
মিডলওয়্যার ইনস্টল করুন:npm install --save cors
আপনার
/functions/index.js
ফাইলটি খুলুন, তারপর আপনার Express.js অ্যাপেcors
যোগ করুন, যেমন:const cors = require('cors')({origin: true}); app.use(cors);
এক্সপ্রেস অ্যাপস এবং মিডলওয়্যার মডিউলগুলির সাথে ফায়ারবেস ব্যবহার সম্পর্কে আরও জানতে ক্লাউড ফাংশন ডকুমেন্টেশনে যান৷
পরবর্তী পদক্ষেপ
একটি বিশ্বব্যাপী CDN-এ আপনার গতিশীল সামগ্রীর জন্য ক্যাশিং সেট আপ করুন ৷
Firebase অ্যাডমিন SDK ব্যবহার করে অন্যান্য Firebase পরিষেবার সাথে যোগাযোগ করুন।
ক্লাউড ফাংশনগুলির জন্য মূল্য এবং কোটা এবং সীমা পর্যালোচনা করুন৷