منبع اصلی نوشتار زیر در این لینک قرار دارد

تنظیم هاست مجازی روی ابونتو 14.04

Apache نام وب سرور متن باز است که همراه با php و mysql در تمامی سیستم های عامل قابل نصب می باشد و بستری را برای میزبانی صفحه های وب فراهم می کند. سروری که روی آن LAMP نصب و دارای یک کارت شبکه باشد به طور معمول می تواند یک وب سایت را میزبانی کند. اما اگر بخواهید سرور شما چندین سایت را پاسخ گو باشد، باید از Virtual Host ها استفاده کنید. پیکربندی Virtual Host ها که از این پس VH گفته می شود به دو صورت: مبتنی بر آدرس و یا مبتنی بر نام انجام می شود. می توانید مطلب “پیکربندی Virtual Host در Apache – تنظیم Name-Based VH” را برای آشنایی با انواع پیکربندی هاست مجازی مطالعه کنید و همچنین چگونگی پیکربندی آنرا در فدورا 20 از مطلب “برپاسازی LAMP با پیکربندی هاست مجازی در فدورا 20” مطالعه کنید. همچنین لازم است مطلب “نصب و راه اندازی وب سرور Apache در دبیان/ابونتو” را پیش از این مطلب مطالعه کنید. این مطلب بر اساس Ubuntu 14.04 می باشد. نخستین گام نصب Apache بر روی ابونتو می باشد. پس با دستور زیر آنرا نصب می کنیم.

sudo apt-get update && apt-get install apache2

این مطلب چگونگی پیکربندی هاست های مجازی مبتنی بر نام را نشان می دهد. با فرض اینکه آدرس ماشنی که روی آن وب سرور نصب شده است 192.168.1.5 باشد، می خواهیم دو هاست (سایت) مجازی به نام های example.com و test.com روی وب سرور ایجاد کنیم. برای اینکار لازم است دو دایرکتوری همنام با نام هاست های مجازی زیر دایرکتوری root وب سرور ایجاد کنیم. دایرکتوری root جایی است که تمامی فایل های مربوط به سایت درون آن ذخیره می شوند و با پارامتر DocumentRoot مشخص می شود. در ابونتو این دایرکتوری var/www/ است. با دستور های زیر دو دایرکتوری مجزا و همنام زیر var/www/ ایجاد می کنیم.

sudo mkdir -p /var/www/example.com/public_html

sudo mkdir -p /var/www/test.com/public_html

همانطور که مشاهده می کنید دو دایرکتوری همنام با هاست های مجازی که درون هر کدام یک دایرکتوری public_html قرار دارد زیر داریکتوری var/www/ ایجاد کردیم. دایرکتوری ها بالا را با مجوز root ایجاد کردیم یعنی مالک آنها کاربر root است و اگر مالک این دایرکتوری ها را از root به کاربر عادی تغییر ندهیم یک خطر امنیتی ایجاد کرده ایم. پس لازم است با دو دستور زیر مالک و گروه مالک دو دایرکتوری را به کاربر عادی که در حال حاظر به سیستم لاگین کرده است تغییر دهیم. توجه کنید که از دستور sudo برای ایجاد دایرکتوری ها استفاده کرده ایم پس با کاربری غیر از root لاگین کرده ایم که نام کاربری آن در متغیر محیطی USER مربوط به خودش ذخیره شده است.

sudo chown -R $USER:$USER /var/www/example.com/public_html

sudo chown -R $USER:$USER /var/www/test.com/public_html

سپس باید مجوز ها را تغییر دهیم به گونه ای که همه بتوانند فایل ها را بخوانند ولی تنها مالک فایل است که تمامی مجوز ها را روی دایرکتوری و فایل های موجود خواهد داشت.

sudo chmod -R 755 /var/www

پس از ایجاد دایرکتوری های همنام و اعمال مجوز های روی آنها می بایست محتویات سایت را به انها منتقل کرد. هر سایت مجموعه ای فایل های HTML در ترکیب با فایل های دیگر مانند ویدیو، صوت و غیره به همراه برنامه نویسی پویا توسط زبان PHP در کنار ذخیره سازی محتویات در پایگاه داده است.  اما در این پست برای نمایش چگونگی کارکرد هاست های مجازی از تگ های ساده HTML استفاده کرده ایم. در زیر هر یک از دایرکتوری های public_html یک فایل index.html ایجاد کنید. به طور مثال برای /example.com/public_html از دستور زیر استفاده کنید و محتویات این فایل را در آن کپی کنید.

nano /var/www/example.com/public_html/index.html

ubuntuvirtualhost1

برای ذخیره سازی محتویات در nano کلید های Ctrl+O را کلیک کنید.همین کار را برای test.com انجام دهید. یعنی فایل index.html را زیر دایرکتوری /example.com/public_html ایجاد کرده و سپس محتویات این فایل را در آن کپی کنید.

nano /var/www/test.com/public_html/index.html

پس از گام های بالا و ایجاد هاست ها و محتویات آنها نوبت به پیکربندی فایل های پیکربندی مربوط به تنظیمات هاست مجازی مبتنی به نام می رسد. به ازای هر فایل یک فایل پیکربندی با پسوند conf. وجود دارد که تنظیمات مربوط به پیکربندی هاست مجازی را برای آن سایت مشخص می کند. این تنظیمات را می توانید از پیوند های ابتدای مطلب مطالعه کنید که شامل مشخص کردن آدرس و پورتی که درخواست ها روی آنها گوش داده می شود. در این مطلب ما تنها یک آدرس داریم و آنهم آدرس ماشینی که وب سرور روی آن نصب است و همچنین از پورت پیشفرض 80 استفاده می کنیم.

همراه با نصب Apache در ابونتو 14.04 فایل زیر به طور پیشفرض نیز وجود خواهد داشت که شامل تنظیمات آماده و پیشفرض برای ایجاد هاست مجازی است. ما به ازای هر سایت یک کپی از آن ایجاد می کنیم که این کپی باید همنام با نام هاست مجازی باشد و همچنین به conf. ختم شود.

less /etc/apache2/sites-available/000-default.conf

برای هاست example.com یک کپی از فایل بالا و همنام با نام هاست یعنی example.com.conf ایجاد می کنیم. (فایل به conf. ختم شده است)

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf

فایل ایجاد شده را با دستور زیر باز کرده و تغییرات لازم را به آن اعمال می کنیم.

sudo nano /etc/apache2/sites-available/example.com.conf

تمامی تغییرات میان <virtualhost> و <virtualhost/> قرار می گیرند. با پارامتر ServerAdmin پست الکترونیکی ومدیر سایت مشخص می شود. پارامتر DocumentRoot محل قرار گیری محتویات سایت درون هر سایت مجازی را مشخص می کند. این پارامتر جدای از پارامتر سراسری DocumentRoot درون فایل اصلی پیکربندی وب سرور است. پارامتر ErrorLog محل و فایلی که رویداد های هاست مجازی در آن ثبت می شود.

پارامتر ServerName مشخص کننده نام هاست مجازی و همنام با دایرکتوری است. از این نام برای دسترسی به هاست مجازی استفاده می شود و همچنین رکورد های DNS برای نگاست نام به آدرس مطابق با همین نام هستند.ServerAlias نیز نامی اضافی را تعیین می کند مانند www.example.com. اگر فایل example.com.conf را که باز کنید مانند شکل زیر خواهد بود. خطوطی که با # شروع می شوند توضیحات هستند.

ubuntuvirtualhost2

من توضیحات را از فایل پاک کردم و پارامتر ها را مطابق شکل زیر تفییر داده ام. همچنین می توانید فایل تنظیمات را از اینجا دانلود و محتویات (خطوط) آنرا کپی کنید.

ubuntuvirtualhost3

برای دومین هاست نیز باید همین روند را انجام دهید. اما من برای راحتی کار از فایل example.com.conf که قبلا ایجاد کرده ام استفاده و کپی می گیرم , و لازم است مقدار پارامتر ها را تغییر دهید. همچنین می توانید فایل تنظیمات را از اینجا دانلود کنید.

sudo cp /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-available/test.com.conf

ubuntuvirtualhost4

با انجام گام های بالا اعمال تنظیمات به پایان رید و کافیست با دستور زیر هاست های مجازی را فعال کنیم.

sudo a2ensite example.com.conf

sudo a2ensite test.com.conf

ubuntuvirtualhost5

سپس با دستور زیر سرویس apache2 را restart می کنیم.

sudo service apache2 restart

به طور معمول از DNS برای نگاشت نام به آدرس استفاده می کنیم. همچنین چون از هاست مجازی مبتنی بر نام استفاده کردیم و فرض کردیم تنها یک آدرس ip داریم پس تمامی نام های هاست های مجازی که با پارامتر ServerName مشخص شدن در Zone File مربوط به DNS به یک آدرس نگاشت می شوند. اما چون ما DNS روی سیستم خود نداریم می توانیم به طور محلی از فایل etc/hosts/ استفاده کنیم و عملکرد هاست های مجازی را آزمایش کنیم. فایل etc/hosts/ را به صورت زیر ویرایش کنید.

nano /etc/hosts

ubuntuvirtualhost73

حال اگر از مرورگر وب خود آدرس www.example.com را وارد کنید صفحه index.html مربوط به آن که در زیر دایرکتوری /example.com/public_html ذخیره شده است را خواهید دید.

ubuntuvirtualhost8

و اگر از مرورگر وب خود آدرس www.test.com را وارد کنید صفحه index.html مربوط به آن که در زیر دایرکتوری /test.com/public_html ذخیره شده است را خواهید دید.

ubuntuvirtualhost9



برچسب ها : , , , , ,