اولین VPS که راه‌اندازی کردم، از لحظه‌ای که خریدم تا لحظه‌ای که سایت روی دامنه بالا آمد، سه روز کامل طول کشید. در آن سه روز، چند بار مطمئن شدم رکوردهای DNS درست تنظیم شده‌اند، چند بار وب‌سرور را دوباره نصب کردم، و در نهایت متوجه شدم که یک فایروال ساده، پورت ۸۰ را بسته بود. آن تجربه به من آموخت که اتصال VPS به دامنه، فقط یک تنظیم DNS نیست؛ زنجیره‌ای از چند لایه است که اگر هر یک از آن‌ها ناقص باشد، سایت شما راه نمی‌افتد. این مقاله، همان زنجیره را به ترتیبی که در پروژه‌های واقعی طی می‌کنم، توضیح می‌دهد.

اتصال VPS به دامنه؛ چه تفاوتی با هاست اشتراکی دارد؟

در هاست اشتراکی، اتصال دامنه معمولاً با یک ویزارد ساده انجام می‌شود: وارد پنل می‌شوید، دامنه را وارد می‌کنید، تمام. اما در VPS (Virtual Private Server — سرور مجازی)، شما کنترل کامل دارید، اما در عوض، مسئولیت کامل هم با خودتان است. هیچ ویزاردی وجود ندارد که دکمه بزند و همه‌چیز تنظیم شود. اگر با مفهوم VPS آشنایی ندارید، پیشنهاد می‌کنم ابتدا VPS چیست و چه تفاوتی با هاست اشتراکی دارد را بخوانید.

تفاوت اصلی در سه حوزه خلاصه می‌شود:

  • کنترل کامل: شما باید وب‌سرور، دیتابیس و SSL را خودتان نصب و پیکربندی کنید.
  • مسئولیت امنیت: برخلاف هاست اشتراکی که شرکت هاست بخشی از امنیت را مدیریت می‌کند، در VPS این مسئولیت با خودتان است.
  • پیکربندی دستی: هر لایه، از فایروال تا وب‌سرور، باید به‌دقت پیکربندی شود.

در عوض، مزیت VPS این است که می‌توانید سایت را دقیقاً مطابق نیاز خود تنظیم کنید و منابع سرور را در اختیار داشته باشید. راهنمای کامل انتخاب و راه‌اندازی VPS در چگونه یک VPS راه‌اندازی کنیم آمده است.

اتصال دامنه به VPS، مثل اتصال دو قطعه پازل است که خودتان باید آن را در جای درست قرار دهید. هیچ ویزاردی وجود ندارد، اما در عوض، درک شما از زیرساخت چند برابر می‌شود.

پیش‌نیازها؛ قبل از شروع چه چیزهایی لازم است؟

پیش از هر اقدامی، این چهار چیز باید آماده باشد:

  1. دسترسی SSH به VPS: شامل آدرس IP، نام کاربری و رمز یا کلید SSH. اگر با SSH آشنا نیستید، دستورات ضروری CLI برای مدیریت سرور نقطه شروع خوبی است.
  2. دسترسی به پنل DNS دامنه: از ثبت‌کننده‌ای که دامنه را از آن خریده‌اید.
  3. IP عمومی VPS: معمولاً در ایمیل خوش‌آمدگویی یا پنل مدیریت VPS قابل مشاهده است.
  4. تصمیم درباره معماری: چه وب‌سروری نصب می‌کنید؟ چه دیتابیسی؟ این تصمیم‌ها در ادامه مقاله اثر می‌گذارد.

گام اول: تنظیم DNS دامنه

اولین گام، اتصال دامنه به IP سرور است. این کار در پنل DNS دامنه انجام می‌شود:

  1. وارد پنل DNS دامنه شوید: بستگی به ثبت‌کننده دارد. اگر از سرویس‌های خارجی مثل Cloudflare استفاده می‌کنید، از پنل آن‌ها؛ در غیر این صورت، از پنل ثبت‌کننده.
  2. رکورد A اضافه کنید: با مقدار IP عمومی سرور VPS. برای دامنه اصلی از @ و برای زیر‌دامنه www هم یک رکورد A دیگر.
  3. TTL را کاهش دهید: اگر قبلاً رکورد داشتید، قبل از تغییر مقدار TTL را به ۳۰۰ ثانیه کاهش دهید تا تغییرات سریع‌تر اعمال شود.
  4. منتظر پروپاگیشن بمانید: با dnschecker.org می‌توانید پیشرفت را ببینید.

راهنمای کامل تنظیمات DNS در چگونه DNS دامنه را تنظیم کنیم آمده است. تفاوت رکورد A و CNAME و کاربرد هر یک در تفاوت CNAME و A Record در DNS.

یک نکته عملی که در پروژه‌ها به کارم آمده: اگر وب‌سرور شما IPv6 هم دارد، یک رکورد AAAA هم اضافه کنید. در بعضی شرایط، این کار پایداری سایت را بالاتر می‌برد.

گام دوم: آماده‌سازی وب‌سرور روی VPS

حالا وارد VPS می‌شویم. با SSH وارد شوید:

ssh root@your-server-ip

پس از ورود، بسته‌های پایه را نصب کنید:

apt update && apt upgrade -y
apt install nginx mysql-server php-fpm php-mysql -y

انتخاب وب‌سرور به نیاز شما بستگی دارد. Nginx در سایت‌های پربازدید و Apache در پروژه‌هایی که نیاز به htaccess دارند، انتخاب‌های متداول هستند. اگر با وردپرس کار می‌کنید، هر دو گزینه کار می‌کنند. راهنمای نصب وردپرس روی سرور در آموزش نصب وردپرس روی هاست برای مبتدیان آمده است.

نمونه پیکربندی یک دامنه در Nginx:

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com/html;
    index index.php index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
    }
}

فایل را در مسیر /etc/nginx/sites-available/example.com ذخیره و سپس با یک لینک سمبولیک فعال کنید:

ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx

گام سوم: تنظیم فایروال و پورت‌ها

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

ufw allow OpenSSH
ufw allow 'Nginx Full'
ufw enable
ufw status

پورت‌های اساسی که باید باز باشند:

  • 22 برای SSH
  • 80 برای HTTP
  • 443 برای HTTPS

پورت‌های اضافی مثل MySQL (3306) نباید از بیرون باز باشند. اگر پورت مدیریتی مثل cPanel دارید، فقط از IPهای مشخص اجازه دسترسی بدهید. مبانی امنیت سرور در چگونه امنیت سرور را افزایش دهیم و فایروال نرم‌افزاری در سرور آمده است.

گام چهارم: نصب و راه‌اندازی SSL

پس از اتصال DNS و آماده‌سازی وب‌سرور، نوبت SSL است. گواهی رایگان Let's Encrypt انتخاب اول است. با ابزار certbot نصب آسان می‌شود:

apt install certbot python3-certbot-nginx -y
certbot --nginx -d example.com -d www.example.com

این دستور، گواهی SSL را نصب می‌کند و Nginx را طوری پیکربندی می‌کند که ترافیک HTTP را به HTTPS ریدایرکت کند. تمدید خودکار هم به‌طور پیش‌فرض فعال می‌شود. راهنمای کامل در چگونه SSL سایت را نصب و فعال کنیم.

گام پنجم: پیکربندی وب‌سرور برای دامنه

پس از نصب SSL، فایل پیکربندی Nginx معمولاً به شکل زیر تغییر می‌کند:

server {
    listen 443 ssl http2;
    server_name example.com www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    root /var/www/example.com/html;
    index index.php index.html;

    # ادامه پیکربندی
}

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

سه نکته در پیکربندی:

گام ششم: تست نهایی و تایید

پس از همه‌ی این مراحل، پنج آزمون انجام می‌دهم تا مطمئن شوم اتصال کامل است:

  1. تست بازدید سایت: با مرورگر و در حالت Incognito، دامنه را باز کنید.
  2. تست SSL: در ssllabs.com دامنه را بررسی کنید و از نمره A مطمئن شوید.
  3. تست DNS: با dnschecker.org بررسی کنید که تغییرات DNS در همه مناطق اعمال شده باشد.
  4. تست پینگ: با ping example.com بررسی کنید که دامنه به IP درست اشاره می‌کند.
  5. تست سرعت: با PageSpeed Insights سرعت اولیه سایت را بسنجید. اگر سایت هنوز خالی است، بعد از نصب وردپرس این تست را تکرار کنید. راهنما در چگونه سرعت سایت وردپرسی را افزایش دهیم.

جدول خلاصه؛ چک‌لیست شش‌گامی اتصال

گاماقدام کلیدیابزار یا مسیر
۱. DNSافزودن رکورد A به IP سرورپنل ثبت‌کننده
۲. وب‌سرورنصب Nginx یا Apacheapt install nginx
۳. فایروالباز کردن پورت‌های ۸۰ و ۴۴۳UFW
۴. SSLنصب Let's Encrypt با certbotcertbot
۵. پیکربندیتعریف دامنه در Nginxsites-available
۶. تستبازدید، SSL، DNS، پینگ، سرعتابزارهای آنلاین

اشتباهات رایج در اتصال VPS به دامنه

  • فراموش کردن بازکردن پورت در فایروال: یکی از رایج‌ترین دلایل «سایت باز نمی‌شود» بعد از اتصال VPS.
  • تنظیم DNS در پنل اشتباه: اگر Nameserverها به جای دیگری اشاره دارند، تنظیمات در پنل هاست بی‌فایده است.
  • نادیده گرفتن زیر‌دامنه www: بعضی کاربران فقط دامنه اصلی را تنظیم می‌کنند و بعد می‌بینند www کار نمی‌کند.
  • پیکربندی نادرست SSL: گاهی certbot نصب می‌شود اما تمدید خودکار تست نمی‌شود. یک بار در ماه با certbot renew --dry-run تست کنید.
  • خاموش کردن فایروال برای عیب‌یابی: هرگز این کار را نکنید. به‌جای آن، پورت‌های مورد نیاز را اضافه کنید.
  • عدم بکاپ: پیش از هر تغییر مهم در سرور، بکاپ داشته باشید. راهنمای بکاپ در پشتیبان‌گیری از سرور چگونه انجام می‌شود.

زیر پوست اتصال دامنه به VPS

برای معماران پلتفرم و تیم‌های فنی، اتصال دامنه به VPS بخشی از زیرساخت استقرار است، نه یک کار جانبی. سه الگویی که در پروژه‌های بزرگ به آن پایبندم:

  1. اتوماسیون با IaC: به‌جای تنظیم دستی هر سرور، از ابزارهایی مثل Ansible یا Terraform استفاده می‌کنم تا اتصال دامنه و پیکربندی سرور قابل بازتولید باشد. این رویکرد در پروژه‌های چندسروری حیاتی است.
  2. جداسازی لایه DNS از لایه سرور: رکوردهای DNS باید در پنل مستقلی از VPS نگهداری شوند. اگر سرور از دست برود، دامنه همچنان در اختیار شماست و می‌توانید سریع به سرور جدید سوئیچ کنید.
  3. پایش و هشدار خودکار: پس از اتصال، لایه پایش باید فعال شود. ابزارهایی مثل UptimeRobot یا Better Uptime در کمتر از یک دقیقه از قطعی مطلع می‌شوند. این لایه در معماری پرمعامله، تفاوت بین پاسخ سریع و بحران چندساعته است.
  4. استراتژی CDN: برای سایت‌های پربازدید، استفاده از CDN می‌تواند فشار روی VPS را به‌شدت کاهش دهد. مبانی در CDN چگونه سرعت سایت را بهبود می‌دهد.

در این نگاه، اتصال دامنه به VPS بخشی از زیرساخت معماری سایت است و باید با همان دقت مدیریت شود که کد و داده. تصویر کامل این نگاه در معماری وب چیست و سرور چیست و چگونه کار می‌کند آمده است.

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

چقدر طول می‌کشد تا تغییرات DNS اعمال شود؟ بین چند دقیقه تا چند ساعت، بسته به TTL. اگر TTL را قبل از تغییر کاهش دهید، سریع‌تر اعمال می‌شود.

آیا باید حتماً از Nginx استفاده کنم؟ نه. Apache هم انتخاب خوبی است، مخصوصاً اگر به htaccess نیاز دارید. انتخاب بسته به نیاز شماست.

چطور بفهمم فایروال پورت را بسته است؟ با telnet your-server-ip 80 از یک سیستم دیگر تست کنید. اگر پاسخ نداد، احتمالاً پورت بسته است.

آیا Nginx را می‌توان با cPanel نصب کرد؟ بله، اما در پنل‌های مدیریتی مثل cPanel یا Plesk، معمولاً Apache پیش‌فرض است. برای Nginx، معمولاً سرور خام بدون پنل توصیه می‌شود.

چطور از VPS بکاپ بگیرم؟ با ابزارهایی مثل rsync، Borg Backup یا اسنپ‌شات‌های ارائه‌دهنده VPS. راهنمای کامل در پشتیبان‌گیری از سرور چگونه انجام می‌شود.

آیا باید از Cloudflare استفاده کنم؟ برای سایت‌های پربازدید، بله. Cloudflare لایه CDN، فایروال و DNS را یک‌جا ارائه می‌دهد. اما در تنظیمات SSL باید حتماً حالت Full (Strict) را انتخاب کنید، نه Flexible.

چطور از VPS در برابر حملات DDoS محافظت کنم؟ ترکیبی از فایروال، CDN و ابزارهای محدودسازی نرخ. راهنمای کامل در پیشگیری از DDoS در سایت‌های کوچک.

بدرود با یک توصیه

اتصال VPS به دامنه، در نگاه اول فرآیندی فنی و چندگامی است، اما در باطن، تمرینی برای درک زنجیره زیرساخت وب است. تجربه‌ام نشان داده هر کسی که این فرآیند را یک بار به‌درستی طی کرده، در پروژه‌های بعدی سریع‌تر عمل می‌کند و در عیب‌یابی ماهرتر می‌شود. سه اقدام پیشنهادی همین امروز: اول، شش‌گام این مقاله را به‌عنوان چک‌لیست روی سرور خود اعمال کنید؛ دوم، پس از راه‌اندازی، یک بکاپ کامل بگیرید تا اگر چیزی خراب شد، سریع برگردید؛ سوم، لایه پایش را فعال کنید تا اگر سایت افتاد، در کمتر از یک دقیقه مطلع شوید.

اگر تجربه‌ای از اتصال VPS به دامنه دارید — چه یک راه‌اندازی روان که همه‌چیز در نیم ساعت حل شد، چه یک چالش پیچیده با فایروال یا SSL — برای من و خوانندگان این سایت ارزشمند است که در دیدگاه‌ها بخوانیم. بگویید در پروژه شما کدام گام بیشترین چالش را ساخت و چطور حلش کردید؛ همان یک تجربه می‌تواند به خواننده بعدی که همین امروز VPS گرفته، چند ساعت آزمون‌وخطا را صرفه‌جویی کند. 🖥️