ব্যবহারিক নির্দেশনা / Image ও সামঞ্জস্য

ইনস্টলের আগে Ubuntu ভার্সন ও আর্কিটেকচার দেখুন

VPS-এর নামের মধ্যে Ubuntu থাকাই যথেষ্ট নয়। চলমান release, CPU architecture, cloud-init ও repository-র package আপনার অ্যাপের সঙ্গে মেলে কি না পরীক্ষা করুন।

· হালনাগাদ · পড়তে প্রায় 4 মিনিট

এই নির্দেশনায়

অ্যাপের প্রয়োজন আগে লিখুন

Runtime, database, native extension, monitoring ও backup agent-এর সমর্থিত release এবং architecture লিখুন। Vendor-এর সমর্থন ও নিজের পরীক্ষার ফল আলাদা রাখুন। Provider-এর image list ও maintenance window দেখুন। Ubuntu 24.04-এর সাধারণ package family Python 3.12, PHP 8.3 ও PostgreSQL 16; patch version সময়ের সঙ্গে বদলায়।

চলমান release ও architecture পড়ুন

cat /etc/os-release
uname -r
dpkg --print-architecture
uname -m

OS release-এর VERSION_ID distribution-এর সংস্করণ বলে; kernel number তার বিকল্প নয়। dpkg-এ amd64 সাধারণত uname-এ x86_64, arm64 সাধারণত aarch64। amd64-only binary Arm VM-এ স্বয়ংক্রিয়ভাবে চলে না।

প্রথম provisioning শেষ হয়েছে কি দেখুন

cloud-init থাকলে তার অবস্থা দেখুন। না থাকলেই image ত্রুটিপূর্ণ নয়; provider অন্য provisioning পদ্ধতি ব্যবহার করতে পারে।

if command -v cloud-init >/dev/null 2>&1; then
    cloud-init status --long
else
    printf '%s\n' 'cloud-init is not installed; check the provider provisioning method.'
fi

Running হলে শেষ হওয়া পর্যন্ত অপেক্ষা করুন। Error বা degraded result হলে নির্দিষ্ট module ও log দেখুন। Done শুধু provisioning-এর অবস্থা, অ্যাপের সুস্থতার প্রমাণ নয়।

sudo tail -n 50 /var/log/cloud-init.log
sudo tail -n 50 /var/log/cloud-init-output.log

Log শেয়ারের আগে token, key ও ব্যক্তিগত তথ্য ঢাকুন। Error মুছতে cloud-init clean চালানো বা network file overwrite করা সমস্যার কারণ সমাধান করে না।

Repository-তে আসলে কোন package আছে দেখুন

sudo apt update
apt-cache policy python3 php postgresql
apt-cache policy python3.12 php8.3 postgresql-16

Installed: (none) মানে বসানো নেই; Candidate: (none) হলে enabled repository, component, package name ও architecture দেখুন। এলোমেলো repository যোগ করবেন না। Default বা meta-package-এর family এবং চলমান executable-এর version আলাদা করে যাচাই করুন। Database client-এর version-কে server version ধরে নেবেন না।

Runtime ও CPU mismatch আলাদা করুন

উদাহরণ: অ্যাপ Python 3.10 এবং amd64-only extension চায়, অথচ নতুন VM Ubuntu 24.04 arm64। এখানে দুটি mismatch আছে। amd64 image নিলে architecture বদলাবে, Python version নয়; virtual environment-ও আলাদা Python interpreter তৈরি করে না।

OS-এর Python সরিয়ে নিজের version বসাবেন না। অ্যাপ update অথবা রক্ষণাবেক্ষণ করা isolated runtime/container বিবেচনা করুন। পুরোনো OS বাছলে তার security maintenance দেখুন। Extension load, database write, background job ও restore-সহ সম্পূর্ণ workflow পরীক্ষা করুন; শুধু homepage খোলা যথেষ্ট নয়।

Container-এর সীমাও বুঝুন

Container host kernel, network ও storage-এর ওপর নির্ভর করে। Image-এর native architecture দেখুন; emulation-এ চলাকে production capacity-এর প্রমাণ ভাববেন না। Persistent data কোথায় আছে এবং কীভাবে restore হবে লিখুন।

Version বা digest pin করলে পুনরাবৃত্ত deployment সহজ হয়, তবে security update-এর পরিকল্পনাও চাই। দুর্বল image স্থায়ীভাবে রেখে দেওয়া সমাধান নয়। Ubuntu Main, Ubuntu Pro এবং third-party package-এর maintenance scope আলাদা।

Update ও release upgrade আলাদা রাখুন

apt list --upgradable
systemctl --failed
if [ -f /var/run/reboot-required ]; then cat /var/run/reboot-required; fi

Package metadata refresh-এর পরে update তালিকা দেখুন। Package update, service restart এবং নতুন Ubuntu release-এ upgrade এক কাজ নয়। Reboot flag না থাকাই কোনো restart দরকার নেই—এমন নিশ্চয়তা নয়।

Release upgrade আগে copy-তে repository, native module, database ও সম্পূর্ণ workflow পরীক্ষা করুন। Rollback-এর সময় নতুন write কোথায় যাবে ঠিক করুন; পুরোনো snapshot ফিরিয়ে দিলে পরের data হারাতে পারে। Final synchronization ও maintenance window পরিকল্পনা করুন।

যাচাইয়ের ফল সংরক্ষণ করুন

ছোট পর্দায় সব কলাম দেখতে টেবিলটি পাশে স্ক্রল করুন।

নথিযা রাখবেন
OS ও imageRelease, architecture, kernel এবং image ID
অ্যাপBuild, runtime, lockfile ও repository
Provisioningফলাফল ও প্রাসঙ্গিক log; গোপন তথ্য নয়
Acceptance testWorkflow, ফল ও পরীক্ষার তারিখ
Maintenanceদায়িত্ব, window ও alert
RecoveryCopy-এর স্থান, পদ্ধতি ও শেষ restore test

Repository-তে password বা private key রাখবেন না। প্রস্তুত image নিয়ে প্রথম HTTPS site প্রকাশ করুন। Oracle quota ব্যবহার করলে যোগ্য image ও SSH প্রস্তুতির ধাপ দেখুন।

প্রশ্ন ও উত্তর

সব সময় Ubuntu 24.04 নেব?

অ্যাপ, provider image ও সম্পূর্ণ dependency যে রক্ষণাবেক্ষণ করা release সমর্থন করে সেটি বেছে নিন। নতুন release-এ আগে পরীক্ষা করুন।

Image বদলানো কি সাধারণ update?

Reinstall disk-এর data মুছে দিতে পারে। Package update, release upgrade ও নতুন image দিয়ে reinstall আলাদা কাজ।

Package family সামঞ্জস্যের সূত্র; এটি আপনার অ্যাপের capacity বা সব extension চলার পরীক্ষার ফল নয়।

সম্পর্কিত নির্দেশনা