ক্লাউডফ্লেয়ার কর্মীদের সাথে স্টেজিং পরিবেশ সংক্রান্ত সমস্যা সমাধান করা
উন্নয়ন প্রক্রিয়ার একটি অপরিহার্য পর্যায় হল একটি স্টেজিং পরিবেশ স্থাপন করা যাতে আপডেটগুলি লাইভ হওয়ার আগে সঠিকভাবে পরীক্ষা করা যায়। এই দৃষ্টান্তে, ক্লাউডফ্লেয়ার কর্মীরা প্রাথমিক ওয়েবসাইটটিকে উন্নয়নের অধীনে ভালভাবে পরিচালনা করছিল।
বিদ্যমান গিট রিপোজিটরি ক্লোন করার পরে এবং এটিকে ক্লাউডফ্লেয়ার ওয়ার্কার্স এবং পৃষ্ঠাগুলির মাধ্যমে স্টেজিং পরিবেশের সাথে সংযুক্ত করার পরে, সবকিছু ঠিকঠাক কাজ করছে বলে মনে হচ্ছে। লগগুলি নির্দেশ করে যে স্থাপনা সফল হয়েছে, যা সাধারণত একটি লাইভ ইন্সট্যান্স তৈরির সংকেত দেয়।
কিন্তু যখন বিকাশকারী প্রদত্ত ক্লাউডফ্লেয়ার ঠিকানাটি অ্যাক্সেস করার চেষ্টা করেছিল, তখন একটি 404 ত্রুটি বার্তা উপস্থিত হয়েছিল, যা তাকে কী ভুল হয়েছে সে সম্পর্কে অনিশ্চিত রেখেছিল। এই প্রকৃতির সমস্যাগুলি মোকাবেলা করা বিরক্তিকর হতে পারে, বিশেষ করে যখন একটি বিশ্বাস থাকে যে সার্ভারটি স্থাপনের সাথে সাথেই লাইভ হওয়া উচিত।
নতুন রিপোজিটরি সম্পূর্ণরূপে সক্রিয় করার জন্য একটি দ্বিতীয় সার্ভারের প্রয়োজন আছে কিনা বা অন্য কিছু করা দরকার কিনা তা স্পষ্ট নয়। আমরা এই 404 সমস্যার কারণ এবং এই নিবন্ধে স্টেজিং পরিবেশের জন্য ক্লাউডফ্লেয়ার ওয়ার্কার্স সার্ভার সঠিকভাবে কীভাবে সেট আপ করতে হয় তা দেখব।
আদেশ | ব্যবহারের উদাহরণ |
---|---|
window.onload | স্টাইলশীট, ছবি এবং বাহ্যিক সংস্থান সহ পৃষ্ঠার সমস্ত বিষয়বস্তু সম্পূর্ণরূপে লোড হয়ে গেলে এই জাভাস্ক্রিপ্ট ইভেন্টটি ট্রিগার হয়৷ এটি গ্যারান্টি দেয় যে পৃষ্ঠাটি প্রস্তুত হলেই পুনঃনির্দেশ চেক শুরু হবে। |
fetch() | বর্তমান ব্রাউজারগুলির জন্য একটি API যা নেটওয়ার্কগুলির অনুরোধ করতে ব্যবহৃত হয়৷ এই উদাহরণে, এটি একটি URL বা সংস্থান উপলব্ধ কিনা তা যাচাই করতে Cloudflare ব্যবহার করে। অনুরোধটি ব্যর্থ হলে বা একটি 404 ত্রুটি ফেরত দিলে, অন্যান্য পদক্ষেপগুলি শুরু করা যেতে পারে। |
response.status | HTTP স্ট্যাটাস কোড যা ফিরিয়ে আনার অনুরোধটি এই বৈশিষ্ট্য ব্যবহার করে পরীক্ষা করা যেতে পারে। আমাদের উদাহরণে, এটি নির্ধারণ করে যে উত্তরটি 404 (সম্পদ পাওয়া যায়নি) এবং যদি তাই হয়, একটি ব্যক্তিগতকৃত পুনঃনির্দেশ শুরু করে। |
addEventListener('fetch') | প্রতিবার যখন কর্মী নেটওয়ার্ক অনুরোধে সাড়া দেয়, এই পদ্ধতিটি ইভেন্টগুলি নিয়ে আসে। আমরা ক্লাউডফ্লেয়ার কর্মীদের মধ্যে সমস্যাগুলি পরিচালনা করতে বা এই অনুরোধগুলিকে বাধা দিতে এবং ব্যক্তিগতকৃত উত্তরগুলি ফেরত দিতে এটি ব্যবহার করতে পারি। |
new Response() | শিরোনাম, একটি কাস্টম বডি, এবং একটি কাস্টম স্থিতি কোড সহ একটি নতুন HTTP প্রতিক্রিয়া বস্তু তৈরি করে৷ যখন একটি সংস্থান সনাক্ত করা যায় না, তখন এটি গতিশীল উত্তর প্রদান করতে ব্যবহৃত হয়, যেমন একটি ব্যক্তিগতকৃত 404 পৃষ্ঠা সরবরাহ করা। |
assert.equal() | Node.js assert মডিউল থেকে এই পদ্ধতিটি সমতার জন্য দুটি মান তুলনা করে। ক্লাউডফ্লেয়ার পৃষ্ঠাগুলি থেকে উদ্দিষ্ট স্ট্যাটাস কোড (200, 404) আসল উত্তরের সাথে মেলে তা নিশ্চিত করতে, এটি ঘন ঘন ইউনিট পরীক্ষায় ব্যবহৃত হয়। |
describe() | Node.js assert মডিউল থেকে এই পদ্ধতিটি সমতার জন্য দুটি মান তুলনা করে। ক্লাউডফ্লেয়ার পৃষ্ঠাগুলির প্রকৃত উত্তরের সাথে উদ্দেশ্যমূলক স্ট্যাটাস কোড (200, 404) মেলে তা নিশ্চিত করতে, এটি ঘন ঘন ইউনিট পরীক্ষায় ব্যবহৃত হয়। |
event.respondWith() | ডিফল্ট আনয়ন পরিচালনার জন্য একটি কাস্টম উত্তর প্রতিস্থাপন করতে ক্লাউডফ্লেয়ার ওয়ার্কারগুলিতে ব্যবহৃত হয়। এটি আপনাকে অনুরোধগুলি পরিচালনা করার উপায় পরিবর্তন করতে দেয়, যা 404 সমস্যাগুলি ধরতে এবং ব্যক্তিগতকৃত তথ্য সরবরাহের জন্য সহায়ক। |
async function | একটি অ্যাসিঙ্ক্রোনাস ফাংশন সংজ্ঞায়িত করে, এই কীওয়ার্ডটি অপেক্ষার সাথে প্রতিশ্রুতি পরিচালনার অনুমতি দেয়। এই উদাহরণে, এটি নিশ্চিত করে যে স্ক্রিপ্টটি নেটওয়ার্ক অনুরোধের সমাধান না হওয়া পর্যন্ত কোনও অতিরিক্ত যুক্তি সম্পাদন করা বন্ধ করে দেয়। |
ক্লাউডফ্লেয়ার ওয়ার্কার এবং স্ক্রিপ্টগুলি কীভাবে 404 ত্রুটিগুলি পরিচালনা করে
প্রদত্ত উদাহরণের প্রথম স্ক্রিপ্টটি কীভাবে ব্যবহার করতে হয় তা দেখায় জাভাস্ক্রিপ্ট ফ্রন্টএন্ডে একটি 404 ত্রুটি পরিচালনা করতে। স্ক্রিপ্ট ব্যবহার করে window.onload পৃষ্ঠাটি সম্পূর্ণ লোড হওয়ার জন্য অপেক্ষা করার জন্য ইভেন্ট। পাতা একটি তোলে আনা একবার লোড হয়ে গেলে রিসোর্সটি উপলব্ধ কিনা তা দেখার জন্য অনুরোধ করুন। যদি সংস্থানটি 404 ত্রুটি প্রদান করে তবে ব্যবহারকারীকে একটি কাস্টমাইজড ত্রুটি পৃষ্ঠায় পাঠানো হয়। ব্যাকএন্ড সম্পৃক্ততার প্রয়োজন ছাড়াই, এই কৌশলটি ব্যবহারকারীর ব্রাউজারে ব্যর্থতাগুলি পরিচালনা করার জন্য এবং যেকোন অনুপস্থিত পৃষ্ঠা বা সংস্থানগুলির জন্য একটি ফলব্যাক প্রদানের জন্য বিশেষভাবে কার্যকর।
দ্বিতীয় উদাহরণে, স্ক্রিপ্ট a ব্যবহার করে অনুরোধগুলি পরিচালনা করে ক্লাউডফ্লেয়ার কর্মী যেহেতু এটি ব্যাকএন্ডে চলে যায়। কর্মী ব্যবহার করে AddEventListener ইভেন্টগুলি শোনার পদ্ধতি এবং যখন সেগুলি তৈরি করা হয় তখন ইন্টারসেপ্টগুলি নিয়ে আসে। অনুরোধ করা পৃষ্ঠাটি বিদ্যমান না থাকার কারণে একটি 404 ত্রুটি ঘটলে, কর্মী গতিশীলভাবে একটি কাস্টমাইজড ত্রুটি পৃষ্ঠা সরবরাহ করবে। এই কৌশলটি সার্ভারের উত্তরগুলি পরিচালনা করার জন্য ভাল কাজ করে এবং ত্রুটিগুলি পরিচালনা করার জন্য আরও অভিযোজিত এবং নিরাপদ উপায় অফার করে, বিশেষ করে যখন বিভিন্ন প্রেক্ষাপট যেমন উত্পাদন এবং স্টেজিং বা গতিশীল সামগ্রীর সাথে কাজ করা হয়।
ফ্রন্টএন্ড এবং ব্যাকএন্ড স্ক্রিপ্টগুলি স্থাপন করা হয়েছে এবং সঠিকভাবে কাজ করছে তা নিশ্চিত করার জন্য, তৃতীয় উদাহরণে ইউনিট টেস্টিং চালু করা হয়েছে। ক্লাউডফ্লেয়ার পেজ ডিপ্লয়মেন্ট ব্যবহার করে সঠিক HTTP স্ট্যাটাস কোড রিটার্ন করে কিনা তা দেখতে এটি স্বয়ংক্রিয় পরীক্ষা করে Node.js এবং একটি পরীক্ষার কাঠামো যেমন মোচা। মূল পৃষ্ঠার জন্য পরীক্ষা (যা একটি 200 স্থিতি ধরে নেয়) এবং একটি অস্তিত্বহীন পৃষ্ঠার জন্য পরীক্ষা (যা একটি 404 স্থিতি আশা করে) উভয়ই পরীক্ষার স্যুটে অন্তর্ভুক্ত। এই পরীক্ষাগুলি নিশ্চিত করে যে সবকিছু পরিকল্পনা অনুযায়ী মোতায়েন করা হয়েছে এবং যে কোনও ভাঙা পৃষ্ঠা বা লিঙ্কগুলি উপযুক্ত প্রতিক্রিয়া দেয়।
উপরন্তু, পরীক্ষার ব্যবহার জোর করা কমান্ড গ্যারান্টি দেয় যে প্রতিক্রিয়া স্ট্যাটাস কোডগুলির মধ্যে কোনো পার্থক্য অবিলম্বে সনাক্ত করা হবে। অবিচ্ছিন্ন একীকরণ এবং স্থাপনার (CI/CD) পাইপলাইনগুলিতে, যেখানে স্থাপনার আচরণ নিশ্চিত করা ডাউনটাইম বা ভাঙা সংযোগগুলি প্রতিরোধ করার জন্য অত্যন্ত গুরুত্বপূর্ণ, পরীক্ষাগুলি অপরিহার্য। সমস্ত বিষয় বিবেচনা করা হয়েছে, ফ্রন্টএন্ড পুনঃনির্দেশ, ব্যাকএন্ড ত্রুটি পরিচালনা, এবং ইউনিট টেস্টিং আপনার ক্লাউডফ্লেয়ার ওয়ার্কারদের স্থাপনার নিরবচ্ছিন্ন ক্রিয়াকলাপের গ্যারান্টি দেওয়ার জন্য একটি পুঙ্খানুপুঙ্খ পদ্ধতির প্রস্তাব দেয়—এমনকি অনুপস্থিত সংস্থান বা স্টেজিং সার্ভারের মতো কাস্টমাইজড অবস্থার মুখেও।
সমাধান 1: ফ্রন্টএন্ড জাভাস্ক্রিপ্ট পুনর্নির্দেশ ব্যবহার করে ক্লাউডফ্লেয়ার 404 ত্রুটি সমাধান করা
অনুরোধ করা সংস্থানটি পুনরুদ্ধার করা সম্ভব না হলে দর্শককে একটি ফলব্যাক পৃষ্ঠায় পাঠানোর মাধ্যমে, এই পদ্ধতিটি পুনঃনির্দেশ পরিচালনা করতে এবং একটি 404 ত্রুটি এড়াতে JavaScript ব্যবহার করে।
// Frontend JavaScript for handling redirection
// This script checks if a resource is available on the Cloudflare page
// If not, it redirects to a fallback page
window.onload = function () {
fetch(window.location.href)
.then(response => {
if (response.status === 404) {
window.location.href = '/404.html'; // Redirect to custom 404 page
}
})
.catch(error => {
console.error('Error fetching the page:', error);
window.location.href = '/error.html'; // Redirect to error page
});
};
সমাধান 2: ব্যাকএন্ড ক্লাউডফ্লেয়ার কর্মী 404 ত্রুটিগুলি পরিচালনা করতে
এই সমাধানে, 404টি ব্যর্থতা একটি কাস্টম ফলব্যাক পৃষ্ঠায় পাঠানো হয় এবং অনুরোধগুলি ক্লাউডফ্লেয়ার ওয়ার্কারদের দ্বারা পরিচালিত হয়। Cloudflare এর গতিশীল ব্যাকএন্ড হ্যান্ডলিংয়ের জন্য, এই স্ক্রিপ্টটি নিখুঁত।
// Cloudflare Worker script for managing 404 errors
// The script checks if the requested path exists, and if not, returns a custom 404 page
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request));
});
async function handleRequest(request) {
try {
const response = await fetch(request);
if (response.status === 404) {
return new Response('Custom 404 Page', { status: 404 });
}
return response;
} catch (error) {
return new Response('Error occurred: ' + error.message, { status: 500 });
}
}
সমাধান 3: ক্লাউডফ্লেয়ার পৃষ্ঠাগুলির জন্য স্থাপনার পরীক্ষা এবং ইউনিট পরীক্ষা
এই পদ্ধতিতে ফ্রন্টএন্ড এবং ব্যাকএন্ড স্ক্রিপ্ট উভয়ের অপারেশন যাচাই করার জন্য ইউনিট পরীক্ষা রয়েছে এবং এটি ক্লাউডফ্লেয়ার পেজ স্থাপন সক্রিয় কিনা তা যাচাই করে।
// Example unit test for deployment verification
// Using JavaScript to ensure that Cloudflare Pages return the correct response
const assert = require('assert');
const fetch = require('node-fetch');
describe('Cloudflare Deployment Test', function() {
it('should return 200 for the main page', async function() {
const response = await fetch('https://your-domain.pages.dev');
assert.equal(response.status, 200);
});
it('should return 404 for non-existent page', async function() {
const response = await fetch('https://your-domain.pages.dev/unknown');
assert.equal(response.status, 404);
});
});
ক্লাউডফ্লেয়ার কর্মীরা পরিবেশের মঞ্চায়ন করা বোঝা
উন্নয়নের উদ্দেশ্যে, কাজ করার সময় একটি স্টেজিং পরিবেশ ইনস্টল করা গুরুত্বপূর্ণ হতে পারে ক্লাউডফ্লেয়ার কর্মীরা. বিকাশকারীরা তাদের অ্যাপ্লিকেশনগুলিকে প্রোডাকশন সার্ভারে স্থাপন করার আগে একটি স্টেজিং পরিবেশে পরীক্ষা করতে পারে। নির্দেশিত 404 ত্রুটির মতো সমস্যাগুলি প্রতিরোধ করতে, এই পরিবেশটি প্রথম সেট আপ করার সময় সঠিকভাবে কনফিগার করা আবশ্যক। বিকাশকারীরা প্রায়শই বিশ্বাস করে যে একটি লাইভ সার্ভার চালু করতে যা লাগে তা হল একটি গিটহাব সংগ্রহস্থল ক্লোন করা এবং এটিকে ক্লাউডফ্লেয়ার পৃষ্ঠাগুলির সাথে সংযুক্ত করা। যদিও ক্লাউডফ্লেয়ার স্বয়ংক্রিয়ভাবে স্ট্যাটিক সাইটগুলি স্থাপন করে, যদি কর্মীর রাউটিং কনফিগারেশন সঠিকভাবে সেট আপ না করা হয় তবে সমস্যা হতে পারে।
একটি 404 ত্রুটি প্রায়শই বোঝায় যে অনুরোধটি সঠিকভাবে দ্বারা আটকানো হচ্ছে না৷ কর্মী. ক্লাউডফ্লেয়ার কর্মীদের জন্য কাস্টম রাউটিং নিয়মগুলি প্রয়োজনীয় যাতে অনুরোধগুলি সঠিক জায়গায় পাঠানো হয়। সাইটটি চালু হওয়ার পরেও, এই রুটগুলি সেট আপ না করা থাকলে কিছু পৃষ্ঠার জন্য অনুরোধ 404 ত্রুটি ফিরিয়ে দিতে পারে। ওয়ার্কার স্ক্রিপ্ট স্টেজিং ডোমেনের সাথে সংযুক্ত রয়েছে তা নিশ্চিত করাও গুরুত্বপূর্ণ। একটি সুসংগঠিত কর্মী ব্যবহার করে এবং রুটগুলি যাচাই করে এই ভুলগুলি উন্নয়নের সময় হ্রাস করা যেতে পারে।
কর্মী এখনও আপনার সাথে সংযুক্ত করা হয় স্টেজিং ডোমেন আরেকটি গুরুত্বপূর্ণ পদক্ষেপ। কর্মী মাঝে মাঝে স্থাপনার সময় স্বয়ংক্রিয়ভাবে নতুন পরিবেশের সাথে নিজেকে আবদ্ধ করতে ব্যর্থ হতে পারে, বিশেষ করে যখন বিভিন্ন পরিবেশ থাকে (যেমন উৎপাদন এবং মঞ্চায়ন)। কর্মীকে নির্দিষ্ট পরিবেশের সাথে ম্যানুয়ালি লিঙ্ক করতে এবং এটি যথাযথভাবে অনুরোধগুলি প্রক্রিয়া করে তা নিশ্চিত করতে, বিকাশকারীরা ক্লাউডফ্লেয়ারের ড্যাশবোর্ড ব্যবহার করতে পারে। স্টেজিং এবং উত্পাদন পরিবেশগুলি মসৃণ এবং ত্রুটি-মুক্তভাবে চালানোর জন্য, এই পদক্ষেপটি প্রয়োজনীয়।
ক্লাউডফ্লেয়ার কর্মী এবং 404 ত্রুটি সম্পর্কে সাধারণ প্রশ্ন
- ক্লাউডফ্লেয়ার কর্মী মোতায়েন করার পরে 404 ত্রুটির কারণ কী?
- রাউটিং নিয়মগুলি কনফিগার করা হচ্ছে না বা ভুলভাবে সংযুক্ত করা হচ্ছে না Worker ডোমেইনের কাছে এটির স্বাভাবিক কারণ।
- Pages.dev-এর কি কাজ করার জন্য সার্ভারের প্রয়োজন হয়?
- না, সার্ভারের প্রয়োজন নেই। যদিও স্ট্যাটিক সাইটের স্থাপনা স্বয়ংক্রিয়ভাবে ক্লাউডফ্লেয়ার দ্বারা পরিচালিত হয় pages.dev, নিশ্চিত করুন যে কর্মী সঠিকভাবে লিঙ্কযুক্ত।
- আমি কিভাবে একটি স্টেজিং ডোমেনের 404 ত্রুটি সমাধান করতে পারি?
- ওয়ার্কার স্ক্রিপ্টে প্রয়োজনীয় রুটগুলি কনফিগার করা আছে এবং এটি Worker ডোমেনের সাথে যুক্ত।
- একই সাথে উত্পাদন এবং স্টেজিংয়ের জন্য একটি গিটহাব সংগ্রহস্থল ব্যবহার করা কি সম্ভব?
- হ্যাঁ, কিন্তু দ্বন্দ্ব প্রতিরোধ করার জন্য, আপনাকে স্বতন্ত্র শাখা এবং সেটআপ তৈরি করতে হবে Workers প্রতিটি পরিবেশের জন্য স্বাধীনভাবে।
- শ্রমিকরা কি মঞ্চায়ন এবং উৎপাদনকে ভিন্নভাবে দেখেন?
- না, কিন্তু স্থাপনার সমস্যা প্রতিরোধ করার জন্য, প্রত্যেকটি নিশ্চিত করুন environment এর কর্মী সঠিকভাবে কনফিগার করেছে।
ক্লাউডফ্লেয়ার কর্মীদের কনফিগার করার জন্য মূল উপায়
ক্লাউডফ্লেয়ার ওয়ার্কারদের সঠিক অপারেশনের গ্যারান্টি দেওয়ার জন্য ডোমেনের সাথে যথাযথ সংযুক্তি এবং সতর্ক রাউটিং নিয়ম সেটিং প্রয়োজনীয়। 404 ত্রুটি প্রতিরোধ করতে, এই ক্রিয়াগুলি উত্পাদন এবং স্টেজিং সেটিংস উভয়ের জন্যই অপরিহার্য।
সফল স্টেজিংয়ের গ্যারান্টি দিতে, সর্বদা নিশ্চিত করুন যে কর্মী সঠিকভাবে উপযুক্ত পরিবেশের সাথে সংযুক্ত এবং আপনার স্থাপনার সেটিংস পরীক্ষা করুন। এই সমস্যাগুলি সমাধান করে, ডাউনটাইম হ্রাস করা হবে এবং একটি বিরামহীন রোলআউট নিশ্চিত করা হবে।
ক্লাউডফ্লেয়ার ওয়ার্কার্স কনফিগারেশনের জন্য সূত্র এবং রেফারেন্স
- সার্ভারবিহীন অ্যাপ্লিকেশন স্থাপনার জন্য ক্লাউডফ্লেয়ার ওয়ার্কারদের ব্যবহার এবং 404 ত্রুটির জন্য সাধারণ সমস্যা সমাধানের পদক্ষেপগুলি সম্পর্কে বিশদ বর্ণনা করে। থেকে সংগৃহীত ক্লাউডফ্লেয়ার ওয়ার্কার্স ডকুমেন্টেশন .
- স্টেজিং এনভায়রনমেন্টের অন্তর্দৃষ্টি প্রদান করে এবং ক্লাউডফ্লেয়ার পৃষ্ঠাগুলির মাধ্যমে কীভাবে স্থাপনা পরিচালনা করতে হয়। আরো বিস্তারিত পাওয়া যায় ক্লাউডফ্লেয়ার পেজ ওভারভিউ .
- ক্লাউডফ্লেয়ার ওয়ার্কারদের সাথে গিটহাব রিপোজিটরি সংযুক্ত করা এবং গতিশীল রাউটিং এর প্রভাব নিয়ে আলোচনা করে। থেকে রেফারেন্স নেওয়া হয়েছে GitHub - Cloudflare Repos .