هر وب سایتی، بر روی یک سرور قرار گرفته است. (سرور یک کامپیوتر است که دسترسی به اینترنت دارد و IP ی معتبر دارد و خدمات اینترنتی ارائه می دهد.)
در ضمن، ممکن است بر روی یک سرور، چند تا وبسایت وجود داشته باشد.
همچنین ممکن است یک سرور، چند تا آدرس IP داشته باشد. اصطلاحا می گوییم چند تا Network interface دارد.
هر وب سایتی، معمولا داری یک نام دامنه است (مثلا www.example.com)
هنگامی که شما آدرس یک سایت را در مرورگر تایپ می کنید و وارد سایت می شوید، اتفاقات زیر می افتد:
1 – ابتدا باید آدرس سایت به آدرس IP تبدیل شود. زیرا بدون داشتن IP ، هرگز نمی توان به کامپیوتری در شبکه دسترسی داشت. قبل از هر چیز باید مشخص شود که آدرس IP ی کامپیوتر مورد نظر شما چیست.
برای این منظور، از DNS Server استفاده می شود. کامپیوتر شما به DNS Server متصل می شود و آدرس سایت را (مثلا www.example.com را) به آن ارسال می کند. DNS Server هم موظف است که آدرس IP ی آن را برگرداند.
به این ترتیب، آدرس IP ی سایت مورد نظر شما به دست می آید.
اما، قبل از این که کامپیوتر شما به DNS Server متصل شود، ابتدا بررسی می کند که آیا آدرس مورد نظر و IP ی معادل آن، قبلا Cache شده است یا خیر.
در صورتی که پیش از این ، یک بار آدرس IP ی آن سایت مشخص شده باشد و در سیستم شما Cache شده باشد، دیگر مزاحم DNS Server نمی شود. بلکه مستقیما از درون Cache آن را بازیابی می کند.
در ویندوز، برای این که Cache مربوط به DNS را پاک کنید و سیستم را مجبور کنید مجددا به DNS Server متصل شود، کافی است در خط فرمان CMD دستور زیر را وارد کنید:
ipconfig /flushdns
——
کامپیوتر شما همچنین، قبل از این که به DNS Server متصل شود، فایلی به نام فایل hosts را بررسی می کند. در فایل hosts نام دامنه ی سایت ها و IP ی معادل آن ها نوشته شده است. در صورتی که Ip ی سایت مورد نظر در آن موجود بود، دیگر به DNS متصل نمی شود و آدرس IP را مستقیما از درون فایل hosts استفاده می کند.
فایل hosts
در ویندوز 7 آدرس فایل hosts این است:
C:WindowsSystem32driversetchosts
در لینوکس هم آدرس آن به این صورت است:
/etc/hosts
برای ویرایش فایل hosts در ویندوز 7 کافی است در منوی Start برنامه ی Notepad را پیدا کنید. روی آن راست کلیک کنید و Run as administrator را انتخاب کنید. سپس در پنجره ی Notepad کلید Ctrl + O را بزنید و در پنجره ی Browse که باز می شود، فایل hosts را با توجه به مسیر فوق الذکر انتخاب کنید.
در لینوکس هم کافی است از دستور زیر استفاده کنید:
sudo vim /etc/hosts
در درون فایل hosts می توانید خیلی کار ها انجام دهید که بعضا می تواند جذاب باشد!
فرمت فایل hosts به این صورت است که خطوطی که با # شروع می شوند، Comment محصوب می شوند و اثری ندارند.
سایر خطوط از دو قسمت تشکیل شده اند که با یک فضای خالی مثل space یا tab از هم جدا شده اند: آدرس IP و نام دامنه. مثلا:
192.168.10.10 www.test.com
خط فوق به این معنی است که سایت www.test.com دارای آدرس Ip ی 192.168.10.10 می باشد.
به این ترتیب، هرگاه شما آدرس www.test.com را باز کنید، سیستم کاری به DNS نخواهد داشت و مستقیما آدرس IP ی 192.168.10.10 را باز خواهد کرد.
برخی از فوایدی که این کار دارد عبارتند از:
در صورتی که آدرس مورد نظر در فایل hosts موجود نبود، آن گاه از DNS Server استفاده می شود.
2 – هنگامی که آدرس IP ی سایت مورد نظر شما (که در مرورگر وارد کرده اید) مشخص شد، مرورگر می تواند به سایت متصل شود و محتویات آن را دریافت کند.
اما، نکته این جاست که ممکن است یک سرور، با یک آدرس IP چند تا سایت را میزبانی کند. به این معنی که چند تا سایت بر روی همان سرور و با همان IP وجود داشته باشد. به عبارت دیگر، ممکن است که آدرس Ip ی چندین سایت یکسان باشد.
به این ویژگی، Shared hosting می گویند. هاستینگ اشتراکی و یا Virtual hosting میزبانی مجازی
هنگامی که مرورگر آدرس Ip ی سایت را به دست می آورد و به سرور متصل می شود، باید به طریقی به سرور اطلاع دهد که کدام سایت را می خواهد.
برای این منظور، مرورگر شما، یک هدر HTTP به نام host را به سرور ارسال می کند.
آن چه که مرورگر به وب سرور ارسال می کند، چیزی شبیه زیر است:
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0 AlexaToolbar/alxf-2.15
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Cookie: SESS0477099b084e7aee1ecf43e5dd4d9512=l0-O-lzs4ltRf3B6hJVVTh1DoyCFj1Qo3Cjs65L8Np0; SESSaee8cf9fa83d1d0bab0fa3a76622e624=sv0a23jp0moq5bmfjarbl6n127; doxygen_width=300; SESSf0c35bf116e5bf061605c1b3d4d5b6c3=zxtt9_ztYWRbKfH8TmznFtKiajQEDDTq2keYmXbFkX4; SESSf0eb9d8e4a8f983887cb2e810d8a056b=emml29jdirmu79qc3q0q9fipv6; DrupalAdminToolbar=expanded%3D1%26activeTab%3Dadmin-menu
خط اول عنوان تقاضا است که شامل 3 بخش می شود:
خطوط بعدی Header ها هستند. به آن ها هدر های HTTP گفته می شود. هر هدر در یک سطر قرار می گیرد. هر هدر از یک نام و یک مقدار تشکیل شده است که با : از هم جدا شده اند.
من نام هدر ها را پررنگ کرده ام.
برخی از پرکاربرد ترین هدر های HTTP عبارتند از:
این اتفاقاتی بود که بر روی Client یعنی کامپیوتر شما و مرورگرتان اتفاق می افتند.
اما در مورد آن چه که بر روی سرور اتفاق می افتد. فرض من بر این است که سرور با سیستم عامل لینوکس Ubuntu و یا ویندوز کار می کند. گرچه سیستم عامل های دیگر هم مشابه هستند.
هم چنین فرض بر این است که وب سرور مورد استفاده، Apache است (در ویندوز، از XAMPP استفاده می کنم.)
در صورتی که از فایل hosts استفاده می کنید که هیچ، به قسمت بعد از “تنظیمات مربوط به DNS” بروید.
اما اگر قرار است که واقعا یک دامنه را ثبت کنید، باید DNS Server هم تنظیم باشد.
تنظیمات مربوط به DNS:
قبل ار هر چیز باید یک دامنه را ثبت کنید برای این منظور، باید به یکی از شرکت های ثبت دامنه پول پرداخت کنید تا فورا دامنه فعال شود. (البته به جز دامنه های IR که به خاطر پیشرفتگی بیش از حد !!! باید یک شبانه روز صبر کنید تا به صورت دستی توسط مامور مربوطه بررسی و ثبت شود)
سپس به شما یک کنترل پنل دامنه (Domain Control Panel) داده می شود. اگر داده نشد، بدانید که سر شما کلاه گذاشته شده و هر طور شده کنترل پنل دامنه را بگیرید. (برخی شرکت ها نمی دهند!)
در کنترل پنل دامنه، یک جا دارد که آدرس DNS Server های دامنه را وارد کنید. (وقتی مرورگر می خواهد آن سایت را باز کند، به این DNS Server های متعلق به این دامنه، متصل می شود)
در این قسمت، باید آدرس DNS Server تان را بدهید. باید این آدرس از قبل قابل resolve باشد. یعنی بدون نیاز به این که DNS Server شما روشن باشد، باید آدرس آن قابل تبدیل به IP باشد! اگر چنین نیست، می توانید از Child DNS Server استفاده کنید. به این ترتیب که دو تا Child dns server به نام ns1 و ns2 درست می کنید و آدرس Ip ی سرورتان را به آن ها اختصاص می دهید. سپس در تنظیمات DNS در کنترل پنل دامنه، آدرس Child DNS Server های خودتان را وارد می کنید. (مثلا من برای سایت خودم به آدرس www.hejazee.com از DNS های ns1.hejazee.com و ns2.hejazee.com استفاده کنم.) برخی از مردم، به این کار، استفاده از DNS اختصاصی هم می گویند. ولی من این اصطلاح را صحیح نمی دانم
قابل توجه است که برخی شرکت های کلاه بردار، کنترل پنل دامنه را به شما نمی دهند، و در عوض از شما پول می گیرند تا برایتان به قول خودشان DNS Server اختصاصی تنظیم کنند!! مواظب باشید گول نخورید! این کار اصلا ربطی به آن شرکت ندارد و نباید هم پولی برای آن به شرکت بدهید. خودتان باید بتوانید از کنترل پنل دامنه این کار را انجام دهید.
—————–
پس از این که در کنترل پنل دامنه، DNS ها را تنظیم کردید (معمولا حداقل 2 تا DNS باید تنظیم کنید. اجباری نیست IP ی آن ها متفاوت باشد. گرچه در اصل باید IP ها متفاوت باشد. ولی اجباری نیست)
اکنون باید بر روی سرورتان DNS Server را نصب کنید. برای این منظور، پکیج bind9 را در Ubuntu نصب کنید. (جزییات کار و تنظیم DNS را در این جا نمی توانم بگویم. فقط مروری عرض می کنم زیرا می تواند خیلی بحث پیچیده و خیلی طولانی باشد)
سپس باید برای هر یک از دامنه هایی که میزبانی می کنید، یک Master zone ایجاد کنید و در درون آن، به ازای هر یک از Sub domain ها و خود دامنه، یک A Record ایجاد کنید. رکورد های مختلفی وجود دارد که اینجا جای بحث راجع به آن ها نیست.
خلاصه باید برای هر دامنه، یک Master zone داشته باشید.
پس از این که DNS هم پیکر بندی شد، اکنون اگر دامنه ی مورد نظر را در مرورگر باز کنید، آدرس IP ی سرور شما باز می شود و هدر Host هم توسط مرورگر به سرور ارسال می شود.
اکنون باید Apache را نصب و پیکربندی کنید.
اگر سرور شما مبتنی بر Ubuntu است، نام پکیج آپاچی عبارت است از apache2
باید آن را نصب کنید:
|
1
|
sudo apt-get install apache2
|
پیکربندی Apache کار سختی نیست (گرچه می تواند سخت هم باشد!)
برای استارت و استپ کردن Apache هم دستورات زیر استفاده می شوند:
|
1
2
3
4
|
sudo service apache2 start
sudo service apache2 stop
sudo service apache2 restart
sudo service apache2 reload
|
اگر هم سرور شما ویندوزی است، می توانید XAMPP را نصب کنید. اگر XAMPP را بر روی ویندوز نصب کنید، مزیتی که برای شما دارد، این است که خیلی ساده و آسان است و همه موارد مورد نیازتان به یکباره نصب می شوند:
Apache, PHP, Mysql, perl, gd, …, …., All needed apache modules, All needed php modules, etc…, phpmyadmin, …
آن چه در این جا برای ما مهم است و در همه ی سیستم عمال ها هم مشترک است، فایل پیکربندی Apache است.
در سیستم عامل Redhat و زیر مجموعه های آن، نام فایل httpd.conf است
در Debian و Ubuntu نام فایل apache2.conf است و آدرس آن هم /etc/apache2/apache2.conf می باشد.
در XAMPP بر روی ویندوز هم، فایل پیکربندی Apache در آدرس زیر واقع است:
C:xamppapacheconfhttpd.conf
نکته ای که حائز اهمیت است، این است که فایل پیکربندی Apache می تواند فایل های دیگری را هم Include کند. به این معنی که فایل پیکربندی Apache ممکن است بیش از یک فایل باشد و از چند قسمت تشکیل شده باشد. معمولا این کار را می کنند تا تنظیمات Apache تقسیم بندی و مرتب شود.
از آن جایی که به احتمال زیاد، مخاطبین این مطلب، اکثرا با ویندوز راحت تر هستند، پیکربندی Apache را در ویندوز و به کمک XAMPP توضیح می دهم. ولی در لینوکس هم مشابه همین است.
در فایل پیکربندی Apache خطوطی که به # شروع می شوند، Comment می باشند و اهمیتی ندارد (فقط راهنما هستند)
دستور Listen
دستور Listen در فایل پیکربندی Apache مشخص می کند که آپاچی باید بر روی کدام IP (ها) و بر روی کدام پورت (ها) گوش دهد. ممکن است این دستور چند بار استفاده شود. مثال:
Listen 80
بر روی تمام IP ها (Network Interfaces) گوش می دهد و روی پورت 80 کار می کند.
Listen 127.0.0.1:80
Listen 127.0.0.1:443
فقط بر روی Loopback interface گوش می دهد (یعنی فقط بر وی localhost قابل دسترسی است و از بیرون قابل دسترسی نیست) و روی پورت 80 (http) و 443 (https) کار می کند.
(آدرس IP بیشتر هنگامی به کار می آید که سرور شما، چند تا IP داشته باشد)
دستور ServerName
نام سرور و آدرس IP را مشخص می کند. مثلا:
ServerName localhost:80
و یا
ServerName hejazee.com
در صورتی که سرور شما، فقط یک سایت را میزبانی کند، تنظیم این مقدار زیاد مهم نیست زیرا Apache به صورت خودکار آن را حدس می زند. اما اگر چند تا سایت را بر روی سرور میزبانی کنید، اهمیت این دستور مشخص می شود.
دستور DocumentRoot
مشخص می کند که هنگامی که شما نام دامنه را در مرورگر وارد می کنید، چه فایلی یا چه پوشه ای در سرور باید باز شود. معولا در لینوکس آدرس آن /var/www است:
DocumentRoot /var/www
در XAMPP ویندوز هم:
DocumentRoot “E:/xampp/htdocs”
(به جای از / استفاده کنید.)
در صورتی که می خواهید چند تا سایت را بر روی یک سرور میزبانی کنید، باید از Virtual host ها استفاده کنید.
در Ubuntu معمولا Virtual host ها را در پوشه ی /etc/apache2/sites-enabled/ تعریف می کنند.
در XAMPP ویندوز هم، Virtual host ها را باید در فایل زیر تعریف کنید:
E:xamppapacheconfextrahttpd-vhosts.conf
فایل فوق را با Notepad باز کنید و آن را ویرایش کنید.
ساختار یک Virtual Host:
<VirtualHost *:80> DocumentRoot "E:/xampp/htdocs/www.test.com" ServerName test.com ServerAlias www.test.com </VirtualHost>
*:80 آدرس IP و شماره پورتی است این VirtualHost بر روی آن کار می کند. * به این معنی است که بر روی تمام IP ها کار می کند.
ServerName مشخص می کند این VirtualHost برای سایت test.com است. یعنی اگر مرورگر هدر Host را با مقدار test.com ارسال کرد، این VirtualHost باید مورد استفاده قرار بگیرد.
ServerAlias مشخص می کند که به جز ServerName ، چه Host های دیگری هم به این VirtualHost تعلق دارند.
DocumentRoot هم مسیر ریشه ی سایت test.com را مشخص می کند.
در انتها فراموش نکنید که پس از ویرایش پیکربندی Apache باید Apache را restart و یا reload کنید تا تنظیمات اعمال شود.
به این ترتیب شما توانستید که یک سرور درست کنید که چندین سایت را میزبانی می کند. تشخیص سایت هم بر اساس هدر host می باشد و با VirtualHost ها Match می شود.