در این آموزش قصد داریم یکی از ترفندهای خیلی پرکاربرد در زمینه مدیریت و طراحی سایت رو با هم مرور کنیم.
گاهی پیش میاد که نیاز داریم بدون تغییر نیم سرور دامنه، سایت خودمون رو از هاست یا سروری به جز هاست و سرور اصلی لود کنیم و یا در حین انتقال سرویس هاست، میخوایم قبل از تنظیم نیم سرور مطمئن بشیم که همه چیز درست انجام شده و مشکلی وجود ندارد.
در تمامی سیستمعاملها، چه ویندوزی چه لینوکسی و فارغ از اینکه اون سیستم عامل بر روی سیستم شخصی شما نصب شده یا سرور، یک فایل با نام hosts وجود داره که در زمان لود یک وبسایت از طریق مرورگر، پیش از استعلام آی پی مقصد دامنه(DNS Query) این فایل hosts هست که فراخوانی میشه و در صورتی که شما آدرس مشخصی رو برای دامنه مد نظر خودتون مشخص کرده باشید، اطلاعات دامنه از همون آدرس آی پی لود میشود.
شما میتونید فایل hosts رو در ویندوز از مسیر زیر پیدا کنید:
c:\windows\system32\drivers\etc
همچنین در سیستم عامل Ubuntu این فایل در مسیر زیر قرار داده شده:
/etc/hosts
برای باز کردن و ویرایش این فایل، نیاز داریم که حتما دسترسی administrator یا root داشته باشیم.
اما قبل از اون بیاید ببینیم این فایل دقیقا چه کاری انجام میده!
هر زمان که شما یک آدرس اینترنتی (URL) رو باز میکنید، سیستم شما و در واقع مرورگری که استفاده میکنید، از روشهای مختلفی سعی میکنه یک آدرس آی پی متناظر با اون دامنه رو پیدا کنه.
اینکه این روشها چه هستند و ترتیب اونها به چه صورتی هست در این مقاله نمیگنجد ولی اولین اقدامی که انجام میشه، بررسی فایل Hosts هست. پس اگر ما هر آدرسی رو در این فایل با یک آی پی مرتبط کنیم، سیستم ما سایر روشها رو بررسی نمیکنه و همون دستور رو اجرا میکنه.
برای ویرایش فایل hosts در لینوکس باید از sudo در ابتدای دستور خودمون استفاده کنیم. مثلا:
sudo nano /etc/hosts
در ویندوز دو راهکار رو خدمتتون معرفی میکنیم که دومی راحتتر هست!
شما میتونید ابتدا برنامه notepad رو به صورت run as administrator باز کنید و سپس از طریق File –> Open با وارد کردن مسیری که در ابتدای همین آموزش اشاره شد، فایل hosts رو باز بفرمایید. دقت داشته باشید نرم افزار نوتپد بصورت پیشفرض فایلهای متنی رو باز میکنه و برای اینکه فایل مورد نظر خودمون رو در لیست فایلها مشاهده کنیم باید از نوار کشویی روبروی file name ، گزینهی Text Documents رو به All Files تغییر بدید.
راه دوم به این صورت هست که شما با کلید ترکیبی Win+R صفحهی run رو باز میکنید و با تایپ کردن عبارت drivers و زدن دکمهی اینتر، وارد مسیر زیر میشید:
C:\windows\system32\drivers
آشنا نیست؟
نصف راه باز کردن فایل hosts رو رفتیم! حالا کافیه که پوشهی etc رو باز کنید و اونجا فایل زیبا(!)ی hosts رو میبینیم. توی این روش شما باید نرم افزار notepad++ رو نصب کرده باشید. با کلیک راست روی فایل و انتخاب گزینه edit with notepad++ وارد اصل ماجرا میشیم:
خب، حالا توی صفحهی نوت پد یکسری اطلاعات رو میتونیم ببینیم که بصورت کامنت شده هستن.
خیلی ساده اگر بخوایم صحبت کنیم، شما برای ارجاع یک آدرس به یک آی پی خاص (مثلا آی پی سرور جدید) ، باید اول آدرس آی پی مورد نظر، و با یک فاصله، دامنه یا آدرسی که میخواین به اون آی پی اشاره کنه رو وارد کنید. سپس کافیه فایل رو ذخیره کنید.
به همین راحتی!
اگر از روش دوم استفاده کرده باشید، با ذخیرهی فایل، پیامی ظاهر میشه که به شما اعلام میکنه برای تغییر این فایل باید با دسترسی ادمین وارد بشید و با کلیک کردن روی گزینهی yes ، یکبار notepad++ بسته میشه و باز میشه و دوباره باید دکمه ذخیره یا Ctrl+S رو بزنید.
کار ما همین جا تموم نمیشه! حالا باید بررسی کنیم که آیا این تغییرات اعمال شده یا نه!
قبل از اون بیاید یک مثال رو با هم مرور کنیم تا راحتتر بتونیم در موردش صحبت کنیم.
فرض کنید میخوایم آدرس bertina.ir به آدرس آی پی 1.1.1.1 وصل کنیم!
پس در انتهای فایل hosts عبارت زیر رو وارد میکنیم:
1.1.1.1 bertina.ir:443
شاید براتون سوال پیش بیاد که چرا اون دو نقطه و 443 رو اضافه کردیم!
دلیلش این هست که سایت برتینا با گواهی SSL لود میشه و اگر توی مقصد گواهی خودمون رو هم وارد کرده باشیم یا به عبارت بهتر، اگر سایت خودمون رو به صورت فول بک آپ به سرور جدید منتقل کنیم، دامنه اصلی سایت با پروتکل HTTPS و بر روی پورت 443 لود میشه! پس لازمه که این مقدار رو هم وارد کنیم.
شاید با دیدن تصویر بالا باز براتون سوال پیش بیاد که چرا خط اول رو وارد کردم؟
دلیلش این هست که برای تست اعمال تغییرات، ما از Ping استفاده میکنیم و این سرویس روی پروتکل وب کار نمیکنه پس موقع اجرای دستور ping ، پورت 80 یا 443 استفاده نمیشه.
نتیجه رو ببینیم:
طبیعتا اگر روی 1.1.1.1 دامنه bertina.ir تعریف شده باشه، مرورگر اطلاعات موجود در اون سرور رو به ما نمایش میده و دیگه سراغ سرور اصلی سایت برتینا نخواهد رفت.
پس وقتی صحبت از آدرس اینترنتی یا URL میکنیم دقیقا منظورمون اون مسیری هست که مرورگر برای نمایش یک سایت یا لینک باز میکنه و این مورد شامل پروتکل استفاده شده یا www هم میشه. مثالهای زیر رو ببینید:
پس برای اینکه مطمئن بشیم دامنه یا آدرس سایت ما به آی پی مورد نظر روی سیستم خودمون متصل شده یا نه، از ping میتونیم کمک بگیریم.
اگر بعد از اینکه دستور ping رو اجرا کردید، تغییری ندیدین و مطمئن هستین که فایل hosts رو درست تنظیم کردین، دستور زیر رو در CMD وارد کنید:
ipconfig /flushdns
این دستور باعث میشه کش مربوط به DNS سیستم شما خالی شده و با استعلام دامنه، روند پیدا کردن آی پی متناظر از ابتدا شروع بشه.
همینطور، زمانی که میخواهید دامنه خودتون رو در مرورگر باز کنید، یا کش مرورگر رو خالی کنید یا از Private window / Incognito window استفاده کنید.
در آخر امیدوارم که این مقاله براتون مفید بوده باشه و هر نقطهنظر یا پیشنهاد و انتقادی دارید برای ما کامنت کنید.
ممنون از همراهی شما – واحد پشتیبانی فنی برتینا