Wednesday, May 21, 2014

ওয়ার্ডপ্রেস সাইটের সকল কনটেন্ট অটোমেটিকলি আপলোড করুন আমাজন S3 তে

আমি সাধারনত সে বিষয়গুলো ব্লগে লিখে রাখি যা আমার আগামীতে মনে নাও থাকতে পারে। অথবা এমন কোন বিষয়ের উপর কাজ করলাম যেটার কোন নির্দিষ্ট ফিচার আনতে অনেক লজিক এপ্লাই করতে হয়েছে এমন। কয়েকদিন আগে আমাজন s3 এর উপর কাজ করেছিলাম। ক্লায়েন্টের সাইটে অনেক ইমেইজ। তাই সে চায় তার ইমেইজগুলো লোড হোক আমাজন সার্ভার থেকে এবং পূর্বে যে সকল ইমেইজ তার সার্ভারে আছে সেগুলোও আমাজনে আপ করতে হবে এবং সেখান থেকেই লোড করতে হবে।

এই রিকোয়ারমেন্ট পূর্ণ করার জন্য W3 Total Cache প্লাগিনই ব্যবহার করলেই হবে। এটা ব্যবহার করার পর কোন ইমেইজ আপলোড করলে প্রথমে লোকাল সার্ভারে আপলোড হয় তারপর সেটা s3 তে আপলোড হয়। ডাইরেক্ট S3 তে আপলোড হয় না। কিন্তু ক্লায়েন্ট চায় না তার লোকাল সার্ভারে ইমেইজ আপ হোক। সে চায় শুধু S3 তেই ইমেইজ থাকবে। এই রিকোয়ারমেন্ট পূর্ণের জন্য অনেক কাঠ-খড় পুড়াতে হয়েছিল। আর এইজন্যই এই টপিক ব্লগে লেখা। শেষে লোকাল সার্ভারে যাতে ফাইল না থাকে সে জন্য wp read-only প্লাগিন ব্যবহার করেছিলাম। এর কাজ সে S3 সার্ভারে ইমেইজ আপের পর লোকাল সার্ভার থেকে ইমেইজ অটো ডিলিট করে দেয়। এখন কথা হল W3 Total cache এবং wp read-only দুইটা প্লাগিনের কম কাজ হল ইমেইজ আপলোড করে S3 তে। wp read-only প্লাগিন এক্সট্রা সুবিধা এটা কাজ শেষে লোকাল সার্ভারে ইমেইজ ফাইলও ডিলিট করে। তাহলে wp read-only ইউজ করলেই তো ক্লায়েন্টের রিকোয়ারমেন্টের সাথে মিলে যায়। w3 total cache এর কি দরকার? সে উত্তর দিচ্ছি পরে...অপেক্ষায় থাকুন। তার আগে দেখে নিন w3 total cache এ আমাজন s3 কিভাবে কনফিগার করবেন।

w3 total cache ইন্সটল করুন। Performance- general setting এ গিয়ে একটু নিচে স্ক্রল করুন।


CDN এ enable চেক বক্স এ টিক চিহ্ন দিন। amazon s3 সিলেক্ট করে save all setting এ ক্লিক দিন।


একটু পর আমাদের আমাজন s3 access key id ও secret key দরকার লাগবে। তার জন্য আমাজন s3 তে লগিন করুন। Create bucket এ ক্লিক করে নতুন একটি বাকেট তৈরি করুন। আমি wordpressmashpy নামে একটি বাকেট তৈরি করলাম। তারপর wordpressmashpy এটাতে ক্লিক করে আপনার নামে ক্লিক করুন এবং security crediantials এ ক্লিক করুন।


continue to security crediantials এ ক্লিক করে  Access Keys (Access Key ID and Secret Access Key) তে ক্লিক করুন। এখানে যদি কোন access key ক্রিয়েট করা না থাকে তাহলে ক্রিয়েট করুন। আপনাকে access key id এবং security id দিয়ে দিবে। এটা সংরক্ষন করুন। একটু পরেই কাজে লাগবে।

আপনি wordpress- Performance - CDN এ গিয়ে একটু ক্রল করে নিচে cofiguration সেকশনে access key id ও secret key ইনপুট করুন। আর বাকেটের নাম wordpressmashpy দিন। Replace site's hostname with: সেকশনে viralcamel.s3.amazonaws.com লিখুন।

test s3 upload এ ক্লিক করে চেক করুন আপনার কনফিগার করা ঠিক আছে কিনা। যদি থাকে তাহলে সেভ করুন।

wordpress- Performance - CDN এই একই অপশনে গেলে এরকম দেখতে পাবেন।


upload attachments এ ক্লিক করে start এ ক্লিক করুন। আমাজন s3 তে আপনার সকল ফাইল আপলোড হয়ে যাবে। এভাবে করে করে host attachment, wp-includes, theme, custom সকল কিছু আমাজন সার্ভারে আপ করে দিন। আরেকটু নিচে স্ক্রল করলে Export changed files automatically দেখতে পাবেন। টিক চিহ্নে ক্লিক করে সেভ করে বের হয়ে আসুন।

এইটুকু কাজ করলেই আমাজন কনফিগার করা হয়ে গেছে। media- library তে গিয়ে নতুন কোন ইমেইজ আপলোড করে টেস্ট করে দেখতে পারেন। এটা একই সাথে আমাজন সার্ভারেও আপ হয় আবার লোকাল সার্ভারেও আপ হয়। আমরা যখন ইমেইজকে ব্যাক ইন্ড থেকে দেখি তখন এটি লোকাল সার্ভার থেকে লোড করে আবার ফ্রন্ট ইন্ড থেকে দেখলে এটা s3 থেকে লোড করে।

অন্য বেশির ভাগ প্লাগিনই শুধু মাত্র ইমেইজ এবং অন্য কন্টেন্ট s3 তে আপ করে। কিত্নু css, js ফাইলগুলো আপ করে না। এগুলো লোকাল সার্ভার থেকেই লোড হয়। কিন্তু Total w3 cache এর বড় সুবিধা হল এটা ইমেইজসহ সকল কনটেন্টই s3 তে জমা করে রাখে এবং সেখান থেকেই লোড করে। css, js ফাইলগুলোও s3 থেকে লোড করে। ফলে অনেক দ্রুত আমাদের সাইট লোড হয়।

আগেই বলেছিলাম Total cache এ ইমেইজ আপ করলে প্রথমে তা লোকাল সার্ভারে জমা হয় পরে তা রিমোটে যায়। ক্লায়েন্ট চাচ্ছে যে ফাইলগুলো শুধু রিমোট s3 তেই থাকুক। লোকাল শেয়ার্ড সার্ভারে থাকার দরকার নেই। কারন তার ডিস্ক স্পেস কম। এই ক্ষেত্রে আমি wp read-only ইউজ করেছি।

আপনারও যদি এরকম কাজ দরকার হয় তাহলে wp read-only ইন্সটল করে নিন। Setting- Wpro setting এ যান। Prepend all paths with folder এ wp-content/uploads লিখে দিন। aws key , secret key, bucket name ঠিকমত আপডেট করুন। Bucket AWS Region ও আমাজন সার্ভার থেকে দেখে ঠিকমত আপডেট করুন। সেভ করুন। আপনার কনফিগার হয়ে গেল। এখন যে কোন ইমেইজ বা এটাচমেন্ট আপলোড করলে সেটা শুধু s3 তেই থাকবে। লোকাল সার্ভারে থাকবে না...যেহেতু আমাদের জায়গা কম।

আমি প্রথমেই একটা প্রশ্ন রেখেছিলাম => "wp read-only ইউজ করলেই তো ক্লায়েন্টের রিকোয়ারমেন্টের সাথে মিলে যায়। w3 total cache এর কি দরকার?"
কারন wp read-only তে একটা ফিচার কম আছে। সেটা হল আপনি কোন একটা ইমেইজ media library এর মাধ্যমে আপ করলেন। সেটা s3 তে আপ হল। আপনি media library থেকে ডিলিট করলেন। সেটা উচিত s3 থেকেও ডিলিট হয়ে যাওয়ার কথা। তাই না? কিন্তু wp read-only সেই কাজটা করে না। সে খালি ইমেইজ আপই করে। এভাবে হলে তো অপ্রয়োজনীয় ফাইলে s3 পূর্ণ হয়ে যাবে। w3 total cache প্লাগিনটা ইন্সটল থাকলে মিডিয়া লাইব্রেরী থেকে ইমেইজ ডিলিট করলে s3 থেকেও অটো ডিলিট হয়ে যায়। সেই জন্যই w3 total cache ইউজ করেছি। আরেকটা সুবিধার কথা তো একটু আগেই বললাম w3 total cache ওয়ার্ডপ্রেসের css, js ফাইল পর্যন্ত আমাজন থেকে লোড করে...এটা একটা ভাল সুবিধা।

আশা করি টিউটরিয়ালটি বুঝতে পেরেছেন। যদি না পারেন টিউটরিয়ালটি আবার পড়ুন। এরপর বুঝতে সমস্যা হলে কমেন্ট করুন।


No comments:

Post a Comment

এখানে আপনি আপনার মূল্যবান মতামতটি প্রকাশ করতে পারেন।