لینوکس, مدیریت سرور لینوکس

وب سرور آپاچی (Apache) چیست؟

وب سرور آپاچی (Apache)

وب سرور آپاچی (Apache) چیست؟

وب سرور آپاچی (Apache) گسترده ترین و محبوب ترین سرور HTTP در دسترس بر روی اینترنت می باشد که از زبان های  PHP و Perl پشتیبانی می کند و روی بیشتر سیستم عامل های قابل اجرا است  یک برنامه free Open Source است که با سرور های وب برای اداره کردن درخواستها و تقاضاهای وب و منابع به کار می رود .

Apache HTTP Server روی سیستم عامل Unix مانند Linux یا BSD اجرا می شود همچنین می تواند روی Windows مایکروسافت و دیگر سیستم عامل ها یا Platform ها اجرا شود . یک سرور با خصوصیات منحصر به فرد با add-on های قدرتمند که به صورت مجانی در دسترس هستند .

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

تاريخچه وب سرور Apache

Apache Web Server بيشترين استفاده را روی اينترنت دارد بيشتر از 50 درصد از وب سايتهای موجود از  Apache استفاده میكنند. اين محصول توسط گروهی عرضه می شود كه به Apache Group موسوم اند و اين گروه پروژه Apache Http Server Project را اداره می كنند اين گروه سخت دركارند تا با ارائه محصولاتی با Configuration بالا وانعطاف پذيری خوب عرضه نمايند.

اولين ورژن Apache درApril سال 1995 كه ورژن 0.6.2 است خارج شد و آخرين ورژن موجود 2.4.23 است. تا قبل از آپاچی يك وب سرور وجود داشت بنام NCSA Httpd 1.3 كه در واقع اولين ورژن آپاچی از اين وب سرو نشات گرفته است و در واقع پایه و اساس آپاچی بود ولی آپاچی به سرعت رشد كرد ودرmay-june سال 1995 گروه آپاچی ورژن 0.7 را توليد كردند اما بعد از مدتی گروه اپاچي متوجه شد كه اين وب سرور  نياز به معماری جديد دارد و با يک معماری جديد محصول بعدی وارد بازار شد درسال 1995 (Auguest) اين محصول ورژن 0.8.8 آپاچی بود.

ورژن جديد با معماری جديد شامل ساختارهای ماژولار و همچنين بسط توابع API وهمچنين يك سری خصوصيات سيستم عامل از قبيل POOL-based memory  allocatcon و new forking process model بود و اين معماری جديد گسترش يافت تا به آخرين ورژن ان يعنی 2.4.23 رسيد، البته با ورود اين وب سرور جديد وب سرور قديمی Ncsa http4 بازنشسته شد و اين نسل جديد شروع به كار كرد.

معماری و كارايی وب سرور Apache

بسته نرم افزاریApache از نظر معماری وكاربرد به چهارلايه زير تقسيم شده است مطابق با شكل زير:

وب سرور آپاچی (Apache) چیست؟

operating system

اساس functionolity درشكل فوق به وسيله سيستم عامل در لايه زيرين تهيه می شود، برای apache سيستم عامل مربوطه ورژن های گوناگون unix است اما سيستم عامل ديگر نيز می توانند پاسخ قرار گيرند، سيستم عامل هايی از قبيل macos.win32.os/2 وحتی posix كه سيستم عامل ماشين های main frame است .

Apache kernel ,core module, kernel libravies

لايه 2 كه هسته اصلی و شامل كرنل و ماژول های مربوط به آن  و يك سری librariey  استاندارد است، اين لايه به همراه ماژول های مربوطه در عمل Http Server يعنی مبادله اطلاعاتی ميان Browser و Server مورد استفاده قرار می گيرد. اين لايه همچنين دارای توابع API و كدهای قابل استفاده مجدد (REUSABLE) برای لايه های بالايی است.

Apache Modules

اين لايه در واقع لايه ای است كه Apache Webserver را در ميان وب سرورهای ديگر متمايز كرده است و در واقع در اين لايه قسمت User-visible Functionality شگفت انگيز و تحسين بر انگيز است و ماژول های موجود آنقدر دارای Functionlity بالاهستند كه  برای سرویس دادن استفاده ميشود و اين نشان دهنده مستقل بودن و وابسته نبودن ماژولها نسبت به يكديگر است.

در واقع ماژول هايی كه مورد استفاده وب سرورهای ديگر است. وب سرورهای ديگر بدون دسترسی به لايه 1 و 2 می توانند مستقيم از ماژول های لايه 3 و 4 استفاده كنند.

Third-party libraries

در لايه 3 ممكن است بعضی از ماژول ها به تنهايی كارآيی نداشته باشند و براي به كار بردن آنها نياز به library های خارجی است مانند mod-perl و mod-ssl، مثلا برای استفاده از mod-perl به يك سری library های زبان perl نياز داريم. از آنجاكه لايه های 4 و 3 و ماژول های مربوطه مستقل از لايه 2 هستند و به صورت loosely coupled با لايه 2 هستند و در واقع ارتباط استاتيكی با لايه 2 ندارند و در حقيقت ارتباط آنها با اين لايه به صورت پويا يا dynamic است و اين ارتباط به وسيله  Dynamic Shared Objectفراهم می شود.

اين ويژگی و ساختار دارای انعطاف پذيری بالا است، یک نمونه انعطاف پذيری اين است كه بجای اينكه اين ارتباط (ارتباط بين 4و3 با 2) در موقع نصب كردن آپاچی به صورت استاتيكی بر قرار شود، اين ارتباط در واقع STARTUPTIME  لايه ای 4 و 3 برقرار می شود يعنی هر موقع لايه 3  می خواهند با لايه 2 ارتباط برقرار كنند همان موقع پيوند توسط DSO برقرار می شود لذا پيوند دائمی و ايستا نيست. در واقع DSO یکی از ویژگی های متمایز آپاچی نسبت به سایر وب سرورها می باشد.

Apache kernel functionlity

هسته آپاچی كه در لايه 2  واقع است دارای دو هدف است:

1- تهيه Basic HTTP server functionality (برای مبادله اطلاعاتی بین سرور و مرورگر)

2- تهيه ماژول های API و توابع مورد نياز

كرنل در قسمت 1 وظايف زير را انجام ميدهد:

1- يك سری وظايف سيستم عاملی از قبيل:

الف – Memory Segment و… كه در واقع Resource Handling می شود.

ب – نگهداری Pre-Forked Process Model

2- سركشی بهSocket  هایTCP/IP

3- كنترل ورود HTTP Request به وسيله پروسس های مربوطه

4- مدیریت HTTP Protocol به منظور رسيدگی به در خواست HTTP Request

5- تهيه Read/Write Buffer

و همچنين توابع اضافی مثل url، mime ,header passing و dsoloading.

API ماژول هايی هستند كه مورد استفاده لايه سوم هستند و در هسته آپاچی به وجود می آيند، البته اين به آن معنا نيست كه لايه سوم وابسته به اين ماژول ها (ماژول های API) است. API شامل ليست توابعی هستند كه در داخل ماژول های لايه سوم وجود دارد.

وقتی كه هسته يک درخواست HTTP REQUEST دريافت می كند برای انتشار اين درخواست بين ماژول های مختلف از API استفاده می كند چرا كه API مشخص می كند كه هر تابع مربوط به چه ماژولی است و هر ماژول چه توابعی دارد و هر درخواست پيغام به كدام ماژول بايد برود البته API فقط ليست توابع موجود درماژول ها نيست بلكه دارای توابعی هست كه به طور عمومی قابل استفاده ماژول های لايه سوم است. اين توابع با (ap-xxx) شروع می شود هر  HTTP REQUESTبه ده شاخه مجزا تقسيم می شود و هر ماژول اجرای يكی از شاخه ها را بر عهده می گيرد و در مواقع لازم نيز از توابع (ap-xxx) استفاده می كند.

توضيحات مربوط به ماژول های به وب سرور Apache

ماژول های مربوط به هسته:

1- Core – Modules

http-core

يك ماژول پايه برای وب سرور Apache است كه كارآيی هسته آپاچی از اين ماژول نشات می گيرد اين ماژول به عنوان يك ماژول API نيز به كار برده می شود.

ولي سه ويژگي مهم دارد :

الف) همانند ماژول های ديگر نامش از كلمه mod-xxx شروع نمیشود بلكه همانطور كه مشاهده می شود از http-xxx شروع شده است.

ب) درست است كه به عنوان يك ماژول API کاربرد دارد اما هيچ اتصال API به لايه سوم ندارد و همه لینک های اين ماژول در لايه 2 يعنی در هسته آپاچی است و لینک و اتصالی به بيرون از  هسته ندارد.

پ) اين ماژول يک ماژول اجباری است و هرگز از روی سيستم پاک نمی شود. اين ماژول در مسير مشخص (SN/MAIN / http  -core c) واقع است و به صورت پيش فرض فعال است.

mod –so

اين ماژول در لايه دوم واقع است و در واقع جزو  Core Modulesها است اين ماژول اشياء DSO را توليد می كند و همانطور كه قبلا داده شده است اين اشياء برای پيوند بين لایه سوم و دوم مورد استفاده قرار می گيرد در واقع اين ماژول نقش حیاتی برای ماژول های اين دولايه دارد اين ماژول درحالت عادی غیرفعال است اين ماژول در مسير SRC/MODULES/STANDARD/MOD –SO.C واقع است.

2- URL  Mapping  –ماژول های مربوط به URL

mod – alias

ماژول mod -alias در روزهای اولی كه apache به وجود آمد برای Translation و Redirection یک URL مورد استفاده قرار می گرفت، اين روش محدوديت هايی داشت اما فهميدن مكانيسم اين ماژول ساده بود.

اين روش به وسيله MAPPING كردن URL به Directory path عمل Translation انجام می شود و پس از ترجمه عمل Redirection انجام مي شود.

اين ماژول در  .src/modules /standards/mod-alias .c قرار گرفته و در حالت عادی غیرفعال است.

mod-rewrite

اين ماژول هم روش ديگری برای Translation و  Redirection(ترجمه و مسيريابی) URL است ولی اين روش درورژن های بعدی Apache به كار گرفته شد.

در اين روش از الگوريتم پيچيده تری استفاده شده است و در واقع اين ماژول هم يكی از وجوه تمايز Apache نسبت به ساير وب سرورها است و جزء نقاط قوت آن می باشد.

اين ماژول درsrc/modules/standards/mod-rewrite.c قرار دارد و در حالت عادی غیرفعال است.

mod-speling

اين ماژول برای تصحيح و كاهش خطا در URL مورد استفاده قرار می گيرد در واقع اگر در نام URL درخواستی، ازقلم افتادگی، اشتباه و یا غيره اتفاق افتد اين ماژول سعی می كنند بعد از اينكه ماژول های rewrite و alias نتوانستند URL مربوطه را شناسايی كنند كه با وجود اشتباه حتی اگر ميزان اشتباه زياد باشد،

منبع درخواستی موجود درURL را به وسیله مقايسه پيدا می كند، البته اغلب اين راه حل بهتر است كه به USER اطلاع دهيم كه در URL مورد نظر اشتباه وجود دارد ولی  Apache با انعطاف پذيری بالا اين كار نيز از عهده کاربر خارج می سازد و اين هم يكي از وجوه تمايز Apache است.

اين ماژول در مسيرsrc/modules/standards/mod-speging.c قرار دارد ودر حالت عادی غیرفعال است.

ماژول های دیگری نیز مانند Mod-imap وmod-dir در بخش URL  Mapping وجود دارند.

3- ماژول های Access Control

این بخش تنها یک ماژول دارد که mod-access است.

4- User-Authentication

در واقع در اين قسمت از كد های خاص برای اطمينان از اينكه پيغام و در خواست رسيده صحيح است يا صحيح به دست گيرنده پيام رسيده است يا نه استفاده می شود.

ماژول های مربوطه :

mod -AUTH

mod -AUTH-ANON

mod –DIQEST

5- Content Selection

در اين قسمت ماژول های زیر قرار می گیرند:

mod -DIR

mod -AETIONS

mod – NEQOTIOTION

6- Environment creation

ماژول های مربوطه به اين قسمت عبارتند از :

mod-env

mod-setenvif

mod- unique –id

7- Server-Side Scripting

ماژول های مربوط به اين قسمت عبارتند از :

mod-cgi

mod-inclde

8- Response Header Generation

ماژول های مربوط به اين قسمت عبارتند از :

mod -MIME

mod -MIME-MAGIC

mod -EXPIRES

mod -HEADERS

mod -CERN- META

9- Internal Content Handlers

ماژول های مربوط به اين قسمت عبارتند از :

mod -asis

mod -autondex

mod -staus

mod –info

10- Request Logging

ماژول های مربوط به اين قسمت عبارتند از :

mod -Log-config

mod -log-agent

mod -log-referer

mod –usertack

11-  Experimental

ماژول های مربوط به اين قسمت عبارتند از :

mod -mmap-static

mod –example

12- Extensional Functionality

ماژول های مربوط به اين قسمت عبارتند از :

mod -proxy

ماژول های شماره 3 تا 12 فقط در حد نام بردن در مقاله عنوان شد و به دليل ازدياد ماژول های Apache، فقط نام قسمت ها و ماژول های مربوط به هر قسمت ذكر شده است.

در اينجا به توضيح دو ماژول میپردازيم كه برای استفاده از آنها احتياج به لايه چهارم داريم يعنی يک سری Libraries و توابع خارجی كه اين ماژول ها بايد با آنها ارتباط برقرار كنند تا قابل استفاده شوند.

Mod -PERL

اين ماژول امكانات برای برقراری با زبان PERL و LIBRARIES های مربوط به اين را فراهم می كند اين ماژول در حالت عادی غير فعال است و در مسير (SRC/modules/perl/mod-perl.c) قرار دارد.

Mod -SSL

اين ماژول يک الگورتيم رمز نگاری از طريق پروتكل های SSL (Secure Socket Layer) و پروتکل TLS (Transport Layer Security) و با کمک SSL/TLS یعنی ترکیب دو پروتکل فوق تهیه می کند.

SSL/TLS یک پروتكل رمز نگاری عمومی است و در وب سرور یک پروتكل HTTPS می سازد يعنی یک پروتكل HTTP كه قابل رمز نگاری با SSL/TLS باشد برای وب سرور می سازد. اين ماژول در مسير (src.modules/ssl/mod-ssl.c) قرار دارد و در حالت عادی غير فعال است.

 

مطالب مرتبط

1 نظر در “وب سرور آپاچی (Apache) چیست؟

  1. احسان گفت:

    یعنی Mod -SSL فقط با فعال کردن ssl بدرد می‌خوره؟

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

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