آپاچیوب سرور

آموزش ۲۰ نکته در مورد وب سرور آپاچی

مقدمه

فهرست این مقاله ( با کلیک روی هر عنوان به آن قسمت منتقل می شوید) پنهان

دانستن اطلاعات کلیدی از یک وب سرور می‌تواند بسیار جالب و مفید باشد، اما ممکن است هر شخصی زمان کافی مطاله Document های مرتبط را نداشته باشد. در حالی که گرد آوری و نگارش این مقاله به ساعت ها زمان نیاز دارد مطالعه آن تنها ۱۵ تا ۲۰ دقیقه از زمان شما را خواهد گرفت.

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

۱. وب سرور آپاچی چیست ؟

آپاچی یکی از معروف ترین و قدرتمند ترین وب سرور های جهان می‌باشد که بصورت متن باز برای میزبانی فایل ها و صفحات وب در بستر اینترنت و شبکه ارائه شده است. این وب سرور بر پایه پروتکل HTTP یا همان Hyper Text Transfer که یک استاندارد ارتباطی بین Server و Client است سرویس دهی می‌کند. این وب سرور از SSL، فایل های CGI و دیگر امکانات پشتیبانی می‌کند.

۲. چگونه میتوان ورژن آپاچی را فهمید ؟

در ابتدا با دستور مدیریت پکیج برسی نمایید که آیا این وب سرور نصب شده است یا خیر، سپس با استفاده از دستورات زیر می‌توانید ورژن وب سرور را در محیط Command-Line برسی نمایید.

rpm -qa | grep httpd
httpd -v

۳. آپاچی تحت چه یوزری اجرا می‌شود ؟ فایل اصلی تنظیمات آپاچی در چه آدرسی قرار دارد ؟

آپاچی تحت یوزر “nobody” یا “apache” اجرا می‌شود. آدرس فایل تنظیمات اصلی آپاچی در توضیع های CentOS و RHEL در آدرس: etc/httpd/conf/httpd.conf/ و در توضیع های Ubuntu و Debian در آدرس etc/apache2.con/ قرار دارد.

۴. آپاچی از کدام پورت برای پروتکل های http و https استفاده می کند ؟

بصورت پیشفرض آپاچی برای پروتکل http از پورت ۸۰ و برای پروتکل https از پورت ۴۴۳ استفاده می‌کند. در صورت نیاز می‌توانید با تغییر در فایل اصلی تنظیمات پورت های ذکر شده را تغییر دهید. با استفاده از دستور netstat میتوانید پورت در حال استفاده را مشاهده نمایید.

netstat -antp | grep http

۵. چگونه میتوان Apache را روی یک سیستم لینوکسی نصب کرد؟

انجام اینکار بسیار ساده است! با استفاده از Package manager میتوان این ابزار را به آسانی در سرور لینوکسی نصب کرد. توجه داشته باشید زمانی که از Package Manager برای نصب استفاده می‌کنید آخرین ورژن Stable برای نسخه لینوکس مورد استفاده نصب خواهد. اگر مایلید از آخرین نسخه این وب سرور استفاده نمایید می‌توانید فایل نصب را دانلود کرده سپس آن را از طریق سورس نصب نمایید.

نصب در RHEL و CentOS :

yum install httpd

نصب در Ubuntu و Debian :

apt-get install apache2

۶. دایرکتوری تنظیمات Apache در چه آدرسی قرار دارد ؟

بصورت پیشفرض تمامی دایرکتوری های تنظیمات آپاچی در توضیع های RHEL, CentOS و Fedora در آدرس etc/httpd/ و در Debian و Ubuntu در آدرس etc/apache2/ قرار دارد.

توضیع های RHEL, CentOS و Fedora :

[root@behineserver~]# cd /etc/httpd/
[root@behineserver httpd]# ls -l
total 8
drwxr-xr-x. 2 root root 4096 Dec 24 21:44 conf
drwxr-xr-x. 2 root root 4096 Dec 25 02:09 conf.d
..........
..........
..........

توضیع های Debian و Ubuntu:

[root@behineserver ~]# cd /etc/apache2
[root@behineserver apache2]# ls -l
total 84
-rw-r--r-- 1 root root  7113 Jul 24 16:15 apache2.conf
drwxr-xr-x 2 root root  4096 Dec 16 11:48 conf-available
drwxr-xr-x 2 root root  4096 Dec 16 11:45 conf.d
drwxr-xr-x 2 root root  4096 Dec 16 11:48 conf-enabled
-rw-r--r-- 1 root root  1782 Jul 21 02:14 envvars
-rw-r--r-- 1 root root 31063 Jul 21 02:14 magic
drwxr-xr-x 2 root root 12288 Dec 16 11:48 mods-available
drwxr-xr-x 2 root root  4096 Dec 16 11:48 mods-enabled
-rw-r--r-- 1 root root   315 Jul 21 02:14 ports.conf
drwxr-xr-x 2 root root  4096 Dec 16 11:48 sites-available
drwxr-xr-x 2 root root  4096 Dec  6 00:04 sites-enabled

۷. آیا میتوان Apache را با استفاده از TCP Wrapper امن کرد؟

به دلیل عدم پشتیبانی از کتابخانه libwrap.a لینوکس نمیتوان آن را با استفاده از این کتابخانه امن کرد.

۸. چگونه میتوان پورت پیشفرض آپاچی را تغییر داد ؟

در فایل تنظیمات آپاچی یک متغییر به نام Listen قرار دارد که با استفاده از آن میتوان پورت پیشفرض http و https را تغییر داد.

۹. آیا میتوان در یک سرور از ۲ وب سرور Apache استفاده کرد ؟

بله، در یک سرور می‌توانید از ۲ وب سرور آپاچی بصورت همزمان استفاده نمایید اما شرط انجام این کار تغییر پورت پیشفرض می‌باشد که یکی از وب سرور ها برای پروتکل http بر روی پورت دیگری در حالت Listen قرار گرفته باشد.

۱۰. منظور از DocumentRoot چیست ؟

در آپاچی DocumentRoot به معنی شاخه یا آدرسی در سرور است که فایل های صفحات وب در آن ذخیره می‌شود. بصورت پیشفرض DocumentRoot در آدرس /var/www/html/ یا /var/www/ قرار دارد. شما می‌توانید برای هر host یک DocumentRoot متفاوت داشته باشید. برای تغییر آدرس اصلی باید وارد فایل تنظیمات شده و DocumentRoot را در Virtual Host ایجاد شده تغییر دهید.

۱۱. DirectoryIndex چیست ؟

DirectoryIndex نام اولین فایلی است که در زمان ارسال درخواست به دامنه به دنبال آن می گردد. برای مثال زمانی که درخواست به آدرس دامنه www.behineserver.com ارسال می‌شود آپاچی به دنبال فایل index.php میگردد و پس از یافتن آن را جهت نمایش با استفاده از php کامپایل کرده، سپس صفحه html ایجاد شده را به کاربر ارسال می‌کند. در واقع DirectoryIndex نام اولین فایل برای نمایش است. برای تغییر این مورد فایل اصلی تنظیمات آپاچی را باز کرده سپس با ویرایش متغیر DirectoryIndex تغییرات مورد نظر را اعمال نمایید.

۱۲. زمانی که فایل Index وجود نداشته باشد چگونه باید نمایش دایرکتوری یا Directory listing را غیر فعال کرد ؟

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

برای رفع این مشکل کافیست کد زیر را در فایل اصلی تنظیمات و یا فایل htaccess وارد نمایید.

<Directory /var/www/html>
Options -Indexes
</Directory>

۱۳. نام فایل های لاگ آپاچی چیست و در چه آدرسی قرار دارد ؟

لاگ پیشفرض آپاچی که مربوط به دسترسی و اتصال کاربران می‌باشد access_log نام دارد که در آدرس var/log/httpd/access_log/ و لاگ مربوط به ارور های Apache با نام error_log در آدرس var/log.httpd/error_log قرار دارد.

۱۴. علت مشاهده خطای “Connection reset by peer” در لاگ ارور آپاچی چیست ؟

زمانی که Apache در حال Serve کردن یا پاسخ به درخواست کاربر است و کاربر در بین این عملیات اتصال را قطع می‌کند این ارور در لاگ نوشته خواهد شد.

۱۵. Virtual Host چیست ؟

Virtual Host قسمتی در فایل اصلی تنظیمات است که برای هر دامنه و یا ساب‌دامنه ایجاد می‌شود. در Virtual Host اطلاعاتی مانند ایمیل ادمین، محل ذخیره لاگ ها برای دامنه مشخص شده، ادرس DocumentRoot و … قرار خواهد گرفت که می‌تواند برای هر آدرس دامنه با توجه به نیاز شما متفاوت باشد.

یک بلاک Virtual Host:

<VirtualHost *:80>
ServerAdmin info@behineserver.com
DocumentRoot /home/behineserver/
ServerName behineserver.com
ErrorLog logs/behineserver.com-error_log
CustomLog logs/behineserver.com-access_log common
</VirtualHost>

۱۶. تفاوت Location و Directory چیست ؟

<location> مواردی که مربوط به آدرس های URL می‌باشد. <Directory> به آدرس فایل ها و پوشه ها در سرور مربوط می‌باشد.

۱۷. مفهوم Apache Virtual Hosting چیست ؟

Apache Virtual Hosting در واقع مفهوم و قواعد برای سرویس دهی چند سایت در سرور می‌باشد. در سرور می‌توانید ۲ نوع Virtual Host تنظیم کنید. اولی بر پایه دامنه (Name Based Virtual hosting) و نوع دوم نیز بر پایه IP (IP based virtual hosting) می‌باشد.

۱۸. MPM در Apache به چه معناست ؟

MPM یا Multi Processing Modules مکانیزم های خاصی را برای پاسخ به درخواست کاربر ارائه می‌کند. در واقع آپاچی دارای مد های مختلف کاری می‌باشد.

۱۹. تفاوت بین Worker MPM و Prefork MPM با چیست ؟

Worker و Prefork هر دو مکانیز های خاص خود را برای کار در آپاچی دارا می‌باشند. زمانی که یک یا چندین درخواست به آپاچی ارسال می‌شود در مد Worker MPM یک Process آپاچی فعال شده و با استفاده از thread های مختلف درخواست کاربر را پاسخ می‌دهد در صورتی که در مد Prefork MPM یک Master Process ایجاد شده و با استفاده از تولید و مدیریت Child Process درخواست را مدیریت می‌کند.

۲۰. LimitRequestBody چیست ؟

LimitRequestBody متغیری در فایل اصلی تنظیمات است که برای اعمال محدودیت حجمی در هنگام دانلود استفاده می‌شود.

۲۱. کارایی ماژول Mod_evasive چیست ؟

با استفاده از این ماژول می‌توانید با حملاتی نظیر DDOS مقابله کرده و جلوی آن را بگیرید. این ماژول third party بوده و بصورت پیشفرض در آپاچی وجود ندارد و برای استفاده باید آن را نصب نمایید.

سعید یاوری

فعال در حوزه شبکه و امنیت DevSecOps

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

نوشته های مشابه

دکمه بازگشت به بالا