آموزشی لینوکس

سرور مجازی روشن است اما سایت باز نمی‌شود؛ چک‌لیست کامل عیب‌یابی

 

فهرست مطالب

سایت باز نمی‌شود ولی VPS روشن است؟ چک‌لیست کامل پیدا کردن علت

گاهی وارد پنل مدیریت VPS می‌شوید و می‌بینید سرور کاملاً روشن و فعال است، اما وقتی آدرس سایت را در مرورگر وارد می‌کنید، صفحه باز نمی‌شود. ممکن است مرورگر خطای Connection Refused، Connection Timed Out، 502 Bad Gateway، 503 Service Unavailable یا حتی خطای DNS نمایش دهد.

روشن بودن سرور به‌تنهایی به معنی سالم بودن وب‌سایت نیست. برای نمایش یک سایت، چندین بخش مختلف باید به‌درستی کار کنند؛ از DNS و شبکه گرفته تا وب‌سرور، فایروال، PHP، دیتابیس و تنظیمات دامنه. در این آموزش یک چک‌لیست کامل و مرحله‌به‌مرحله برای پیدا کردن علت مشکل در اختیار شما قرار می‌دهیم.

این راهنما برای چه سرورهایی مناسب است؟

این آموزش برای بیشتر VPSهای لینوکسی قابل استفاده است، از جمله:

🔹 Ubuntu 20.04

🔹 Ubuntu 22.04

🔹 Ubuntu 24.04 و نسخه‌های جدیدتر

🔹 Debian 10، 11، 12 و 13

🔹 Rocky Linux

🔹 AlmaLinux

🔹 CentOS

🔹 RHEL

🔹 Oracle Linux

🔹 Fedora Server

🔹 openSUSE

🔹 SUSE Linux Enterprise

⚠️ توجه: نام بعضی سرویس‌ها و دستورات در توزیع‌های مختلف ممکن است متفاوت باشد. در این مقاله بیشتر از دستورات رایج در Ubuntu و Debian استفاده شده است.

قبل از شروع؛ مشکل دقیقاً چیست؟

اول باید مشخص کنید سایت چه خطایی نشان می‌دهد. نوع خطا می‌تواند مسیر عیب‌یابی را بسیار کوتاه‌تر کند. بنابراین قبل از تغییر تنظیمات، متن دقیق خطا را یادداشت کنید.

خطاهای رایج و علت‌های احتمالی

DNS_PROBE_FINISHED_NXDOMAIN ← مشکل DNS یا ثبت نشدن دامنه

Connection Timed Out ← فایروال، شبکه، پورت یا خاموش بودن سرویس

Connection Refused ← وب‌سرور روی پورت موردنظر اجرا نیست

404 Not Found ← فایل یا مسیر سایت پیدا نمی‌شود

403 Forbidden ← مجوز فایل یا تنظیمات دسترسی

500 Internal Server Error ← مشکل PHP، کد سایت یا تنظیمات سرور

502 Bad Gateway ← مشکل PHP-FPM یا سرویس Backend

503 Service Unavailable ← سرویس وب یا Backend در دسترس نیست

صفحه سفید ← خطای PHP یا مشکل برنامه

سایت با IP باز می‌شود ولی با دامنه نه ← معمولاً DNS یا Virtual Host

مرحله اول: مطمئن شوید VPS واقعاً در دسترس است

اول با SSH به سرور متصل شوید. مثلاً:

ssh root@SERVER_IP

اگر SSH نیز کار نمی‌کند، مشکل احتمالاً فقط مربوط به سایت نیست و باید ابتدا وضعیت شبکه، SSH و فایروال را بررسی کنید. اگر وارد سرور شدید، وضعیت کلی سیستم را بررسی کنید:

uptime
free -h
df -h

اگر پارتیشن اصلی تقریباً ۱۰۰ درصد پر شده باشد، بسیاری از سرویس‌ها ممکن است دچار مشکل شوند. اگر چیزی شبیه این مشاهده کردید:

/dev/sda1 50G 50G 0 100% /

ابتدا باید فضای آزاد ایجاد کنید.

مرحله دوم: بررسی کنید IP سرور درست است

گاهی دامنه به IP اشتباه اشاره می‌کند. IPهای سرور را مشاهده کنید:

ip addr
hostname -I

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

مرحله سوم: بررسی DNS دامنه

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

dig example.com
nslookup example.com

باید IP برگشتی با IP سرور شما مطابقت داشته باشد. مثلاً اگر VPS شما این IP را دارد:

185.100.100.10

رکورد A دامنه باید به همین IP اشاره کند. ساختار معمول DNS به این شکل است:

example.com A SERVER_IP
www.example.com A SERVER_IP

البته بسته به تنظیمات DNS ممکن است www به شکل CNAME تنظیم شده باشد.

مرحله چهارم: بررسی کنید پورت ۸۰ باز است

سایت‌های HTTP معمولاً از پورت ۸۰ استفاده می‌کنند. برای بررسی پورت‌های در حال Listen:

ss -tulpn

به دنبال چیزی شبیه این باشید:

LISTEN 0 511 0.0.0.0:80

اگر سایت HTTPS است، پورت ۴۴۳ نیز باید فعال باشد:

LISTEN 0 511 0.0.0.0:443

اگر هیچ سرویسی روی پورت ۸۰ یا ۴۴۳ وجود ندارد، احتمالاً وب‌سرور اجرا نشده یا روی پورت دیگری تنظیم شده است.

مرحله پنجم: بررسی وضعیت Apache

اگر از Apache استفاده می‌کنید:

systemctl status apache2

اگر سرویس خاموش باشد:

systemctl start apache2

برای اجرای خودکار Apache بعد از ریبوت:

systemctl enable apache2

بعد دوباره وضعیت را بررسی کنید:

systemctl status apache2

بررسی صحت تنظیمات Apache

قبل از Restart کردن Apache بهتر است تنظیمات آن را تست کنید:

apache2ctl configtest

اگر نتیجه این باشد:

Syntax OK

ساختار کلی تنظیمات صحیح است. اگر خطایی مشاهده کردید، ابتدا همان خطا را برطرف کنید.

مرحله ششم: بررسی وضعیت Nginx

اگر به‌جای Apache از Nginx استفاده می‌کنید:

systemctl status nginx

برای تست تنظیمات:

nginx -t

در صورت صحیح بودن تنظیمات معمولاً پیام موفقیت نمایش داده می‌شود. بعد از اصلاح تنظیمات:

systemctl restart nginx

مرحله هفتم: بررسی کنید Apache و Nginx همزمان پورت ۸۰ را نگرفته باشند

یکی از مشکلات رایج این است که کاربر هم Apache و هم Nginx را نصب کرده و هر دو قصد دارند روی پورت ۸۰ اجرا شوند. بررسی کنید چه سرویسی پورت ۸۰ را گرفته است:

ss -ltnp | grep :80

همچنین برای پورت ۴۴۳:

ss -ltnp | grep :443

اگر دو سرویس برای یک پورت رقابت کنند، ممکن است یکی از آنها اجرا نشود.

🚀 سرور مجازی پرسرعت و پایدار می‌خواهید؟

اگر سایت شما روی VPS فعلی مدام قطع می‌شود، صفحات دیر باز می‌شوند یا وب‌سرور روی پورت درست Listen نمی‌کند، ریشه مشکل معمولاً در منابع محدود، دیسک کند و پشتیبانی ضعیف است. ایرانیکاسرور با منابع اختصاصی CPU و RAM، دیسک NVMe، پهنای باند نامحدود، آپ‌تایم ۹۹.۹٪ و پشتیبانی ۲۴/۷ تجربه‌ای بدون قطعی برای سایت شما فراهم می‌کند.

تماس با پشتیبانی: 91302467-021 | ایرانیکاسرور

مرحله هشتم: بررسی فایروال سرور

حتی اگر Apache یا Nginx به‌درستی اجرا شده باشد، ممکن است فایروال اتصال ورودی را مسدود کند. اگر از UFW استفاده می‌کنید:

ufw status

باید پورت‌های موردنیاز باز باشند. برای وب‌سایت معمولاً:

ufw allow 80/tcp
ufw allow 443/tcp

سپس:

ufw status

⚠️ هشدار: قبل از تغییر تنظیمات فایروال، مطمئن شوید دسترسی SSH خود را مسدود نمی‌کنید.

مرحله نهم: بررسی فایروال سرویس‌دهنده VPS

گاهی مشکل از فایروال داخل لینوکس نیست. برخی ارائه‌دهندگان VPS دارای فایروال یا Security Group در پنل خود هستند. در پنل سرویس‌دهنده بررسی کنید که پورت‌های زیر اجازه دسترسی داشته باشند:

🔹 TCP 80

🔹 TCP 443

اگر فایروال خارجی پورت ۸۰ یا ۴۴۳ را مسدود کرده باشد، سایت از اینترنت قابل دسترسی نخواهد بود.

مرحله دهم: تست سایت از داخل خود سرور

این مرحله بسیار مهم است. روی خود VPS اجرا کنید:

curl -I http://127.0.0.1

اگر پاسخ HTTP دریافت کردید، مثلاً:

HTTP/1.1 200 OK

یعنی وب‌سرور حداقل در داخل سرور پاسخ می‌دهد. اگر سایت HTTPS است:

curl -I https://127.0.0.1

ممکن است به دلیل SSL و تنظیمات Virtual Host خطا دریافت کنید؛ بنابراین در این حالت بهتر است دامنه را نیز تست کنید. مثلاً:

curl -I https://example.com

مرحله یازدهم: بررسی Virtual Host یا Server Block

ممکن است وب‌سرور اجرا باشد اما دامنه به سایت صحیح متصل نشده باشد. در Apache، فایل‌های Virtual Host معمولاً در این مسیر قرار دارند:

/etc/apache2/sites-available/

لیست آنها:

ls /etc/apache2/sites-available/

سپس Virtual Host فعال را بررسی کنید. برای مشاهده سایت‌های فعال:

ls /etc/apache2/sites-enabled/

در Nginx معمولاً تنظیمات سایت‌ها در مسیرهایی مانند:

/etc/nginx/sites-available/
/etc/nginx/sites-enabled/

مرحله دوازدهم: بررسی DocumentRoot

یکی از مشکلات رایج این است که Apache یا Nginx به پوشه اشتباه اشاره می‌کند. مثلاً ممکن است فایل‌های سایت شما در:

/var/www/example

باشند، اما Apache همچنان از:

/var/www/html

سایت را سرو کند. در Apache باید مقدار DocumentRoot را بررسی کنید. مثلاً:

<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example
</VirtualHost>

بعد از تغییر تنظیمات:

apache2ctl configtest

و سپس:

systemctl reload apache2

مرحله سیزدهم: بررسی وجود فایل index

اگر وب‌سرور فعال است اما سایت نمایش داده نمی‌شود، بررسی کنید فایل اصلی سایت وجود داشته باشد. مثلاً:

ls -lah /var/www/html

ممکن است فایل اصلی یکی از این موارد باشد:

🔹 index.html

🔹 index.php

اگر سایت PHP است و فایل index.php وجود ندارد، ممکن است صفحه موردنظر نمایش داده نشود.

مرحله چهاردهم: بررسی مجوز فایل‌ها

تنظیمات اشتباه Permission می‌تواند باعث خطاهای 403 Forbidden یا مشکلات اجرای سایت شود. برای مشاهده مجوزها:

ls -lah /var/www/html

مالک فایل‌ها نیز اهمیت دارد. در بعضی تنظیمات Apache، مالکیت فایل‌ها می‌تواند با کاربر وب‌سرور هماهنگ شود. برای Apache در Ubuntu معمولاً کاربر وب‌سرور:

www-data

اما قبل از تغییر مالکیت کل پروژه، بهتر است ساختار برنامه و نیازهای آن را بررسی کنید؛ تغییر اشتباه Permission ممکن است مشکلات امنیتی یا اجرایی ایجاد کند.

مرحله پانزدهم: اگر سایت PHP است، PHP را بررسی کنید

ممکن است Apache سالم باشد اما PHP اجرا نشود. نسخه PHP را بررسی کنید:

php -v

اگر از PHP-FPM استفاده می‌کنید، وضعیت سرویس را بررسی کنید. برای مثال:

systemctl status php8.1-fpm

شماره نسخه را متناسب با نسخه نصب‌شده تغییر دهید. برای پیدا کردن سرویس‌های PHP:

systemctl list-units –type=service | grep php

مرحله شانزدهم: بررسی PHP-FPM و خطای 502

اگر Nginx یا Apache به PHP-FPM متصل است و خطای:

502 Bad Gateway

می‌بینید، وضعیت PHP-FPM را بررسی کنید. مثلاً:

systemctl status php8.1-fpm

اگر سرویس متوقف شده است:

systemctl restart php8.1-fpm

سپس وب‌سرور را نیز بررسی کنید.

مرحله هفدهم: بررسی دیتابیس MySQL یا MariaDB

اگر سایت به دیتابیس متصل است، سالم بودن MySQL یا MariaDB را بررسی کنید. برای MySQL:

systemctl status mysql

برای MariaDB:

systemctl status mariadb

اگر دیتابیس اجرا نمی‌شود:

systemctl restart mysql

یا در صورت استفاده از MariaDB، سرویس mariadb را ری‌استارت کنید.

مرحله هجدهم: بررسی لاگ‌های خطا

لاگ‌ها بهترین راهنما برای پیدا کردن ریشه مشکل هستند. برای مشاهده لاگ خطای Nginx:

tail -f /var/log/nginx/error.log

و برای Apache:

tail -f /var/log/apache2/error.log

در بسیاری از موارد، خطای دقیق در همین لاگ‌ها ثبت شده و مسیر عیب‌یابی را بسیار کوتاه می‌کند.

🎯 جمع‌بندی و توصیه‌های کلیدی

روشن بودن VPS به‌معنای سالم بودن وب‌سایت نیست. برای رفع مشکل «سایت باز نمی‌شود»، این مسیر را به ترتیب طی کنید:

🔹 وضعیت SSH و دسترسی به سرور را بررسی کنید.

🔹 DNS دامنه را چک کنید (رکورد A و CNAME).

🔹 پورت‌های ۸۰ و ۴۴۳ را با ss -tulpn بررسی کنید.

🔹 وضعیت Apache یا Nginx را چک کنید.

🔹 فایروال سرور و فایروال پنل سرویس‌دهنده را بررسی کنید.

🔹 Virtual Host و DocumentRoot را کنترل کنید.

🔹 PHP، PHP-FPM و دیتابیس را بررسی کنید.

🔹 لاگ‌های خطا را فراموش نکنید: /var/log/nginx/error.log یا /var/log/apache2/error.log

💡 توصیه: اگر بعد از طی این مراحل همچنان مشکل پابرجا بود، با پشتیبانی ایرانیکاسرور تماس بگیرید. تیم فنی ما به‌صورت ۲۴/۷ آماده بررسی و رفع مشکل شماست.

🛠️ مشکل سرور خود را به ما بسپارید

اگر در هر یک از مراحل بالا به مشکل خوردید یا نیاز به کانفیگ تخصصی سرور دارید، همین حالا درخواست خود را ثبت کنید. کارشناسان ما در ایرانیکاسرور سریعاً بررسی و راه‌حل ارائه می‌دهند.

تماس با پشتیبانی: 91302467-021 | ایرانیکاسرور

 

🎯 چالش آموزشی
مباحثی که در این مقاله یاد گرفتید را در عمل پیاده‌سازی کنید و نتیجه را با ما به اشتراک بگذارید.
شروع چالش

💬 دیدگاه‌ها 0

هنوز دیدگاهی ثبت نشده است. اولین نفری باشید که نظر می‌دهید!

✍️ دیدگاه خود را بنویسید