WordPress

WordPress ইনস্টলেশন: বিগিনার থেকে অ্যাডভান্সড — পুরো পথটা একসাথে

হোস্টিংয়ের খরচ থেকে wp-config-এর কনস্ট্যান্ট পর্যন্ত — WordPress ইনস্টল নিয়ে যে প্রশ্নগুলো মানুষ সত্যিই করে, সেগুলোর সরাসরি উত্তর।

স্ট্যাক অ্যালিক্স টিমস্ট্যাক অ্যালিক্স টিম২৩ সেপ, ২০২৬১১ মিনিট পড়া
শেয়ার করুন

WordPress শেখার সময় সবচেয়ে বড় ধোঁকাটা হলো — টিউটোরিয়ালগুলো ইনস্টলেশনকে দেখায় পাঁচ মিনিটের একটা কাজ হিসেবে, আর বাস্তবে সেই পাঁচ মিনিটে নেওয়া সিদ্ধান্তগুলোই পরের দুই বছর ধরে ভোগায়। কোন হোস্টিং নিলাম, ডেটাবেসের ক্যারেক্টার সেট কী রাখলাম, ইনস্টলার ব্যাকগ্রাউন্ডে কোন প্লাগিনগুলো ঢুকিয়ে দিল — এসব প্রশ্ন প্রথম দিনে কেউ করে না। করে ছয় মাস পর, যখন সাইট হঠাৎ স্লো হয়ে যায় কিংবা ক্লায়েন্ট ফোন করে বলেন, ব্লগের বাংলা লেখাগুলো প্রশ্নবোধক চিহ্ন হয়ে গেছে। তাই এখানে ধাপে ধাপে স্ক্রিনশটের বদলে সাজিয়েছি প্রশ্নগুলোই — একদম শুরুর প্রশ্ন থেকে শুরু করে সেই প্রশ্নগুলো পর্যন্ত, যেগুলো আপনার মাথায় আসবে দশটা ক্লায়েন্ট সাইট সামলানোর পর।

WordPress ইনস্টল করতে সব মিলিয়ে খরচ কত?

সফটওয়্যার হিসেবে WordPress-এর দাম শূন্য টাকা — এটা GPL লাইসেন্সে মুক্তভাবে বিতরণ করা হয় এবং সারাজীবন ফ্রি থাকবে। খরচটা আসে অন্য দুই জায়গা থেকে: ডোমেইন আর হোস্টিং। বাংলাদেশে একটা .com ডোমেইন বছরে মোটামুটি ১,১০০ থেকে ১,৬০০ টাকা, আর দেশি প্রোভাইডারের শেয়ার্ড হোস্টিং (২–৫ জিবি SSD, সাধারণত LiteSpeed সার্ভার) বছরে ২,০০০ থেকে ৬,০০০ টাকার মধ্যে পাওয়া যায়। বেশিরভাগ দেশি হোস্ট bKash বা নগদে পেমেন্ট নেয়, তাই ডলার কার্ড না থাকলেও আটকাবেন না। বিদেশি হোস্ট — Hostinger, Cloudways, DigitalOcean — নিতে গেলে ডুয়াল-কারেন্সি কার্ড বা ফ্রিল্যান্সার কার্ড লাগবে, খরচ শুরু মাসে ৫–৬ ডলার থেকে। পোর্টফোলিও বা পাঁচ পেজের বিজনেস সাইটের জন্য দেশি শেয়ার্ড হোস্টিংই যথেষ্ট; কিন্তু WooCommerce দিয়ে দিনে ৫০-এর বেশি অর্ডার নেওয়ার পরিকল্পনা থাকলে শেয়ার্ড প্যাকেজ শুরুতেই হাঁপাবে — তখন অন্তত ২ জিবি র‍্যামের VPS ধরে রাখুন।

বাজেট বানানোর সময় রিনিউয়াল দামটা আলাদা করে দেখুন। প্রথম বছর ৭৯০ টাকায় ডোমেইন, দ্বিতীয় বছর ১,৪৫০ টাকা — এটা ইন্ডাস্ট্রির স্বাভাবিক প্র্যাকটিস, ঠকানো নয়। হিসাবটা দ্বিতীয় বছরের দাম ধরে করুন, প্রথম বছরের অফার ধরে নয়।

WordPress.com নাকি WordPress.org — কোনটায় ইনস্টল করব?

নামের মিলটা প্রতি সপ্তাহে কাউকে না কাউকে বিভ্রান্ত করে। WordPress.org হলো সেই ওপেন-সোর্স সফটওয়্যারটা, যেটা আপনি নিজের হোস্টিংয়ে ইনস্টল করবেন — ফাইল আপনার, ডেটাবেস আপনার, যেকোনো প্লাগিন-থিম বসাতে পারবেন, ক্লায়েন্টকে পুরো অ্যাক্সেস বুঝিয়ে দিতে পারবেন। আর WordPress.com হলো একটা হোস্টেড সার্ভিস, যেখানে ফ্রি প্ল্যানে প্লাগিন ইনস্টলই করা যায় না; নিজের থিম-প্লাগিন আপলোডের অধিকার পেতে হলে ওদের উঁচু প্ল্যানে যেতে হয়, যেটার দাম বছরে কয়েকশো ডলার। বাংলাদেশে ফ্রিল্যান্সিং, এজেন্সি বা এসএমই — যেকোনো বাস্তব কাজের উত্তর তাই প্রায় সবসময় WordPress.org। bKash পেমেন্ট গেটওয়ে প্লাগিন, কুরিয়ার ইন্টিগ্রেশন, কাস্টম চেকআউট — এগুলোর কোনোটাই সস্তা হোস্টেড প্ল্যানে বসবে না। এই লেখার বাকি অংশ ধরে নিচ্ছে, আপনি নিজের হোস্টিংয়ে ইনস্টল করছেন।

এক-ক্লিক ইনস্টলার চাপব, নাকি হাতে ইনস্টল করব?

cPanel-এর Softaculous বা Installatron দিয়ে আধা মিনিটে সাইট দাঁড়িয়ে যায়, এবং এতে লজ্জার কিছু নেই — বহু পেশাদারও তাই করেন। সমস্যা হলো ডিফল্ট সেটিংসগুলোয়। অনেক ইনস্টলার না জিজ্ঞেস করেই দু-তিনটা 'বোনাস' প্লাগিন বসিয়ে দেয়, অ্যাডমিন ইউজারনেম রাখে admin, কখনো সাইটটা /wordpress সাবফোল্ডারে ফেলে দেয় — যেটা পরে ঠিক করতে গিয়ে নতুন ডেভেলপার ঘাম ঝরান। তাই ইনস্টলার ব্যবহার করলেও প্রতিটা ঘর পড়ে তারপর সাবমিট করুন। আর অন্তত একবার পুরো কাজটা হাতে করে দেখুন; ভেতরের রহস্যটা কেটে গেলে cPanel, DirectAdmin কিংবা খালি একটা Ubuntu VPS — সব জায়গায় আপনি সমান আত্মবিশ্বাসে কাজ করতে পারবেন। হাতে করার ধাপগুলো এই কয়টাই:

  • wordpress.org থেকে জিপটা নামিয়ে public_html-এ আনজিপ করুন, এবং খেয়াল রাখুন ফাইলগুলো যেন সরাসরি public_html-এ থাকে, ভেতরে আরেকটা wordpress ফোল্ডারের মধ্যে নয়।
  • cPanel-এর MySQL Databases থেকে একটা ডেটাবেস আর একটা আলাদা ডেটাবেস-ইউজার বানিয়ে সেই ইউজারকে ওই ডেটাবেসে ALL PRIVILEGES দিন।
  • ক্যারেক্টার সেট রাখুন utf8mb4। পুরোনো কিছু সার্ভারে ডিফল্ট এখনো latin1 — আর সেখানেই বাংলা লেখা সেভ হয়ে ফিরে আসে প্রশ্নবোধক চিহ্ন হয়ে। ইমোজি রাখতে চাইলেও utf8mb4 ছাড়া উপায় নেই।
  • ব্রাউজারে ডোমেইন খুলে ডেটাবেসের নাম, ইউজার আর পাসওয়ার্ড দিন; Database Host-এর ঘরে localhost-ই থাকবে (কিছু হোস্টে আলাদা হোস্টনেম দেয়, তখন ওদের ডকুমেন্টেশন দেখুন)।
  • সাইট টাইটেল, একটা ইউজারনেম (admin নয়), শক্ত পাসওয়ার্ড আর সচল ইমেইল দিয়ে শেষ করুন। টেবিল প্রিফিক্স wp_ থেকে বদলাতে পারেন, তবে জেনে রাখুন এটা নিরাপত্তার কোনো স্তর নয় — শুধু কিছু আলসে বটকে বিভ্রান্ত করে।

টার্মিনাল অ্যাক্সেস থাকলে পুরো ব্যাপারটা WP-CLI-তে চারটা কমান্ডে নেমে আসে: wp core download, wp config create, wp db create, wp core install। প্রতিটা নতুন প্রজেক্টে একই ক্লিকের সিরিজ রিপিট না করে এই লাইনগুলো একটা ছোট shell স্ক্রিপ্টে রেখে দিন — পরেরবার শুধু ডোমেইন, ডেটাবেসের নাম আর পাসওয়ার্ডটা বদলাবেন। বিগিনার থেকে অ্যাডভান্সডে ওঠার পথে এটাই সবচেয়ে বড় একক লাফ, অথচ শিখতে লাগে এক বিকেল।

লোকালহোস্টে ইনস্টল করা কি সত্যিই দরকার?

দরকার, তবে কারণটা যা ভাবা হয় ঠিক তা নয়। লোকাল ইনস্টল শুধু শেখার জায়গা নয় — লোকাল ইনস্টল হলো সেই জায়গা, যেখানে আপনি ভাঙতে পারবেন। ক্লায়েন্টের লাইভ সাইটে প্লাগিন আপডেট দিতে গিয়ে চেকআউট পেজ ভেঙে ফেলার চেয়ে খারাপ অনুভূতি এই পেশায় খুব কম আছে। XAMPP, LocalWP কিংবা wp-env — যেটাই আপনার পছন্দ, একটা কপি লোকালে রাখুন এবং সব পরীক্ষা-নিরীক্ষা সেখানে সারুন।

XAMPP ব্যবহার করলে একটা বাস্তব পরামর্শ দিই: Apache-কে ৮০ পোর্টে বসাতে গিয়ে উইন্ডোজে প্রায়ই অন্য সার্ভিসের সঙ্গে সংঘাত বাধে; httpd.conf-এ পোর্টটা 8080 বা 8090 করে দিলে ঝামেলাটা একবারেই মেটে। আর PHP ভার্সন লাইভ সার্ভারের সঙ্গে মিলিয়ে নিন। লোকালে PHP ৮.৩ আর হোস্টিংয়ে ৭.৪ — এই অমিলের কারণে যে বাগটা আপনার ল্যাপটপে কোনোদিন দেখা দেবে না, সেটাই লাইভে গিয়ে ফাটবে, আর তখন খুঁজতে গিয়ে রাত পার হবে।

ইনস্টলের ঠিক পরেই কোন সেটিংসগুলো বদলাতেই হবে?

ইনস্টল শেষ হলে সবাই দৌড়ায় থিম খুঁজতে। তার আগে দশটা মিনিট খরচ করুন এই কাজগুলোয় — এখন করলে ফ্রি, ছয় মাস পরে করলে দামি। প্রথমেই Settings → Permalinks-এ গিয়ে Post name বেছে নিন; কনটেন্ট জমে যাওয়ার পর স্ট্রাকচার বদলালে প্রতিটা পুরোনো লিংক ভাঙবে আর আপনাকে রিডাইরেক্টের জঞ্জাল সামলাতে হবে। তারপর Settings → Reading-এ 'Discourage search engines' চেকবক্সটা দেখুন — ডেভেলপমেন্টের সময় টিক দেওয়া বুদ্ধিমানের কাজ, কিন্তু লঞ্চের দিন সেটা খুলে দিতে ভুললে সাইট মাসের পর মাস Google-এ আসবে না। বিশ্বাস করুন, এই একটা চেকবক্স প্রতি বছর অসংখ্য সাইটকে অদৃশ্য করে রাখে।

এরপর ডিফল্ট প্লাগিনগুলো ডিলিট করুন — ডিঅ্যাক্টিভেট নয়, ডিলিট; নিষ্ক্রিয় প্লাগিনও ভালনারেবিলিটির উৎস হতে পারে, কারণ ফাইলগুলো সার্ভারে বসেই থাকে। ইউজার প্রোফাইলে গিয়ে ডিসপ্লে নেম বদলান, যেন লগইন ইউজারনেমটা পোস্টের নিচে পাবলিকলি না দেখায়। SSL বসিয়ে Settings → General-এর দুটো URL-ই https:// করে দিন। আর একটা ব্যাকআপ ব্যবস্থা (UpdraftPlus বা হোস্টের নিজস্ব ব্যাকআপ) চালু করে প্রথম ব্যাকআপটা এখনই নিন। খালি সাইটের ব্যাকআপ নেওয়া বোকামি মনে হবে — কিন্তু রিস্টোর করার অভ্যাসটা এখানেই তৈরি হয়, সাইট হ্যাক হওয়ার রাতে নয়।

সাইট স্লো — এটা কি ইনস্টলেশনের দোষ?

অনেক সময় হ্যাঁ। WordPress-এর গতির বড় অংশটা ঠিক হয় সার্ভার লেভেলে, প্লাগিন লেভেলে নয়। একই কোড PHP ৮.৩-এ যতটা দ্রুত চলে, PHP ৭.৪-এ তার চেয়ে লক্ষণীয়ভাবে ধীরে চলে; আর OPcache চালু থাকলে প্রতিটা রিকোয়েস্টে PHP ফাইল নতুন করে কম্পাইল হয় না। cPanel-এর Select PHP Version থেকে ভার্সন বদলাতে লাগে আধা মিনিট, অথচ বাংলাদেশের বহু শেয়ার্ড হোস্টিং অ্যাকাউন্ট আজও পুরোনো ভার্সনে পড়ে আছে শুধু কেউ গিয়ে দেখেনি বলে। এর পরের ধাপ ক্যাশিং: সার্ভার LiteSpeed হলে LiteSpeed Cache প্লাগিনটা ফ্রি এবং যথেষ্ট ভালো। আর ট্রাফিক বাড়লে অবজেক্ট ক্যাশ (Redis) যোগ করুন — WooCommerce সাইটে কার্ট আর চেকআউট পেজ পেজ-ক্যাশে রাখা যায় না বলে ডেটাবেসের ওপর চাপটা সরাসরি পড়ে, আর ঠিক সেখানেই Redis বাঁচায়।

wp-config.php-তে অ্যাডভান্সড লেভেলে কী বসানো হয়?

এই ফাইলটাই WordPress-এর কন্ট্রোল রুম, অথচ বেশিরভাগ মানুষ ডেটাবেস পাসওয়ার্ড লেখার পর আর কোনোদিন খোলেন না। যে লাইনগুলো বাস্তবে কাজে দেয়:

  • define('WP_ENVIRONMENT_TYPE', 'staging'); — WordPress ও প্লাগিনগুলো জেনে যায় এটা প্রোডাকশন নয়, ফলে ভুল করে আসল কাস্টমারের কাছে ইমেইল বা পেমেন্ট ট্রিগার হয়ে যাওয়ার ঝুঁকি কমে।
  • define('DISALLOW_FILE_EDIT', true); — ড্যাশবোর্ডের ভেতরের কোড এডিটর বন্ধ হয়ে যায়। হ্যাকারের কাজ কঠিন হয়, আর ক্লায়েন্টের 'একটু CSS বদলাতে গিয়ে সাইট সাদা' সমস্যাটাও মুছে যায়।
  • define('DISABLE_WP_CRON', true); — এরপর cPanel-এর cron job থেকে প্রতি পাঁচ মিনিটে wp-cron.php ডাকুন। ভিজিটরের ওপর নির্ভরশীল ভুয়া cron-এর বদলে সত্যিকারের সময়ানুবর্তী শিডিউল পাবেন, যেটা স্কেজিউলড পোস্ট আর অর্ডার ইমেইলের জন্য জরুরি।
  • define('WP_POST_REVISIONS', 5); — রিভিশনের সংখ্যা বেঁধে দিন, না হলে বড় ব্লগে wp_posts টেবিল অকারণে ফুলে ওঠে আর ব্যাকআপের সাইজ বাড়তে থাকে।
  • define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); define('WP_DEBUG_DISPLAY', false); — এররগুলো wp-content/debug.log ফাইলে জমা হবে, ভিজিটরের স্ক্রিনে নয়। ডিবাগ করার সবচেয়ে সস্তা টুল এটাই।

লক্ষ্য করুন, এর একটাও সিকিউরিটি প্লাগিন নয়। ইনস্টলেশন লেভেলে নেওয়া ছোট সিদ্ধান্তগুলোই পরে প্লাগিনের বোঝা কমায়।

দশটা ক্লায়েন্ট সাইট হয়ে গেলে কী বদলায়?

একটা সাইট চালানো আর দশটা সাইট মেইনটেইন করা কার্যত দুটো আলাদা পেশা। দশে পৌঁছালে আপনার লাগবে তিনটা জিনিস: প্রতিটা সাইটের একটা স্টেজিং কপি, আপডেটের একটা রুটিন (মাসের নির্দিষ্ট একটা দিন, ব্যাকআপ নিয়ে, একসঙ্গে সব সাইটে নয়) এবং রিস্টোর করার প্রমাণিত প্রসেস। ব্যাকআপ আছে কি না সেটা আসল প্রশ্ন নয়; আসল প্রশ্ন হলো শেষ কবে একটা ব্যাকআপ সত্যিই রিস্টোর করে দেখেছেন। আর যাঁরা টিমে কাজ করেন, তাঁদের পরের ধাপ Composer আর Git — থিম, প্লাগিন আর কোরের ভার্সন কোডে লেখা থাকে, সার্ভারে হাতে কিছু আপলোড হয় না। পাঁচ পেজের বিজনেস সাইটে এটা ওভারকিল, কিন্তু যেখানে তিনজন ডেভেলপার একই কোডবেসে কাজ করছেন, সেখানে এটা ছাড়া বিশৃঙ্খলা অনিবার্য।

আরও কয়েকটা প্রশ্ন, সোজাসাপটা উত্তর

লোকাল সাইট লাইভে নিলে সব ভেঙে যায় কেন? কারণ ডেটাবেসের ভেতরে পুরোনো URL সিরিয়ালাইজড ডেটার মধ্যে বসে থাকে। সাধারণ SQL দিয়ে খুঁজে-বদলালে সিরিয়ালাইজড স্ট্রিংয়ের লেংথ কাউন্ট ভুল হয়ে যায়, আর তখন থিম বা Elementor-এর সেটিংস উধাও হয়ে যায়। এজন্য wp search-replace 'http://localhost:8090' 'https://example.com' --all-tables ব্যবহার করুন (আগে --dry-run দিয়ে দেখে নিন), অথবা Better Search Replace প্লাগিন — দুটোই সিরিয়ালাইজেশন বোঝে।

অ্যাডমিন পাসওয়ার্ড ভুলে গেছি, রিসেট ইমেইলও আসছে না — কী করব? phpMyAdmin খুলে wp_users টেবিলে ওই ইউজারের user_pass ফিল্ডে MD5 ফাংশন দিয়ে নতুন একটা পাসওয়ার্ড বসিয়ে দিন; পরের লগইনেই WordPress সেটাকে নিজের শক্ত হ্যাশে বদলে নেবে। WP-CLI থাকলে আরও সহজ: wp user update 1 --user_pass=নতুনপাসওয়ার্ড। শেয়ার্ড হোস্টে মেইল না যাওয়ার আসল কারণ সাধারণত SMTP সেট না থাকা — একটা SMTP প্লাগিন বসিয়ে দিলে সমস্যাটার মূল ঠিক হয়।

ইনস্টলের পর সাদা স্ক্রিন দেখাচ্ছে, কোনো এররও নেই। এটা প্রায় সবসময় PHP ফ্যাটাল এরর বা মেমরি লিমিটের ঘটনা। wp-config.php-তে WP_DEBUG_LOG চালু করে wp-content/debug.log ফাইলটা পড়ুন — আসল কারণটা ওখানে লেখাই থাকে। সঙ্গে define('WP_MEMORY_LIMIT', '256M'); বসিয়ে দেখুন; দেশি শেয়ার্ড হোস্টে ৬৪M লিমিট এখনো অস্বাভাবিক নয়।

SEO প্লাগিন কখন বসাব? কনটেন্টের আগে নয়। খালি সাইটে Rank Math বা Yoast বসিয়ে কনফিগারেশন উইজার্ড ছাড়া করার কিছু থাকে না, আর অকারণে ড্যাশবোর্ড ভারী হয়। প্রথম চার-পাঁচটা পেজ দাঁড়াক, তারপর প্লাগিন — তখন সেটআপটা অর্থবহ হবে।

শুরুতে ইনস্টলেশনকে মনে হয় একটা বাধা, কিছুদিন পর মনে হয় রুটিন, আর একসময় বোঝা যায় — এটাই সেই জায়গা যেখানে সাইটের পরের দুই বছরের ভাগ্য ঠিক হয়ে যায়। প্রশ্ন করা থামাবেন না; শুধু ছয় মাস পরে নয়, ইনস্টল বাটনে চাপ দেওয়ার আগেই করুন। হোস্টিং বাছাই, মাইগ্রেশন কিংবা রেডি টেমপ্লেট দিয়ে দ্রুত শুরু করা — কোথাও আটকে গেলে Stack Alix-এর টিমকে নক দিতে পারেন, আমরা এই সেটআপগুলো রোজই করি।

ট্যাগ:WordPress#wordpress#wordpress installation#wp-cli#wp-config#web hosting bangladesh#localhost#site migration
স্ট্যাক অ্যালিক্স টিম
লেখক সম্পর্কে
স্ট্যাক অ্যালিক্স টিম
Stack Alix কন্ট্রিবিউটর

ডিজিটাল প্রোডাক্ট, ডেভেলপমেন্ট ও অনলাইন ব্যবসা নিয়ে নিয়মিত লেখেন।

নতুন আর্টিকেল ইনবক্সে পেতে চান?

সপ্তাহের সেরা টিপস ও গাইড সরাসরি আপনার ইমেইলে।

WordPress ইনস্টলেশন: বিগিনার থেকে অ্যাডভান্সড গাইড | Stack Alix