درست است که ما فارسیزبانان با شنیدن کلمهٔ آپاچی ناخودآگاه نوع خاصی از شخصیت را متصور میشویم که نیازی به توضیح دادن ندارد؛ اما وبسرور آپاچی، از آن آپاچیها نیست و اتفاقاً خیلی فروتن و پرکاربرد و در عین حال ارزانقیمت است. تا انتهای مطلب همراه ما باشید و بخوانید وب سرور Apache چیست و چطور کار میکند و چه مزایا و معایبی نسبت به رقبای خود دارد.
آپاچی (Apache) چیست؟
Apache HTTP Server یک نرمافزار وب سرور است که درخواستهای ارسال شده به سرور را از طریق پروتکل HTTP پردازش میکند.
وب سرور چیست؟
وب سرور نرمافزاری است که ارتباط میان سرور بهعنوان سختافزار و کلاینت (مثل مرورگر) را برقرار میکند. یعنی محتوای یک سایت را بر اساس درخواست کاربر، از سرور دریافت کرده، ذخیره میکند و به کلاینت ارسال میکند. پیشتر در مقالهٔ «وبسرور چیست؟» توضیح دادیم که وبسرورها میتوانند نرمافزاری یا سختافزاری – شامل سروری که روی آن نرمافزار وبسرور نصب شده – باشند. آپاچی هم یکی از این نرمافزارهای وبسرور است.
وبسرور آپاچی چگونه کار میکند؟
بهطور کلی و به زبان ساده:
وبسرور آپاچی، درخواستها را از مرورگر (کروم، فایرفاکس، مایکروسافت اج و …) میگیرد؛ سپس دستورات برنامهنویسی را به صفحات وبی که محتوای آنها برایمان قابلمشاهده است، تبدیل میکند.
حالا بیایید کمی عمیقتر نحوه کار Apache را بررسی کنیم.
مراحل کار Apache به ترتیب زیر است:
۱- کاربران از طریق کلاینت (مرورگر یا وباپلیکیشن) درخواستی ارسال میکنند تا به سایت یا برنامه دسترسی پیدا کنند. مثلاً با کلیک روی یک دکمه URL صفحه موردنظرشان را درخواست میکنند.
۲- حالا آپاچی درخواست را دریافت میکند و به دنبال محتوای درخواستی میگردد. یعنی محتوای درخواستی را در روت یا دایرکتوری مخصوص آن در سرور جستجو میکند. اگر صفحه داینامیک باشد، با زبانی مثل PHP درخواست را برای پردازش به یکی از ماژولهایش میسپارد.
۳- پس از این که سرور پاسخ را ارسال کند، آپاچی آن را دریافت کرده و به یک پاسخ HTTP/S تبدیل میکند. این پاسخ میتواند شامل محتوا، کد وضعیت، هدرها و هرچیز دیگری در سطح سایت یا اپلیکیشن باشد.
نکته: به محض این که کلاینت پاسخ را تحویل بگیرد، ارتباط بسته میشود و آپاچی آمادهٔ درخواست بعدی میشود.
وبسرور Apache را میتوان برای رسیدگی به انواع درخواستها پیکربندی کرد تا مطابق با نیاز برنامههای مختلف سفارشیسازی شود. از سوی دیگر ماژولها و پلاگینهای آپاچی بهقدری متنوع هستند که میتوانید برای افزایش پرفورمنس یا سایر عملکردها نیز از آنها استفاده کنید.
جالب است بدانید با وجود این که معمولاً آپاچی را معادل «وبسرور پروتکل HTTP/S» میدانیم؛ اما این وبسرور با بسیاری از پروتکلهای دیگر هم کار میکند.
نحوهٔ کار آپاچی از دید فنیتر:
بهطور پیشفرض، Apache برای آدرسهای IP پیکربندی شده در فایلها در نقش Listener ظاهر میشود. با دستور Listen، آپاچی میتواند ترافیک خاصی را بر اساس درخواستهای ترکیبی پورت-آدرس (مثل ۱۰.۱.۱۰.۱۲:۸۰۸۱) بپذیرد و به پورتها و دامنههای خاصی هدایت کند.
بهطور پیشفرض، Listen روی پورت ۸۰ اجرا میشود، اما آپاچی میتواند به پورتهای مختلف برای دامنههای مختلف متصل شود و اجازهٔ دسترسی به هاست یا سرور اختصاصی را به سایتها و دامنههای مختلف بدهد. میتوانید با کمک پشتیبان هاست، برای استفاده از HTTPS در آپاچی، domain1.com را در پورت ۸۰، domain2.com را در پورت ۸۰۸۰ و domain3.com را در پورت ۴۴۳ بهعنوان Listener تنظیم کنید.
هنگامی که یک پیام به مقصد یا گیرنده خود میرسد، یک اعلان یا پیام ACK ارسال میشود تا به فرستندهٔ اصلی اعلام کند عملیات با موفقیت انجام شده است. اگر در دریافت دادهها خطایی وجود داشته باشد یا برخی از بستهها در حین انتقال گم شده باشند، میزبان یا کلاینت یک پیام Not Acknowledged یا NAK را به سرور ارسال میکند تا به فرستنده اطلاع دهد که دادهها باید دوباره ارسال شوند. کاربران با بررسی لاگ سرور میتوانند این پیامها را ببینند.
بررسی مزایا و معایب وبسرور آپاچی
تا بهحال دربارهٔ چگونگی کارکرد وبسرور و Apache اطلاعاتی کسب کردید. اجازه بدهید کمی دقیقتر شویم و بهصورت موردی بررسی کنیم مزایا و معایب آپاچی چیست و چه کارهایی از این وبسرور برمیآید.
مزایای Apache چیست؟
- این وب سرور منبعباز است و هر کسی میتواند آن را به صورت رایگان دریافت کند؛
- در Apache میتوانید کدها را با توجه به نیازهایتان تنظیم کنید؛
- امکان افزودن ویژگیها و ماژولهای بیشتر برای بهبود عملکردها در Apache وجود دارد؛
- آپاچی عملکردی بسیار قابل اعتماد و عالی دارد؛
- نصب آن ساده است؛
- در Apache تغییرات فوری ثبت میشوند؛
- میتوانید بر روی تمام سیستمعاملهای سرور اجرایش کنید؛
- بهطور فعال توسط یک جامعه نگهداری و ارتقاء داده میشود؛
- وبسرور بسیار انعطافپذیری است؛
- قیمت منصفانهای دارد.
معایب آپاچی چیست؟
- امکان تغییر پیکربندی، هنگامی که با کد و دروازههای ناامن باز میشود، به تهدیدهای مختلف دعوت میشود.
- هر سفارشیسازی احتمالاً با ارورهای جدید همراه خواهد بود؛
- باید برنامهریزی دقیقی برای بهروزرسانی در فواصی زمانی منظم داشته باشید؛
- شناسایی و غیرفعال کردن خدمات و ماژولهای ناخواسته بر عهدۀ خودتان است؛
- وبسایتهای بسیار پرترافیک ممکن است با استفاده از Apache با مشکلات پرفورمنس مواجه شوند.
مقایسه وبسرور آپاچی و NGINX
وبسرور Nginx (با تلفظ Engine-X) رقیب نسبتاً کمسابقهای برای آپاچی است که از سال ۲۰۰۴ و با هدف رقابت با آپاچی به بازار عرضه شد. Nginx را از همان ابتدا برای حل مشکلی با نام c10k میشناسیم. پیش از Nginx وبسرورها نمیتوانستد بیش از ۱۰هزار اتصال بهصورت همزمان را مدیریت کنند و پاسخ درخواستهای همزمان کاربران را در این حجم بدهند. این یعنی سایتهای بسیار پربازدید – بهخصوص در اوج ترافیک – دچار اختلال و کندی میشدند.
وب سرور NginX از معماری رویداد محور بهره میبرد. یعنی برای هر درخواست فرآیند جدیدی را در رشتهٔ اصلی آغاز نمیکند. بلکه فرآیندهای مشابه را به واحدهای کوچکتر و مستقلی به نام «ورکر» میسپارد. به این ترتیب هر درخواست جدیدی که از سمت کاربر ایجاد شود، فقط به ورکر مربوط به آن سپرده میشود. این توزیع درخواست، باعث میشود وبسرور بتواند از درخواستهای همزمان بسیار بالاتری پشتیبانی کند. بنابراین میتوان گفت در مقایسه این دو وبسرور برای سایتهای بسیار پرترافیک (مثل نتفلیکس و پینترست) بیبروبرگرد Nginx گزینهٔ بهتری است. اما اگر بازدیدهای شما آنقدرها هم بالا نیست، اجازه بدهید توجه شما را به نکات دیگری جلب کنیم:
پشتیبانی از سیستمعاملها
آپاچی در تمامی سیستمعاملهای یونیکس (مثل لینوکس) BSD و… اجرا میشود و از ویندوز هم بهطور کامل پشتیبانی میکند. در حالی که Nginx تنها روی سیستمهای مدرن یونیکس قابل اجرا است.
ماژولهای بسیار متنوع
هر دو Nginx و Apache از طیف گستردهای از ماژولها و پلاگینها پشتیبانی میکنند؛ اما در دسترس بودن و کیفیت این ماژولها ممکن است بسته به سرور متفاوت باشد. در واقع این وب سرور دارای کامیونیتی بزرگتر و ماژولهای بیشتر است، در حالی که Nginx ماژولهای نسبتاً کمتری دارد و دارای جامعهای کوچکتر اما در حال رشد است.
محیط مناسب برای مبتدیان
محیط کاربری این دو وبسرور تفاوتهایی با یکدیگر دارد. برای بهکارگیری تنظیمات Nginx لازم است به command تسلط داشته باشید، در حالی که فضا در آپاچی کاملاً ساده و بصری است. با این حال Nginx امکان مدیریت فرآیندهای پیچیدهتری را در اختیارتان قرار میدهد. بهطور خلاصه، محیط گرافیکی، تنظیمات و پیکربندی سادهتر و پشتیبانی از اسکریپتهای داینامیک باعث میشود Apache برای مبتدیان محبوبتر باشد.
محتوای داینامیک یا استاتیک
آپاچی محتوای داینامیک را در خود وبسرور پردازش میکند، در حالی که Nginx چنین امکانی را ندارد و نمیتواند محتوای داینامیک را بهصورت لوکال پردازش کند. در مقابل Nginx میتواند بهطور همزمان هزاران اتصال محتوای ثابت را با دوبرابر سرعت نسبت به Apache اجرا کند و حافظهٔ کمتری را اشغال کند.
مقایسه وبسرور Tomcat و Apache
ساده و خلاصه بگوییم که: سرور HTTP آپاچی، یک وبسرور است که برای سرویسدهی صفحات وب استاتیک طراحی شده است. در حالی که Apache Tomcat یک سرور برنامه کاربردی است که برای سرویسدهی به برنامههای جاوا ساخته شده است. صفحات وب همچنان میتوانند از طریق آپاچی تامکت سرویسدهی شوند، اما کارایی کمتری نسبت به استفاده از سرور HTTP آپاچی خواهد داشت.
مقایسه Apache و LiteSpeed
وبسرور لایت اسپید هم از سال ۲۰۰۳ وارد رقابت با Apache شد و هدف آن ارائه راهحلی برای سرورهای اختصاصی با مقیاسپذیری بالا است. شاید بتوان بهدلیل ویژگی رویدادمحور بودن، لایت اسپید را بیشتر به NginX شبیه دانست تا آپاچی. با این حال باید بگوییم که لایت اسپید، نسبت به هر دو گزینه خلاقیت بیشتری به خرج میدهد و سعی میکند با تغییر ترندها همسویی لازم را داشته باشد.
این نرمافزار از مکانیسمهای پیشبینیکننده برای کنترل ترافیک ورودی و کاهش بار روی سرور استفاده میکند. این یعنی سرعت پردازش درخواستهای همزمان در آن بهطرز قابلتوجهی بالاست. اجازه بدهید این دو نرمافزار را با چند فاکتور دیگر نیز مقایسه کنیم:
۱. محبوبیت میان کاربران!
اگر بخواهیم از جنبهٔ محبوبیت بین کاربران این وبسرورها را مقایسه کنیم، Apache برندهٔ بیقید و شرط است. هرچه باشد چندین سال پیش از لایتاسپید وارد بازار شده و خود را به مشتریان ثابت کرده است. طبق دادههای سایت scalahosting در زمان تولد لایت اسپید، آپاچی نزدیک به ۶۳٪ بازار را در دست داشته و حالا بعد از دو دهه فعالیت و ورود هیجانانگیز رقبا، این مقدار به نزدیک ۳۰٪ کاهش داشته اما هنوز هم قابلتوجه است.
۲. پرفورمنس محتوای استاتیک
LiteSpeed به دلیل معماری ناهمزمان، سازگاری و انعطافپذیری بالاتری با ترافیک بالا و اتصال همزمان دارد. چرا که این نرمافزار از راهحلهایی مثل کش هوشمند استفاده میکند و میتواند درخواستهای مشابه کاربران را ذخیره کند؛ به این ترتیب میتواند پرفورمنس PHP سرور را تا ۵۰ درصد افزایش بدهد و در نهایت نزدیک به ۶ برابر سریعتر از آپاچی محتوای استاتیک را ارائه کند.
علاوهبراین لایتاسپید، فشردهسازی صفحات را به روش شگفتانگیزی انجام میدهد و رم کمتری هم مصرف میکند.
۳. پرفورمنس محتوای داینامیک
با تمام آنچه دربارهٔ محتوای داینامیک گفتیم؛ باید اعتراف کنیم که Apache در پردازش محتوای داینامیک، دست بالا را دارد. اکثر وبسایتها در دنیای امروز محتوای داینامیک دارند و از برنامهنویسی سمت سرور استفاده میکنند. یعنی تعیین میکنند که سرور چطور به درخواستهای کاربران مختلف پاسخ بدهد. سیستمهای مدیریت محتوا هم در کنار برنامهنویسی، سایت داینامیک ارائه میکنند.
آپاچی با پردازش داخلی و همچنین ماژولهای FastCGI و PHP-FPM، قدرت بالاتری در پردازش محتوای داینامیک نسبت به لایت اسپید نشان میدهد؛ در حالی که آپاچی سرعت خام بالاتری ارائه میکند. اما لایت اسپید با فشردهسازی پیشرفتهٔ صفحات توانستهاست فاصلهٔ سرعت نهایی را به حداقل برساند.
۴. پشتیبانی از سیستمعاملها
همانطور که در بخش قبل اشاره کردیم، Apache از سیستمعاملهای متنوعی از ویندوز گرفته تا توزیعهای مختلف یونیکس و تقریباً تمام سیستمعاملهای رایج پشتیبانی میکند. اما LiteSpeed تنها از سیستمعامل لینوکس در توزیعهای مختلف پشتیبانی میکند.
۵. امنیت
آپاچی تمام موارد امنیتی مورد نیاز وبسرور را ارائه میکند. یعنی اجازه میدهد قوانین امنیتیتان را اعمال کنید، دسترسی کاربران را محدود کنید، ماژولها را مدیریت کنید و…
علاوهبراین سعی میکند با بهروزرسانیهای منظم، استانداردهای روز امنیت را رعایت کند و بهطور پیوسته آسیبپذیریها را پوشش بدهد.
با این وجود، لایت اسپید در زمین دیگری بازی میکند. یعنی علاوهبراین که از قوانین mod_security آپاچی پشتیبانی میکند، در برابر حملات Brute Force و DDoS نیز با سیستمهای درونسازمانی که ساختهاست، بسیار مقاوم است.
گرچه هردو در بحث امنیت بسیار قدرتمند ظاهر شدهاند، اما شاید لایت اسپید جزییات بیشتری را در امنیت در نظر گرفته است.
۶. قیمت
در نهایت، به بحث خوشِ قیمت میرسیم که برگ برندهاش همیشه در دست آپاچی است. آپاچی با تمام خدماتی که ارائه میکند، توانسته است قیمت را بهعنوان یک مزیت رقابتی برای خود حفظ کند و بسیار ارزانتر از سایرگزینهها در دسترس قرار بگیرد. هرچه باشد، خیلی از وبسایتهایی که بازدیدهای نتفلیکس و پینترست را ندارند با Apache هم میتوانند سرعت موردنظرشان را با هزینه بسیار پایینتر دریافت کنند.
سوالات پرتکرار
۱. وبسرور آپاچی چیست؟
Apache نرمافزار وبسروری است که با بهترین عملکرد برای پروتکل HTTP/s شناخته میشود. این نرمافزار با ویژگی پردازش داخلی برای تمامی وبسایتهای کوچک و متوسط کاربری مناسبی دارد.
۲. تفاوت وبسرور آپاچی با Nginx و Litespeed چیست؟
وبسرورهای Nginx و Litespeed با قیمت بسیار بالاتر از آپاچی برای وبسایتهایی با بازدیدهای همزمان بسیار بالا کاربرد دارند و پرفورمنس بالاتری برای این سایتها میسازند. آپاچی با هزینه بسیار پایین برای سایتهایی با زیر ۱۰۰۰۰ بازدید همزمان مناسب است.
۳. مزایای وبسرور آپاچی چیست؟
هزینه پایین، سازگاری با تقریباً تمام سیستمعاملهای رایج سرور، توانایی پردازش داخلی وبسایتهای داینامیک از جمله مزایای این وبسرور هستند.
چرا وبسرور آپاچی را انتخاب کنیم؟!
تاکنون دربارهٔ این که آپاچی چیست و چهکار میکند و چه مزایا و معایبی نسبت به سایر رقبای خود دارد، صحبت کردیم. اما هنوز به یک پرسش اساسی پاسخ ندادهایم که با تمام این تفاسیر، آپاچی برای کدام کاربران مناسب است؟ باتوجه به مقایسهای که میان آپاچی، NginX و Litespeed انجام دادیم، دیدیم که برتری تمام گزینهها در سایتها و اپلیکیشنهای بسیار پربازدید خلاصه میشود. منظورمان از بسیار پربازدید، چیزی شبیه به ۱۰۰۰۰ بازدید همزمان است. بنابراین اگر سایت شما در این دسته قرار نمیگیرد و صرفهجویی در هزینهها هم جزو اولویتهای شماست، Apache میتواند گزینهٔ خوبی برایتان باشد. اگر هنوز دربارهٔ این وبسرور ابهام یا سوالی در ذهن دارید، میتوانید از بخش نظرات زیر همین پست از ما بپرسید و پاسخ بگیرید. برای نگارش این محتوا از منابع زیادی مثل Elegant themes استفاده کردهایم.
دیدگاه ها
اولین نفری باشید که دیدگاه خود را ثبت می کنید