نحوه ایجاد هاست های مجازی آپاچی را در CentOS7

این وب سرور در توسعه و همگانی شدن وب جهانی نقش بسیار مهمی داشته است . این وب سرور که به زبان C نوشته شده است دارای قابلیت cross- platform بوده و بر روی ماشین های مختلف قابل اجرا میباشد . دلیل انتخاب این اسم برای این وب سرور را نیز دو مورد ذکر کرده اند اول اینکه به یکی از قبایل قدیمی بومی آمریکا که به خاطر مقاومت و مهارت در ساخت ابزار آلات جنگی مشهور میباشند احترام گذاشته شود و ثانیا به این دلیل که (Root)ریشه پروژه به صورت یک سری پچ (Patch)میباشد . این وب سرور در یک گروه و به صورت کد باز (open source) گسترش یافت و از سال ۱۹۹۶ به عنوان محبوب ترین وب سرور برای HTTP در وب جهانی شناخته شده بود ولی در سال ۲۰۰۵ میدان مبارزه را به IIS مایکروسافت باخت و در حال حاضر نزدیک به ۶۹% بازار وب سرور های جهان را به خود اختصاص داده است همچنین MAC OS آن را به عنوان وب سرور اصلی در پشتیبانی از WEB OBJECT خود برگزیده است . این وب سرور دارای ماژولهای امنیتی بسیار خوبی از جمله mod_access, mod_auth, mod_digest میباشد . آپاچی برای میزبانی هر دو نوع وب ایستا و وب پویا مناسب است .

 

قبل از اینکه طبق این راهنما شروع کنید چند مرحله وجود دارد که لازم است تکمیل شود.
شما نیاز دارید که به یک سرور CentOS7 یا یک کاربر غیر از root دسترسی داشته باشید که این کاربر امتیازات Sudo(sudo privileges) را داشته باشد. 
همچنین شما برای پیکربندی میزبانهای مجازی بر روی سرور نیاز دارید که یک آپاچی نصب کنید. اگر قبلا این کار را انجام نداده اید می توانید با استفاده از دستور yum آپاچی را طریق مخازن نرم افزاری پیش فرض CentOS نصب کنید.

sudo yum -y install httpd


در ادامه، آپاچی را بعنوان یک سرویس CentOS فعال کنید که بعد از reboot کردن سیستم بصورت خودکار آغاز می شود.

sudo systemctl enable httpd.service


بعد از اینکه این مراحل کامل شد، از طریق SSH بعنوان یک کاربر غیر ریشه ای(non-root) به سیستم وارد شوید و آموزش را ادامه دهید.


مرحله اول - ایجاد ساختار دایرکتوری :

در ابتدا ما نیاز داریم یک ساختار دایرکتوری ایجاد کنیم که اطلاعات سایت را برای ارائه خدمات به بازدید کنندگان در آنجا نگهداری کنیم.
اسناد ریشه ما (document root: بالاترین سطح از دایرکتوری که به نظر می رسد آپاچی برای پیدا کردن مطالب و ارائه خدمات آنرا جستجو می کند) به دایرکتوری های منحصربفردی در دایرکتوری /var/www تنظیم می شوند. ما یک دایرکتوری برای هر یک از میزبانهای مجازی که قصد ایجاد آنرا داریم، ایجاد خواهیم کرد.
در هر یک از دایرکتوری ها، یک دایرکتوری public_html ایجاد خواهیم کرد که فایلهای واقعی را در آن نگهداری شود. این کار انعطاف پذیری بیشتری در میزبانی مبدهد.
ما می توانیم این دایرکتوریها را با استفاده از دستور mkdir (استفاده از –p که اجازه می دهد که یک پوشه درون پوشه دیگری ایجاد کنیم.) بسازیم.

sudo mkdir -p /var/www/itse.com/public_html sudo mkdir -p /var/www/itse2.com/public_html



مرحله دوم _ اعطای مجوز :

در حال حاضر ما یک ساختار دایرکتوری برای فایلهای خود داریم. اما آنها به کاربر ریشه(root) تعلق دارند.اگر ما بخواهیم که کاربران بطور منظم قادر به تغییر فایلها در دایرکتوریهای وب سایت ما باشند، می توانیم با استفاده از دستور chown مالکیت آنها را تغییر دهیم :

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


متغییر $USER نام همان کاربری را خواهد گرفت که شما اخیرا با آن وارد سیستم شده اید در زمانی که دستور را ارسال می کنید. با انجام این کار، کاربران منظم ما مالک دایرکتوریهای public_html جایی که ما محتوای خود را ذخیره می کنیم، می باشند.
همچنین باید مجوزهایمان را طوری اصلاح کنیم که با کمی تغییر مطمئن شویم که دسترسی خواندن به دایرکتوری وب و همه فایلها و فولدر های درون آن بطور کلی مجاز است.بنایراین صفحاتی که را میتوان به درستی بکار گرفت : 

sudo chmod -R 755 /var/www


وب سرور شما در حال حاضر باید مجوزهای مورد نیاز برای خدمات محتوا و کاربران شما که قادر هستند محتوا را در داخل پوشه های مناسب ایجاد کنند، را داشته باشد.


مرحله سوم- ایجاد نسخه نمایشی صفحات برای هر میزبان مجازی:

حالا که ما یک ساختار دایرکتوری را داریم، اجازه دهید که برخی از مطالب را برای استفاده ایجاد کنیم.
زیرا که این تنها راه برای نمایش و آزمایش می باشد، صفحات ما بسیار ساده خواهند بود. ما فقط صفحه index.html برای هر سایت ایجاد می کنیم که آن دامنه خاص را شناسایی می کند.
اجازه بدهید که با example.com شروع کنیم. ما می توانیم یک فایل index.html را در ویرایشگر با تایپ کردن دستور زیر باز کنیم:

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


در این فایل یک سند HTML ساده ایجاد می شود که سایتی را نشان می دهد که این صفحه به آن متصل می باشد. در این آموزش فایلی که برای اولین در دامنه ما نمایش داده می شود، مطابق زیر است:

<html> <head> <title>Welcome to Itse.com!</title> </head> <body> <h1>Success! The itse.com virtual host is working!</h1> </body> </html>


بعد از اتمام این مرحله فایل را ذخیره کنید و ببندید.

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

cp /var/www/itse.com/public_html/index.html /var/www/itse2.com/public_html/index.html


حالا اجازه دهید فایل را باز کنیم و بخش های مربوط به اطلاعات را اصلاح کنیم.

nano /var/www/itse2.com/public_html/index.html<html> <head> <title>Welcome to itse2.com!</title> </head> <body> <h1>Success! The itse2.com virtual host is working!</h1> </body> </html>


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


مرحله چهارم- ایجاد فایل میزبان مجازی جدید:

فایلهای میزبان مجازی برای سایتهای جداگانه ما طوری پیکربندی شده اند که مشخص می کنند چگونه وب سرور آپاچی به درخواست دامنه های متفاوت پاسخ دهند.
برای شروع، ما نیاز داریم که یک دایرکتوری را راه اندازی کنیم که میزبانهای مجازی ما در آن ذخیره شوندو هم چنین دایرکتوری که به آپاچی می گوید که یک میزبان مجازی آماده پاسخگویی به بازدیدکنندگان است.
دایرکتوری sites-available همه فایلهای میزبان مجازی ما را نگهداری خواهد کرد. در حالی که دایرکتوری sites-enabled لینک های نمادین ماشین میزبانهای مجازی که ما می خواهیم انتشار دهیم را نگهداری می کند.ما با تایپ دستورات زیر می توانیم هر دو دایرکتوری را ایجاد کنیم:

sudo mkdir /etc/httpd/sites-available sudo mkdir /etc/httpd/sites-enabled


در ادامه ما باید به آپاچی بگوییم که میزبانهای مجازی را در دایرکتوری sites-enabled مشاهده کند.برای انجام این کار، ما فایل اصلی پیکربندی آپاچی را ویرایش می کنیم و یک خط که یک دایرکتوری اختیاری را برای پیکربندی اضافی فایل ها اعلام می کند را اضافه می کنیم:

sudo nano /etc/httpd/conf/httpd.conf


این خط را به انتهای فایل اضافه کنید:

IncludeOptional sites-enabled/*.conf


بعد از اضافه کردن این خط فایل را ذخیره کنید و ببندید.اکنون ما آماده ایم اولین فایل میزبان مجازی را ایجاد کنیم.


ایجاد اولین فایل میزبان مجازی:

با باز کردن یک فایل جدید در ویرایشگر خود با دسترسی root شروع کنید:

sudo nano /etc/httpd/sites-available/itse.com.conf


در ابتدا، با ایجاد یک جفت tag برچسب محتوا به عنوان یک ماشین مجازی که درحال گوش دادن به پورت 80 (پورت پیش فرض HTTP)می باشد شروع کنید:

<VirtualHost *:80> </VirtualHost>


در ادامه نام سرور اصلی را اعلام کنید. در اینجا ما بعنوان مثال www.itse.com را وارد کرده ایم. ما همچنین نام مستعار سرور را به itse.com اشاره می دهیم بطوریکه درخواست ها برای www.itse.com و itse.com با محتوای یکسان ارسال می شوند:

<VirtualHost *:80> ServerName www.itse.com ServerAlias itse.com </VirtualHost>


نکته: برای اینکه نسخه های www از دامنه به درستی کار کنند پیکربندی DNS های دامنه نیاز به یک A record یا CNAME دارند که درخواست های www را به IP سرور اشاره دهد. برای کلمات (*) رکورد نیز کار می کند. 

در نهایت، ما با اشاره به دایرکتوری root از اسناد وب سایتمان که در دسترس عموم می باشند کار را پایان می دهیم. ما همچنین به آپاچی می گوییم که خطاها و درخواست log های مربوط به این سایت خاص را در کجا ذخیره کند:

<VirtualHost *:80> ServerName www.itse.com ServerAlias itse.com DocumentRoot /var/www/itse.com/public_html ErrorLog /var/www/itse.com/error.log CustomLog /var/www/itse.com/requests.log combined </VirtualHost>


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


کپی کردن اولین میزبان مجازی و سفارشی سازی آن برای دامنه های اضافی:

حالا که اولین فایل میزبان مجازی خود را ایجاد کردیم،ما می توانیم با کپی کردن این فایل و تنظیم موارد مورد نیاز دومین میزبان مجازی را ایجاد کنیم.
با استفاده از دستور cp کپی را شروع کنید:

sudo cp /etc/httpd/sites-available/itse.com.conf /etc/httpd/sites-available/itse2.com.conf


یک فایل جدید با دسترسی root در ویرایشگر خود باز کنید:

sudo nano /etc/httpd/sites-available/itse2.com.conf

شما اکنون نیاز دارید که تمامی قسمتهای اطلاعاتی را که به دامین دوم شما ارجاع داده می شود را تغییر دهید.بعد از اینکه کار شما تمام شد، فایلهای میزبان مجازی دوم شما ممکن است چیزی شبیه به این باشد:

<VirtualHost *:80> ServerName www.itse2.com DocumentRoot /var/www/itse2.com/public_html ServerAlias itse2.com ErrorLog /var/www/itse2.com/error.log CustomLog /var/www/itse2.com/requests.log combined </VirtualHost>


وقتی که انجام این تغییرات به پایان رسید، می توانید فایل را ذخیره کنید و ببندید.


مرحله پنجم- فعال کردن فایل میزبان مجازی جدید:

اکنون که فایلهای میزبان مجازی را ایجاد کرده ایم، باید آنها را فعال کنیم تا آپاچی برای استفاده از آنها برای بازدیدکنندگان آنها را شناسایی کند.برای انجام این کار، ما می توانیم لینک نمادین را برای هر میزبان مجازی در دایرکتوری ites-enabled ایجاد کنیم :

sudo ln -s /etc/httpd/sites-available/itse.com.conf /etc/httpd/sites-enabled/itse.com.conf sudo ln -s /etc/httpd/sites-available/itse2.com.conf /etc/httpd/sites-enabled/itse2.com.conf


هنگامی که کار شما به پایان رسید برای اعمال تغییرات Apache را ریستارت کنید:

sudo apachectl restart



مرحله ششم- راه اندازی فایل میزبان های محلی (اختیاری):
اگر شما برای تست این روش از دامنه های example به جای دامنه های واقعی استفاده می کنید، شماهمچنان می توانید قابلیت های میزبان های مجازی خود را بطور موقت با تغییر در فایل های میزبان کامپیوتر خود تست نمائید. این عمل هرگونه درخواست برای دامین هایی که شما پیکربندی کرده اید و به سرور VPS خود اشاره داده اید را جدا می کند. فقط یک سیستم DNS می تواند این کار را انجام دهد اگر شما از دامنه های ثبت شده استفاده کنید.هر چند این کار فقط به روی کامپیوتر شما انجام می شود و به سادگی برای آزمایش اهدافتان مفید است.

نکته : مطمئن شوید که این مراحل را روی کامپیوتر محلی خود انجام می دهید نه روی سرور مجازیتان. شما نیاز دارید که به اعتبارنامه های اداری برای این کامپیوتر دسترسی داشته باشید.

اگر شما بر روی یک کامپیوتر Mac با Linux هستید، می توانید با تایپ دستور زیر فایل میزبانهای محلی خود را با دسترسی مدیریتی ویرایش کنید:

sudo nano /etc/hosts


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

جزئیاتی که نیاز دارید اضافه کنید، IP آدرس های عمومی سرور مجازی شما به همراه دامنه هایی که برای رسیدن به آن سرور مجازی می خواهید، هستند:

127.0.0.1 localhost 127.0.1.1 guest-desktop server_ip_address itse.com server_ip_address itse2.com


این دستورات هر درخواستی که برای itse.com و itse2.com بر روی کامپیوتر محلی ما فرستاده می شود و آنها را بر روی سرور ما server_ip_address ارسال می کند.


مرحله هفتم- نتایج آزمون شما:

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

http://itse.com


شما باید یک صفحه مانند زیر مشاهده کنید.



به همین ترتیب اگر شما دامنه های دیگرتان را بازدید کنید، فایلهایی را که ایجاد کرده اید را می بینید.

اگر تمام سایتهایی که پیکربندی کرده اید به درستی کار کنند،پس شما با موفقیت میزبانهای مجازی آپاچی جدید خود را روی همان سرور CentOS پیکربندی کرده اید.
اگر فایل میزبانهای کامپیوتر خانگی خود را تنظیم کرده اید، حالا که مطمئن شده اید پیکریندی شما به درستی کار می کند ممکن است بخواهید خط هایی را که اضافه کرده اید را حذف کنید.
این مورد باعث جلوگیری از ایجاد فایلهای میزبانهای شما با مواردی می شود که در اصل نیازی به آنها نیست.


نتیجه :

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