زمانی که کاربر درخواستی به سمت سایت شما میفرستد وب سرور وظیفه پاسخ به درخواست کاربر را به عهده دارد و محتوای درخواست شده را ارسال میکند. در این مقاله خواهیم گفت وب سرور چیست و در ادامه به معرفی انواع آن و مقایسه آنها میپردازیم. با ما همراه باشید.
وبسرور چیست و چگونه کار میکند؟
وب سرور برنامهای است که از پروتکل HTTP استفاده میکند تا فایلهایی را در پاسخ به تقاضای کاربران صفحات وب در اختیار قرار دهد. این تقاضاها از طریق اتصال HTTP کامپیوترهای کاربران ارسال میشوند. هر سروری که یک سند XML را به دستگاه دیگر تحویل میکند میتواند یک وب سرور باشد. یک تعریف بهتر به این صورت است که یک وب سرور درواقع یک سرور اینترنت است که به تقاضاهای HTTP برای تحویل محتوا و خدمات پاسخ میدهد.
اکنون با یک مثال ساده توضیح میدهیم، فرض کنید جلوی کامپیوترتان در حال مرور وب هستید و این پیغام را از دوستتان دریافت میکنید:«من یک مقاله فوقالعاده در URL http://www.fastwebhost.in/blog مطالعه کردم». بنابراین شما این URL را در بروزر تایپ کرده و کلید اینتر را فشار میدهید. مهم نیست این وبسایت در کدام وب سرور در دنیا قرار دارد میتواند صفحه را در کامپیوترتان نشان دهد.
یک وب سرور همیشه به اینترنت متصل است. هر سرور اختصاصی مانند سرور اختصاصی ایران یا آلمان و سرور مجازی مانند سرور مجازی ایران یا سرور مجازی آلمان که به اینترنت متصل میشود یک آدرس منحصربفرد دارد که شامل یک سریِ چهار عددی بین ۰ و ۲۵۵ است. این اعداد با نقطه (۰) از هم جدا میشوند. همچنین وب سرور تأمینکنندگان هاست را قادر میسازد تا چندین دامنه (کاربر) را در یک سرور مدیریت کند.
انواع وب سرورها
اصولأ چهار نوع وب سرور وجود دارد – Apache، IIS، NginX و LiteSpeed.
۱.وب سرور Apache
وب سرور Apache یکی از معروفترین وب سرورهایی است که توسط تشکیلات نرمافزاری Apache توسعه داده شده است. Apache که یک نرمافزار منبع باز است تقریبأ از تمام سیستمهای عامل مثل Linux، Windows، Unix FreeBSD، Mac OS X و غیره پشتیبانی میکند. تقریبأ ۶۰% از ماشینها در وب سرور Apache کار میکنند. به راحتی میتوانید یک وب سرور Apache را سفارشی کنید زیرا دارای یک ساختار مدولار است. از آنجاییکه یک منبع باز است، اگر بخواهید اصلاحاتی متناسب با نیازمندیهایتان انجام دهید میتوانید مدولهایتان را به سرور اضافه کنید. این وب سرور در مقایسه با وب سرورهای دیگر به شدت پایدار است و مشکلات اجرایی در آن به راحتی حل میشود. میتوان Apache را با موفقیت در چند پلتفرم نصب کرد. آخرین نسخههای Apache در مقایسه با نسخههای ابتداییتر آن به شما انعطافپذیری لازم برای پاسخ به تقاضاهای بیشتر را ارائه میدهند.
۲.وب سرور IIS
IIS محصول مایکروسافت است و سروری است که تمام ویژگیهای Apache را عرضه میکند. از آنجاییکه این سرور یک منبع باز نیست اضافه کردن مدولهای شخصی و همچنین اصلاح آن کمی دشوار است. این سرور از تمام پلتفرمهایی که در سیستم عامل ویندوز راهاندازی میشوند پشتیبانی میکند. همچنین اگر به مشکل برخوردید میتوانید پشتیبانی از مشتریان را بخوبی دریافت کنید.
۳.وب سرور Nginx
Nginx پس از Apache یک وب سرور منبع باز است. این سرور از پروکسی سرور IMAP/POP3 تشکیل شده است. ویژگیهای قابل توجهی که Nginx ارائه میدهد عبارتند از عملکرد بالا، پایداری، پیکرهبندی ساده و کاربرد منابع کم. Nginx برای پاسخ به تقاضاها به هیچ رشتهای نیاز ندارد، درعوض یک معماری رویدادمحورِ قابل مقیاسبندی که از مقدار کم و قابل پیشبینی از حافظه تحت بار استفاده میکند در اینجا کاربرد دارد. این سرور به تازگی معروف شده و به طور جهانی میزبان 7.5% از تمام دامنهها است. بسیاری از شرکتهای خدمات هاست لینوکس از این سرور استفاده میکنند.
۴.وب سرور LightSpeed
LiteSpeed یک جایگزین برای Apache با عملکرد بالا است و چهارمین وب سرور محبوب در اینترنت و یک وب سرور تجاری میباشد. وقتی وب سرورتان را به LiteSpeed ارتقا میدهید بهبود عملکرد زیاد را با هزینه عملیاتی کم تجربه خواهید کرد. این سرور با ویژگیهای رایج Apache مثل .htaccess، mode_rewrite و mod_security سازگاری دارد. این سرور میتواند فایلهای پیکرهبندی Apache را بارگذاری کند و بصورت یک جایگزین برای Apache همراه با تمام پنلهای کنترل از جمله هاست cPanel کار میکند. سرور LiteSpeed میتواند ظرف 15 دقیقه بدون هیچ خرابی با Apache جایگزین شود. LSWS تمام عملکردها و وظایف Apache را جایگزین میکند که هیچ راه حل پروکسی front-end دیگری نمیتواند این کار را انجام دهد تا تغییر حالت از Apache به LiteSpeed را راحتتر کند.
۵.Apache Tomcat
Apache Tomcat که حاوی منبع بازِ جاوا سرولت (Java servlet) است بصورت یک وب سرور عمل میکند. یک برنامه جاوا که قابلیتهای سرور را توسعه میدهد جاوا سرولت نامیده میشود. سرولتها میتوانند به هر نوع تقاضایی پاسخ دهند اما معمولأ کاربردهای وب سرورها را اجرا میکنند. این سرولتهای وب معادلِ جاوا برای تکنولوژیهای محتوای وب پویا مثل PHP و ASP.NET هستند. میکروسیستمهای سان مبنای کد Tomcat را در سال ۱۹۹۹ به تشکیلات نرمافزاری Apache اهدا کرد که در سال ۲۰۰۵ به یک پروژه سطح بالا برای Apache تبدیل شد. در حال حاضر فقط کمتر از 1% از تمام وبسایتها را پشتیبانی میکند. Apache Tomcat که تحت نسخه دوم مجوز Apache منتشر شده معمولأ برنامههای کاربردی جاوا را اجرا میکند. اما میتوان آن را به Coyote توسعه داد به گونهای که بتواند نقش یک وب سرور نرمال که فایلهای محلی را بصورت اسناد HTTP ارائه میدهد را نیز ایفا کند. Apache Tomcat اغلب در میان سرورهای برنامه کاربردی جاوا منبع باز فهرستبندی میشود، مثل Wildfly، JBoss و Glassfish.
۶.Node.js
Node.js اساسأ یک محیط JavaScript برای سرور است که برای برنامههای کاربردی شبکه مثل وب سرورها بکار میرود. در اصل رایان داهل در سال 2009 آن را نوشت. Node.js با موقعیت کوچکتری که در بازار دارد تقریبأ 0.2% از تمام وبسایتها را پشتیبانی میکند. پروژه Node.js به مدیریت تشکیلات Node.js به کمک برنامه پروژههای مشارکتی تشکیلات Linux انجام می شود. هاست Nodejs با وب سرورهای محبوب دیگر فرق دارد زیرا این سرور اصولأ یک محیط زمان اجرای کراسپلتفرم برای ساخت برنامههای کاربردی شبکه است. یک معماری رویدادمحور توسط Node.js اعمال میشود که قادر به اجرای I/O ناهمزمان است. به دلیل این انتخابهای طراحی، توان عملیاتی و مقیاسبندی در برنامههای کاربردی وب بهینهسازی میشوند که به برقراری ارتباطات زمان واقعی و بازیهای بروزر کمک میکند.. Node.js همچنین به درک اختلاف در پشتههای توسعه وب کمک میکند که در آن Node.js به وضوح بخشی از پشتههای HTML، CSS و JavaScript میباشد، برخلاف Apache یا NGINX که بخشی از چند پشته نرمافزاری مختلف هستند. Node.js تحت ترکیبی از مجوزهای گوناگون منتشر میشود.
۷.Lighttpd
Lighttpd که «lightly» تلفظ میشود در ابتدا در مارس سال 2003 منتشر شد. Lighttpd در حال حاضر تقریبأ 0.1% از تمام وبسایتها را راهاندازی میکند و تحت مجوز BSD توزیع میشود. Lighttpd به دلیل بار CPU کم، فوتپرینت کمحافظه و بهینهسازی سرعت منحصربفرد است. این سرور از یک معماری رویدادمحور استفاده میکند و برای تعداد زیادی از اتصالات موازی بهینهسازی میشود و همچنین از ویژگیهای fastCGI، Auth، Output-compression، SCGI، URL-rewriting و بسیاری از ویژگیهای دیگر پشتیبانی میکند. این یک وب سرور محبوب برای چارچوبهای وب مثل Catalyst و Ruby on Rails است.
انواع دیگری از سرورها نیز وجود دارد که در ادامه به آنها میپردازیم:
مِیل سرور
در یک میل سرور یک فضای دیسکِ از درون قفل شده برای ذخیرهسازی و اشتراکگذاری اسناد مختلف در قالب ایمیل برای کاربران شبکه در اختیار دارد. تمام دادهها در یک مکان ذخیره میشود و در نتیجه مدیران فقط باید فایلها را از یک کامپیوتر بکآپ بگیرند.
اپلیکیشن سرور
این سرور بصورت مجموعهای از اجزا عمل میکند که توسعهدهنده نرمافزار از طریق یک API که بوسیله خودِ پلتفرم تعریف شده آن را پردازش میکند. این اجزا معمولأ در محیطی مشابه با وب سرور(ها) برای اپلیکیشنهای وب اجرا میشوند. وظیفه اصلی آنها پشتیبانی از ساخت صفحات پویا است.
سرور پروتکل انتقال فایل (FTP)
کنترل جداگانه و اتصالات داده توسط FTP بین مشتری و سرور بکار میروند. کاربرانFTP میتوانند با یک نام کاربری و رمز ورود اجازه دسترسی داشته باشند. هرچند اگر سرور به آنها اجازه نداد میتوانند با استفاده از نامهای ناشناس متصل شوند. برای امنیت انتقال، نام کاربری و رمز عبور باید با استفاده از FTP و SSL رمزنگاری شوند.
سرور پایگاه داده
یک برنامه کامپیوتری که خدمات پایگاه داده را به برنامههای کامپیوتری یا کامپیوترهای دیگر با استفاده از عاملیتِ مشتری-سرور ارائه میدهد «سرور پایگاه داده» نامیده میشود. با توجه به مدل مشتری-سرور برای دسترسی به پایگاه داده، تعدادی DBMS وجود دارد (مثلأ: MySQL). این نوع سرور از طریق یک «front end» که در کامپیوتر کاربر اجرا میشود و تقاضا را مطرح میکند یا یک «back end» که به عنوان یک تحلیل و ذخیرهسازی داده عمل میکند قابل دسترسی است.
سرور سیستم نام دامنه (DNS)
یک سرور کامپیوتر که میزبان خدمات شبکه برای پاسخ به جستارها است «نِیم سرور» نامیده میشود. این سرور یک مولفه آدرس یا شناسایی عددی را ترسیم میکند. این کار توسط سرور انجام میشود تا به تقاضای پروتکل خدمات شبکه پاسخ دهد. این سرورهای DNS اصولأ اسامی دامنه و اسامی هاست که انسان میتواند بخاطر بسپارد را به آدرسهای پروتکل اینترنت عددی (IP) ترجمه میکنند. DNS همچنین به تشخیص فضای اسمی اینترنت کمک میکند؛ این فضا برای شناسایی و پیدا کردن سیستمهای کامپیوتری و منابع در اینترنت بکار میرود.
جمعبندی …
شرکتهای هاستینگ وب اصولأ وب سرورها را براساس نیازمندیهای مشتریان، تعداد مشتریان در یک سرور، کاربرد مشتریان برنامههای کابردی/نرمافزار و مقدار ترافیکی که یک وب سرور میتواند تحمل کند انتخاب میکنند. بنابراین در حین انتخاب یک وب سرور در ابتدا به تمام این جنبهها فکر کنید و سپس یکی را انتخاب نمایید.
رقبا (مدعیان)
OpenLiteSpeed، NGiNX و Apache را بررسی کردیم و با شبیهسازی ۱۰ هزار تقاضای ۱۰۰ کاربر همزمان آزمایشاتی را انجام دادیم. همچنین بررسی کردیم که این سه وب سرور چگونه یک فایل استاتیک کوچک و یک نسخه PHP ساده را اجرا میکنند و سپس عملکردِ WordPress آنها را ارزیابی کردیم. وقتی نوبت به هاست وردپرس میرسد عملکرد کشینگ بسیار مهم است، بنابراین اطمینان حاصل کردیم که از راهحل کشینگ مناسبی برای هر وب سرور در آزمایشاتمان استفاده میکنیم. تمام آزمایشات همراه با ویژگی Keep-Alive انجام شدند.
نتایج
نمودارهای زیر نشان میدهند که این سه سرور چند تقاضا در هر ثانیه را در سری آزمایشاتمان پردازش کردند. هرچه عدد بزرگتر باشد بهتر است.
فایلهای استاتیک به پردازش نیاز ندارند و در نتیجه این آزمایش برای اندازهگیری زمانهای پاسخ سرورها سودمند است. هر سرور با چه سرعتی میتواند فایلهای استاتیک کوچک را تحویل دهد؟ وقتی PHP app «Hello World» را به عنوان معیار قرار میدهیم، شرایط دنیای واقعی را آزمایش نمیکنیم. با این وجود این بهترین راه برای تفکیک ارتباطات بین سرور و PHP از پردازش PHP است. در این آزمایش چیزی که بیشتر به آن علاقه پیدا کردیم ارتباط کارآمدِ سرور با موتور PHP بود. WordPress یک اپلیکیشن PHP سنگین است و بدین ترتیب کشینگ به شدت توصیه میشود. در این آزمایش هر سرور را با یک گزینه کشینگ مناسب جفت کردیم. همانطور که مشاهده میکنید OpenLiteSpeed در تمام سناریوها بهتر از NGiNX و Apache عمل میکند.