تفاوت میزبانی اشتراکی و VPS؛ کدام برای سایت شما بهتر است؟
تفاوت اصلی در دسترسی root و مسئولیت نگهداری سرور است. اگر سایت شما ساده است میزبانی اشتراکی کافیست اما برای اجرای برنامههای خاص یا کنترل کامل به VPS نیاز دارید.
تفاوت میزبانی اشتراکی و VPS: پاسخ کوتاه
تفاوت میزبانی اشتراکی (Shared hosting) و VPS یک مسئله مربوط به سرعت نیست. در میزبانی اشتراکی، شما یک حساب کاربری روی ماشینی اجاره میکنید که شخص دیگری آن را پیکربندی و بهروزرسانی میکند و بین صدها مشتری به اشتراک میگذارد. در یک VPS (سرور مجازی خصوصی)، شما یک سیستمعامل کامل با دسترسی root اجاره میکنید؛ بنابراین هر چه بخواهید نصب میکنید و هر چه را خراب کنید، خودتان باید تعمیر کنید.
سه تفاوت اساسی وجود دارد. یا دسترسی root دارید یا ندارید. حافظه (RAM) یا به شما اختصاص داده شده است و یا از یک منبع مشترک قرض گرفته میشود. و زمانی که سرور در نیمهشب از پاسخدهی باز میماند، یا میزبان آن را تعمیر میکند یا خودتان. تمام ویژگیهای موجود در جداول مقایسهای، از همین سه مورد نشأت میگیرند.
اگر سایت شما شامل صفحات، تصاویر و یک فرم تماس است، میزبانی اشتراکی پاسخ مناسب است و هزینه کمتری دارد. اگر سایت شما به برنامهای نیاز دارد که در زمان نبود بازدیدکننده نیز در حال اجرا باقی بماند، به یک VPS نیاز دارید.
آنچه میزبانی اشتراکی واقعاً در اختیار شما قرار میدهد
یک سرور Linux همزمان چندین حساب کاربری مشتری را اجرا میکند. هر حساب شامل یک دایرکتوری home با یک document root، یک پایگاه داده و یک صندوق پستی است و یک وبسرور واحد، معمولاً Apache یا LiteSpeed، تمامی سایتهای موجود روی آن سرور را سرویسدهی میکند. بهجای خط فرمان (shell prompt)، یک کنترل پنل در اختیار شما قرار میگیرد. شما دسترسی root ندارید، بنابراین نمیتوانید بستهای نصب کنید، پورتی را باز کنید یا یک سرویس پسزمینه (background service) را اجرا نمایید.
بیشتر میزبانهای اشتراکی از CloudLinux استفاده میکنند که هر حساب را در container اختصاصی خود قرار میدهد و محدودیتهای سختی برای زمان پردازنده و تعداد پردازشهای همزمان شما اعمال میکند. عبور از سقف تعداد پردازشها باعث کندی سایت شما نمیشود، بلکه باعث میشود سرور یک صفحه خطا با متن 508 Resource Limit Is Reached نمایش دهد. این صفحه نشاندهنده این است که حساب کاربری خودتان به سقف محدودیت رسیده است، نه اینکه همسایهای در حال استفاده از سهم منابع شما باشد.
این معامله آگاهانه است. شما کنترل را واگذار میکنید و در عوض، میزبان هسته سیستمعامل (kernel) را وصله میکند، PHP را بهروزرسانی میکند، گواهیها را تمدید کرده و هر شب از دادهها نسخه پشتیبان تهیه میکند. برای بسیاری از سایتها، این معاملهای سودمند است.
یک VPS در واقع چه چیزی به شما ارائه میدهد
یک VPS یک ماشین مجازی است که روی یک سرور میزبان اجرا میشود. تحت KVM، که هایپرووایزر (hypervisor) پشت اکثر پلنهای Linux VPS است، نمونه (instance) شما هسته (kernel) اختصاصی خود را بوت میکند و دارای آدرس IP، فایروال و سیستم init مخصوص به خود است. sudo کار میکند. apt install کار میکند. برنامهای که از طریق systemd اجرا میکنید، پس از خروج شما از سیستم به کار خود ادامه میدهد، در صورت کرش کردن دوباره راهاندازی میشود و پس از reboot مجدد بالا میآید.
همین دسترسی root است که باعث میشود امنیت ماشین به وظیفه شما تبدیل شود. هیچکس دیگری آن را نظارت نمیکند. طیف مواردی که افراد روی یک VPS اجرا میکنند دقیقاً به همین دلیل گسترده است: این ماشین هر کاری که یک سرور لینوکسی قادر به انجام آن باشد را انجام میدهد.
تفاوت 1: دسترسی root و قابلیتهایی که آزاد میکند
دسترسی root تفاوتی است که سایر تفاوتها را ایجاد میکند. با داشتن آن، میتوانید هر بستهای را از توزیع نصب کنید، هر پورتی را bind کنید، یک unit برای systemd بنویسید، تمام لاگهای موجود در سیستم را بخوانید و تنظیمات هسته (kernel) را با sysctl تغییر دهید. بدون آن، شما محدود به لیستی هستید که پنل ارائه میدهد: انتخابگر نسخه PHP، مجموعهای ثابت از افزونهها و یک فرم برای cron jobها.
در یک VPS، همیشه میتوانید از ماشین بپرسید که چه چیزی در حال گوش دادن (listening) است:
ss -ltnpهر خط نشاندهنده یک socket باز به همراه پردازشی است که مالک آن است؛ بنابراین سرویسی که در شروع کار شکست خورده باشد، به صورت یک خطِ غایب در لیست ظاهر میشود. در هاست اشتراکی، این پرسش پاسخی ندارد، زیرا پورتهای 80 و 443 متعلق به وبسرور میزبان هستند و هیچ چیزی که شما بنویسید نمیتواند یکی از آنها را تصاحب کند.
تفاوت 2: حافظه تخصیصیافته در برابر حافظه قرضی
میزبانی اشتراکی (shared hosting) با این فرض فروخته میشود که تعداد کمی از حسابها در یک لحظه فعال هستند. حافظه موجود در دستگاه یک منبع مشترک است و سهم حساب شما از آن، یک محدودیت است نه یک رزرو قطعی. هنگامی که سهم شما تمام شود، پردازشهای PHP متوقف میشوند و بازدیدکنندگان با خطای 500 یا 508 مواجه خواهند شد.
در یک VPS، حافظه موجود در پلن شما متعلق به instance شماست. free -m آن را گزارش میدهد و هیچ پردازشی خارج از ماشین مجازی شما نمیتواند آن را تصاحب کند.
زمان پردازنده تنها استثنای صادقانه است. اکثر پلنهای VPS هستههای فیزیکی را بین مهمانها به اشتراک میگذارند و شما میتوانید خودتان آن را اندازهگیری کنید:
vmstat 1 5ستون st نشاندهنده steal time است: سهمی از زمان که پردازنده مجازی شما آماده اجرا بوده، اما هسته فیزیکی در اختیار مهمان دیگری قرار داشته است. مقدار ثابت چند درصدی طبیعی است. عدد دورقمی پایدار به این معنی است که میزبان بیش از حد ظرفیت (oversubscribed) فروخته است و این رقمی است که میتوانید در تیکت پشتیبانی به آن استناد کنید. در میزبانی اشتراکی هیچ معیار معادل آن وجود ندارد، زیرا هر ابزاری که بتواند آن را نمایش دهد به دسترسی root نیاز دارد. فضای ذخیرهسازی نیز به همین شکل عمل میکند؛ به همین دلیل است که نوع دیسک پشت یک پلن VPS اهمیت دارد و چرا ارزش دارد که در هفته اول یک VPS جدید را شخصاً اندازهگیری کنید و به صفحه فروش اعتماد نکنید.
تفاوت 3: مسئولیت خرابی با کیست
در میزبانی اشتراکی، مالکیت سیستمعامل، وبسرور، نسخه PHP، گواهیها و پشتیبانگیریهای شبانه بر عهده میزبان است. زمانی که سرور پاسخ نمیدهد، شما یک تیکت ثبت میکنید و شخصی در حال رسیدگی به آن است. هزینه این خدمات، روی دیگر همان سکه است: شما نمیتوانید از آنها بخواهید چیزی را که پشتیبانی نمیکنند، نصب کنند.
در یک VPS مدیریتنشده، ارائهدهنده فقط مالک هایپروایزر، شبکه و برق است. همهچیز از هسته (kernel) به بالا متعلق به شماست. بهروزرسانیهای امنیتی، فایروال، پشتیبانگیری، تمدید گواهیها و مانیتورینگ همگی وظیفه شما هستند و تیم پشتیبانی برای عیبیابی پیکربندی وبسرور شما وارد سیستم نخواهد شد. از همان روز اول برای این موارد برنامهریزی کنید: ده دقیقه اول در یک VPS جدید، سپس فایروالی که آن را درک میکنید، بهروزرسانیهای امنیتی خودکار و پشتیبانهایی که حداقل یک بار آنها را بازیابی کردهاید.
چه زمانی هاست اشتراکی گزینه مناسبی است
یک سایت بروشور (معرفی) واضحترین مثال است: چند صفحه، تعدادی تصویر، یک فرم تماس، شاید وردپرس با یک افزونه کش و چند هزار بازدید در روز. هیچ پردازش پسزمینهای وجود ندارد. هیچ runtime غیرمعمولی نیاز نیست. هیچ چیزی وجود ندارد که لازم باشد بین درخواستها در حافظه باقی بماند. هاست اشتراکی به خوبی از عهده میزبانی چنین سایتی برمیآید، هزینه آن از هر VPS کمتر است و نگهداری آن را به افرادی میسپارد که این کار شغل تماموقت آنهاست. انتقال چنین سایتی به یک VPS هیچ دستاوردی ندارد و تنها وظیفهای را به دوش شما میگذارد که پیشتر نداشتید.
مورد دومی هم وجود دارد که کمتر به آن توجه میشود. اگر در تیم شما کسی تمایلی به خواندن فایلهای لاگ یا اجرای apt upgrade ندارد، هاست اشتراکی انتخاب امنتری است. یک VPS وصلهنشده با پورت دیتابیس باز، نتیجهای بسیار بدتر از یک حساب اشتراکی دارد که توسط یک متخصص بهروز نگه داشته میشود. کنترل داشتن تنها زمانی یک مزیت محسوب میشود که کسی از آن استفاده کند.
نشانه 1: به برنامهای نیاز دارید که همیشه در حال اجرا باشد
دیمون (daemon) برنامهای است که در حافظه باقی میماند و منتظر انجام کار میماند: مانند یک API، ربات چت، پردازشگر صف یا سرور بازی. در هاست اشتراکی، کد شما فقط زمانی اجرا میشود که درخواستی برسد و هر فرآیندی که از طریق نشست SSH (secure shell) اجرا کرده باشید، پس از خروج بسته میشود؛ زیرا فرآیندهای طولانیمدت با محدودیت تعداد فرآیندهای مجاز در حساب کاربری مغایرت دارند.
در یک VPS، همان برنامه به یک unit در systemd تبدیل میشود:
sudo systemctl enable --now myapp
systemctl status myappدستور systemctl status باید Active: active (running) را به همراه یک شناسه فرآیند (PID) چاپ کند. اگر Active: failed (Result: exit-code) را چاپ کرد، دلیل آن در journalctl -u myapp -n 50 موجود است که خروجی خود برنامه را در لحظه توقف نشان میدهد. گزینه Restart=always در فایل unit باعث میشود برنامه پس از کرش کردن دوباره اجرا شود و enable آن را پس از راهاندازی مجدد سیستم (reboot) بالا میآورد. نوشتن سرویسها و تایمرهای systemd اولین مهارتی است که یادگیری اصولی آن در VPS ارزشش را دارد.
نشانه 2: به رانتایمی نیاز دارید که پنل ارائه نمیدهد
پنل یک لیست محدود در اختیار شما میگذارد. اگر برنامه شما به نسخهای از یک زبان نیاز داشته باشد که در آن لیست نیست، یا به کتابخانهای نیاز داشته باشد که باید کامپایل شود، یا به ابزارهایی مثل ffmpeg، یک مرورگر headless یا دیتابیسی غیر از MySQL نیاز داشته باشد، در هاست اشتراکی جایی برای نصب آنها وجود ندارد. نصب نرمافزار نیازمند دسترسی root است، در حالی که اکانت شما نه کامپایلر دارد و نه هدرهای توسعه (development headers)؛ بنابراین عملیات build پیش از تولید هرگونه خروجی با شکست مواجه میشود.
در یک VPS، شما آن را با استفاده از apt install نصب میکنید، یا آن را درون یک کانتینر اجرا میکنید تا سیستمعامل میزبان تمیز باقی بماند. استفاده از Docker Compose روی VPS معمولترین راهکار زمانی است که برنامه شما بیش از یک بخش متحرک داشته باشد.
نشانه 3: کرونجاب شما باید بهموقع اجرا شود
میزبانهای اشتراکی، کرونجابها را از طریق یک فرم دریافت میکنند و حداقل بازه زمانی (معمولاً 5 یا 15 دقیقه) را تعیین میکنند. شغلی که از محدودیت پردازنده حساب کاربری فراتر رود، در میانه راه متوقف (kill) میشود و بدون هیچ خروجی در لاگهایی که اجازه دسترسی به آنها را دارید، با شکست مواجه میشود.
در یک VPS، crontab -e هر زمانبندی که بنویسید را میپذیرد و استفاده از systemd timer حتی بهتر است:
systemctl list-timers
journalctl -u cron -n 20list-timers زمان اجرای بعدی و آخرین نتیجه برای هر تایمر را نمایش میدهد و لاگ cron نیز هر دستور را هنگام اجرا ثبت میکند. وقتی یک کار انجام نمیشود، میتوانید تشخیص دهید که آیا اصلاً شروع نشده یا شروع شده و با خطا مواجه شده است. این تمایز، بخش عمدهای از فرآیند عیبیابی یک وظیفه زمانبندیشده را تشکیل میدهد.
نشانه 4: همسایگان شما باعث کاهش زمان پاسخدهی میشوند
این نشانه کاملاً مشخص است. یک صفحهٔ وب ثابت، بدون هیچ تغییری در کد شما، در طول شب سریع و در ساعت 7 عصر کند پاسخ میدهد. پیش از آنکه کسی را مقصر بدانید، آن را از سیستم خودتان اندازهگیری کنید:
for i in $(seq 1 20); do curl -o /dev/null -s -w '%{time_starttransfer}\n' https://example.com/; sleep 5; donetime_starttransfer زمان رسیدن به اولین بایت پاسخ (Time to First Byte) بر حسب ثانیه است. اگر این 20 عدد به هم نزدیک باشند، مشکل از سرور شما نیست و راهحل در کد یا کوئریهای دیتابیس شما نهفته است. اگر این اعداد در ساعت 3 صبح ثابت هستند اما در ساعات اوج مصرف چندین صد میلیثانیه نوسان دارند، شما در حال استفاده از یک ماشین شلوغ بهصورت اشتراکی با اکانتهایی هستید که به آنها دسترسی ندارید. این تنها عاملی است که با بهبود کد قابلرفع نیست، زیرا علت آن در سمت دیگر مرز اکانت شما قرار دارد.
هزینه واقعی این جابهجایی
اینها قیمتهای تبلیغاتی معمول تا اوت 2026 برای کوچکترین پلن در هر دستهبندی هستند. به این ارقام به چشم یک برآورد کلی نگاه کنید، نه یک پیشفاکتور قطعی؛ و پیش از خرید، قیمت روز را چک کنید.
The data behind this chart
[
{
"plan": "Shared hosting",
"first_term_usd": 3,
"renewal_usd": 12
},
{
"plan": "VPS, 1 vCPU 1 GB",
"first_term_usd": 5,
"renewal_usd": 6
},
{
"plan": "VPS, 2 vCPU 4 GB",
"first_term_usd": 12,
"renewal_usd": 15
},
{
"plan": "Managed VPS, 2 vCPU 4 GB",
"first_term_usd": 25,
"renewal_usd": 30
}
]اختلاف قیمت اصلی بین 3 تا 5 دلار آمریکا در ماه متغیر است، اما این عددی نیست که تعیینکننده باشد. هاست اشتراکی نرخ دوره اول را تبلیغ میکند که معمولاً مستلزم پرداخت هزینه یک تا سه سال بهصورت پیشپرداخت است و تمدید آن نزدیک به 12 دلار خواهد بود. اگر نرخ تمدید را با تمدید مقایسه کنید، تصویر تغییر میکند: 12 دلار برای اکانت اشتراکی در برابر 6 دلار برای یک VPS پایه.
در این مقایسه دقت کنید، زیرا ابعاد آنها برابر نیست. یک VPS با 1 هسته vCPU و 1 گیگابایت رم، وبسرور و دیتابیس را روی یک ماشین کوچک اجرا میکند که با رسیدن ترافیک واقعی، برای WordPress بسیار محدود است. مقایسه منصفانه و مشابه با یک پلن اشتراکی تمدیدشده، پلن 2 هسته vCPU و 4 گیگابایت رم با هزینه تقریبی 15 دلار است. بنابراین، هزینه اضافی واقعی تنها چند دلار در ماه است، نه چند برابر.
هزینه بزرگتر هرگز در فاکتور ظاهر نمیشود. یک VPS نیازمند یک ساعت زمان برای راهاندازی، چند دقیقه در هر ماه برای بهروزرسانیها، و یک شب وقت برای زمانی است که اولین بار مشکلی پیش میآید. اگر این زمان را با نرخ ساعتی خودتان محاسبه کنید، این اختلاف قیمت بهسرعت از بین میرود. هزینه واقعی VPS در عمل این ابعاد را با جزئیات بیشتری بررسی میکند.
انتقال یک وبسایت از هاست اشتراکی بدون از دست دادن ترافیک
- یک روز پیش از انتقال، مقدار TTL (زمان ماندگاری) DNS دامنه را به 300 ثانیه کاهش دهید تا تغییرات بهجای چند ساعت، ظرف چند دقیقه اعمال شوند.
- سرور جدید را آماده کنید و پیش از دست زدن به تنظیمات DNS، مطمئن شوید که سایت روی آدرس IP جدید بهدرستی کار میکند.
- فایلها را کپی کنید، سپس از دیتابیس خروجی (dump) بگیرید و آن را روی سرور جدید بازیابی کنید.
- با استفاده از فایل hosts در لپتاپ خود، سایت را تست کنید؛ این کار باعث میشود دامنه فقط برای سیستم شما به IP جدید اشاره کند.
- گواهی TLS را روی سرور جدید صادر کنید، رکورد A را تغییر دهید و حساب هاست اشتراکی قدیمی را تا یک هفته فعال نگه دارید.
dig example.com A +noall +answer
rsync -avz ~/public_html/ deploy@203.0.113.10:/srv/www/example.com/
mysqldump --single-transaction -u dbuser -p dbname > site.sqldig مقدار TTL را در ستون دوم پاسخ خود نمایش میدهد، بنابراین میتوانید پیش از انجام هر تغییری، فعال بودن مقدار جدید را تأیید کنید. --single-transaction یک snapshot منسجم بدون قفل کردن جداول تهیه میکند؛ این موضوع در صورتی که سایت قدیمی در حین کار شما همچنان در حال دریافت سفارش باشد، اهمیت دارد. روی سرور جدید، گواهیها را همان روز راهاندازی کنید: Let's Encrypt روی Ubuntu با nginx پس از اینکه رکورد DNS به سرور اشاره کرد، تنها چند دقیقه زمان میبرد.
منابع بدون مسئولیت
اگر چهار نشانهٔ ذکرشده توصیفگر وضعیت سایت شما هستند اما تمایلی به انجام امور نگهداری ندارید، گزینهٔ میانی، استفاده از یک VPS مدیریتشده (Managed VPS) است. در این حالت، شما همچنان حافظهٔ اختصاصیافته و دسترسی در سطح root را حفظ میکنید، اما مسئولیت وصلهکردن (patching)، مانیتورینگ و معمولاً مدیریت پنل بر عهدهٔ ارائهدهنده است. جدول بالا هزینهٔ این سرویس را حدود 30 دلار در مقابل 15 برای همان اندازه در حالت مدیریتنشده (Unmanaged) نشان میدهد. این اختلاف قیمت در واقع هزینهٔ خرید وقت و توجه فرد دیگری است که در صورت از دسترس خارج شدن سرور در ساعات شب، مشکل را برطرف کند.
تصمیمگیری بین VPS مدیریتشده و مدیریتنشده مطالعهٔ بعدی مناسب برای شماست، اگر این شرایط با وضعیت شما همخوانی دارد. اما اگر در حال حاضر یک VPS پرمشغله دارید و همچنان در ساعات اوج مصرف با مشکل steal time مواجه هستید، گام بعدی استفاده از یک سرور اختصاصی بدون هیچ همسایهای است.
FAQ
آیا یک VPS سریعتر از هاست اشتراکی است؟
لزوماً خیر. یک سرور اشتراکی خلوت ممکن است در بارگذاری یک صفحه WordPress، از یک VPS با 1 هسته CPU سریعتر عمل کند. آنچه VPS به شما میدهد، پایداری است: حافظه اختصاصیافته در پلن شما متعلق به خودتان است، بنابراین زمان پاسخدهی به جای فعالیت سایر کاربران روی همان ماشین، به کد شما بستگی دارد. اگر صفحات شما هم در ساعت 3 بامداد و هم در ساعت 7 عصر کند هستند، علت آن کد یا کوئریهای دیتابیس شماست و انتقال همان کد به یک VPS، مشکل را نیز با آن منتقل میکند.
آیا میتوانم یک برنامه Node.js یا Python را روی هاست اشتراکی اجرا کنم؟
گاهی اوقات، اما فقط در محدودههای بسیار تنگ. برخی پنلها از طریق Passenger برنامهای را برای شما اجرا میکنند که با رسیدن درخواست، فعال میشود. شما نمیتوانید پورت اختصاصی خود را bind کنید، زیرا وبسرور میزبان پورتهای 80 و 443 را در اختیار دارد. شما نمیتوانید یک worker را بین درخواستها در حافظه نگه دارید، زیرا محدودیت تعداد پردازشهای اکانت، هر فرایند طولانیمدتی را متوقف میکند. یک ربات، یک queue worker یا یک سرور websocket به یک VPS نیاز دارد.
آیا برای مدیریت یک VPS باید لینوکس بلد باشم؟
برای یک VPS مدیریتنشده (unmanaged)، بله. شما به کلیدهای SSH، فایروال، بهروزرسانیها، پشتیبانگیری و عادتِ خواندن لاگها نیاز دارید. برای راهاندازی اولیه یک ساعت و پس از آن هر ماه چند دقیقه زمان در نظر بگیرید. اگر این کاری نیست که مایل به انجامش باشید، یک پلن مدیریتشده (managed) منابع اختصاصی را حفظ کرده و نگهداری را به ارائهدهنده میسپارد؛ این همان مبحثی است که در تفاوت VPS مدیریتشده و مدیریتنشده پوشش داده شده است.
آیا هنگام انتقال از هاست اشتراکی به VPS، سایت من از دسترس خارج میشود؟
اگر ابتدا مقدار TTL در DNS را کاهش دهید و هر دو اکانت را فعال نگه دارید، خیر. مقدار TTL را از یک روز قبل روی 300 ثانیه تنظیم کنید، فایلها و دیتابیس را کپی کنید، سرور جدید را از طریق فایل hosts در لپتاپ خود تست کنید و سپس رکورد A را تغییر دهید. برای چند دقیقه، برخی بازدیدکنندگان به سرور قدیمی و برخی به سرور جدید هدایت میشوند، بنابراین اکانت اشتراکی را تا یک هفته فعال نگه دارید. در زمان گرفتن آخرین dump از دیتابیس، سایت را در حالت read-only قرار دهید یا بپذیرید که دادههای نوشتهشده در آن بازه زمانی کوتاه از دست خواهند رفت.