نصب کنترل پنل روی سرور مجازی: پیش‌نیازها و منابع

راهنمای عملی نصب کنترل پنل روی سرور مجازی؛ منابع لازم، پیش‌نیازها، و اینکه چرا نصب روی سرور غیرخالی معمولاً به خرابی می‌انجامد.

۵ دقیقه به‌روزرسانی ۲۷ مهر ۱۴۰۵

سرور مجازی را خریده‌اید، SSH می‌زنید و می‌خواهید کنترل پنل بالا بیاید. اولین چیزی که جلوی شما را می‌گیرد معمولاً این پیام است: Error: This server does not have a valid hostname یا Cannot install on a server with existing web server. اگر روی همان VPS قبلاً Apache یا Nginx نصب کرده‌اید، یا دیتابیس دارید، نصب کنترل پنل تقریباً همیشه شکست می‌خورد. این مقاله دقیقاً دربارهٔ همین لحظه است.

قبل از نصب کنترل پنل، این چهار چیز را چک کنید

نصب کنترل پنل یک اسکریپت نیست که «اجرا کنم و برود». یک نصب‌کننده است که کل سیستم را بازنویسی می‌کند: وب‌سرور، PHP، دیتابیس، DNS، فایروال و صف ایمیل. اگر سیستم از قبل چیزی دارد، نصب‌کننده یا متوقف می‌شود یا آن چیز را زیر پا له می‌کند.

  • سیستم‌عامل تازه و پشتیبانی‌شده. AlmaLinux 8/9 یا Ubuntu 22.04. نصب روی Debian 12 برای بعضی پنل‌ها هنوز پشتیبانی رسمی ندارد.
  • هاست‌نیم معتبر با رکورد A. خیلی‌ها این را رد می‌کنند و بعد در مرحلهٔ صدور SSL گیر می‌کنند.
  • دسترسی root واقعی. کاربر با sudo کافی نیست؛ بعضی نصب‌کننده‌ها مستقیم /root را می‌خوانند.
  • هیچ وب‌سرور یا دیتابیس فعالی نباشد. با ss -tlnp | grep -E ':80|:443|:3306' چک کنید. اگر خروجی داشت، اول باید تصمیم بگیرید.

چقدر RAM و دیسک واقعاً لازم است

عددهایی که روی سایت پنل‌ها می‌بینید حداقل مطلق است، نه عدد راحت. تجربهٔ عملی این است:

منبعحداقل روی کاغذعددی که واقعاً کار می‌کند
RAM1 GB2 GB برای یک سایت سبک، 4 GB اگر MySQL و ایمیل هم فعال باشد
دیسک20 GB40 GB SSD/NVMe؛ خود پنل با لاگ‌ها و بکاپ‌ها 8 تا 12 GB می‌خورد
CPU1 vCPU2 vCPU؛ کامپایل اولیه روی یک هسته بیش از 40 دقیقه طول می‌کشد

روی 1 GB RAM با swap نصب بالا می‌آید، ولی روزی که MySQL بخواهد بافر کند، OOM Killer پروسه را می‌کشد و سایت با 502 برمی‌گردد. اگر منابع سرور را دست‌کم گرفته‌اید، قبل از هر چیز تشخیص علت لود بالای سرور را بخوانید تا بفهمید کدام پروسه منابع را می‌خورد.

چرا نصب روی سرور غیرخالی توصیه نمی‌شود

این‌جا اشتباه می‌کنند: کسی یک VPS دارد که سه ماه است سایتش روی آن بالا است، می‌خواهد کنترل پنل اضافه کند، و فکر می‌کند نصب‌کننده «کنار» بقیه چیزها می‌نشیند. نمی‌نشیند. نصب‌کننده پیکربندی Apache یا Nginx شما را بازنویسی می‌کند، نسخهٔ PHP را عوض می‌کند، و اگر دیتابیس MySQL/MariaDB جدا نصب کرده باشید، ممکن است روی پورت 3306 تداخل کند.

علامتش همیشه واضح نیست. گاهی نصب موفق تمام می‌شود، پنل بالا می‌آید، ولی سایت قبلی با 500 برمی‌گردد چون DocumentRoot عوض شده. گاهی هم دیتابیس بالا نمی‌آید و در /var/log/mysqld.log می‌بینید که سوکت قدیمی مانع شده. اگر داده دارید، اول با انتقال فایل با scp و rsync بکاپ کامل بگیرید، بعد سرور را از صفر بسازید.

مسیر درست: سرور تازه، بعد نصب

ترتیب کار این است: بکاپ بگیرید، سرور را بازنصب کنید (reinstall) یا یک VPS تازه بسازید، هاست‌نیم را ست کنید، بعد نصب‌کننده را اجرا کنید. اگر دسترسی‌تان را از دست داده‌اید و باید از حالت rescue استفاده کنید، بازنصب سرور و کار با حالت rescue گام‌به‌گام همین مسیر را توضیح داده.

مراحل نصب، با دستورهای واقعی

  1. هاست‌نیم را ست کنید:
    hostnamectl set-hostname srv1.example.com
    echo "127.0.0.1 srv1.example.com" >> /etc/hosts
  2. رکورد A را در DNS بسازید و منتظر انتشار بمانید. با dig +short srv1.example.com چک کنید؛ تا وقتی IP برنگردد، نصب را شروع نکنید.
  3. سیستم را آپدیت کنید: dnf update -y یا apt update && apt upgrade -y.
  4. فایروال را قبل از نصب تنظیم کنید، نه بعدش. پورت‌های 22، 80، 443 و پورت‌های پنل را باز بگذارید.
  5. نصب‌کننده را اجرا کنید. برای DirectAdmin معمولاً:
    cd /usr/local/directadmin/custombuild
    ./build update
    ./build all d

نصب بین 20 تا 60 دقیقه طول می‌کشد و به سرعت دیسک و CPU وابسته است. اگر روی NVMe باشید محسوس سریع‌تر است. وسط کار SSH را نبندید؛ از screen یا tmux استفاده کنید وگرنه با قطع اتصال، نصب نیمه‌کاره می‌ماند و پاک‌کردنش از نصب دوباره سخت‌تر است.

بعد از نصب، این سه کار را انجام دهید

اول SSL پنل و دامنه‌ها را با نصب گواهینامه رایگان با Certbot بگیرید. دوم کاربر MySQL ناشناس را حذف کنید و دسترسی‌ها را محدود کنید؛ راهنمای امنیت MySQL دقیقاً همین را پوشش می‌دهد. سوم بکاپ خودکار را روی مقصدی خارج از همان سرور تنظیم کنید.

کدام پنل را انتخاب کنم

اگر فقط یک سایت شخصی دارید و با خط فرمان راحت هستید، نصب کنترل پنل را کلاً کنار بگذارید؛ همان Nginx و Certbot کافی است و 1 GB RAM را هم آزاد نگه می‌دارد. اگر چند سایت با مشتری واقعی دارید، cPanel راحت‌ترین است ولی گران و سنگین؛ DirectAdmin سبک‌تر و ارزان‌تر است و روی 2 GB RAM راحت می‌نشیند. برای پروژه‌های داخلی که فقط به پنل فارسی نیاز دارند، گزینه‌های ایرانی هم کار می‌کنند ولی مستندات و انجمن پشتیبانشان محدودتر است.

یک نکتهٔ عملی: اگر قصد دارید بعداً روی همین سرور کانتینر هم اجرا کنید، از اول راه‌اندازی داکر روی VPS را در نظر بگیرید، چون بعضی پنل‌ها پورت‌ها و iptables را طوری می‌بندند که بعداً دردسر می‌شود. برای بارهای سنگین‌تر و چند سرویس جدا، سرور ابری انعطاف بیشتری از یک VPS ثابت می‌دهد و می‌توانید منابع را جدا کنید.

اگر فقط می‌خواهید سایت بالا باشد و نمی‌خواهید درگیر نگهداری پنل شوید، هاست لینوکس همان لایه را برایتان مدیریت می‌کند و نیازی به نصب چیزی روی سرور خالی ندارید.

پرسش‌های پرتکرار

آیا می‌توانم کنترل پنل را روی سروری که سایت فعال دارد نصب کنم؟

عملاً نه، مگر اینکه سایت را کامل بکاپ بگیرید و بعد از نصب دوباره راه‌اندازی کنید. نصب‌کننده پیکربندی وب‌سرور و نسخهٔ PHP را بازنویسی می‌کند و سایت قبلی معمولاً با خطای 500 برمی‌گردد. مسیر امن این است که سرور را بازنصب کنید یا یک سرور تازه بسازید و داده را منتقل کنید.

حداقل منابع برای نصب کنترل پنل چقدر است؟

روی کاغذ 1 GB RAM و 20 GB دیسک، ولی در عمل 2 GB RAM و 40 GB دیسک SSD یا NVMe جواب می‌دهد. با 1 GB، نصب بالا می‌آید اما به‌محض فعال‌شدن دیتابیس و ایمیل، OOM Killer پروسه‌ها را می‌کشد.

چرا نصب‌کننده پیام خطای هاست‌نیم می‌دهد؟

چون هاست‌نیم سرور هنوز روی localhost یا یک نام پیش‌فرض است. با hostnamectl set-hostname عوضش کنید، رکورد A را ست کنید و با dig +short مطمئن شوید DNS منتشر شده. تا وقتی این مرحله تمام نشود، نصب جلو نمی‌رود.

اگر نصب وسط کار قطع شد چه کار کنم؟

اول با screen -ls ببینید سشن زنده مانده یا نه. اگر نصب نیمه‌کاره مانده، بهترین کار بازنصب سرور از صفر است؛ پاک‌کردن دستی فایل‌های نیمه‌نصب‌شده معمولاً بیشتر از یک نصب تازه وقت می‌برد و نتیجه‌اش هم قابل اعتماد نیست.

آیا این مطلب برایتان مفید بود؟