شاید برای شما هم سوال شده باشد که وب سرور چیست ؟
خب شاید براتون جالب باشه که بدونید : وبسرور (Web Server) نرمافزار و سختافزاری است که از پروتکل HTTP (Hypertext Transfer Protocol) و پروتکلهای دیگر برای پاسخ به درخواستهای مشتری از طریق شبکه جهانی وب استفاده میکند. وظیفهی اصلی وبسرور نمایش محتوای وبسایت از طریق ذخیرهسازی، پردازش و ارائه صفحات وب به کاربران است. وبسرورها علاوه بر HTTP، از پروتکل SMTP (Simple Mail Transfer Protocol) و FTP (File Transfer Protocol) که برای ایمیل، انتقال فایل و ذخیرهسازی استفاده میشود نیز پشتیبانی میکنند.
سختافزار یک وبسرور به اینترنت متصل است و امکان تبادل داده با سایر دستگاههای متصل را فراهم مینماید. در حالی که نرمافزار وبسرور نحوه دسترسی کاربر به فایلهای میزبانی شده را کنترل میکند. فرآیند وبسرور نمونهای از مدل مشتری/ سرور است. تمامی رایانههایی که میزبان وبسایتها هستند باید دارای نرمافزار وبسرور باشند. وبسرورها در میزبانی وب یا میزبانی دادهها برای وبسایتهای و برنامههای مبتنی بر وب (اپلیکیشنها) استفاده میشوند.
وب سرور ها چگونه کار می کنند ؟
نرمافزار وبسرور از طریق نام دامنه وبسایتها قابل دسترسی است و اطمینان میدهد که محتوای درخواستی از وبسایت به کاربر تحویل داده میشود. نرمافزار وبسرور نیز از چندین مولفه تشکیل شده است که حداقل یک از آنها سرور HTTP است. سرور HTTP قادر به درک HTTP (پروتکلی که مرورگر وب برای بازدید از صفحات یک وبسایت استفاده میکند.) و URLها (آدرس صفحات وب) است. وبسرور به عنوان سختافزار، رایانهای است که نرمافزار وبسرور و سایر فایلهای مربوط به یک وبسایت، مانند اسناد HTML،تصاویر و فایلهای جاوااسکریپت را ذخیره میکند.
هنگامی که یک مرورگر وب، مانند گوگل کروم یا فایرفاکس، به فایلی نیاز دارد که روی سرور وب میزبانی شده باشد، مرورگر فایل را از طریق پروتکل HTTP درخواست میکند. هنگامی که درخواست توسط وبسرور دریافت میشود، سرور HTTP درخواست را میپذیرد، محتوا را پیدا میکند و آن را از طریق HTTP به مرورگر ارسال میکند.
به طور دقیقتر، هنگامی که یک مرورگر صفحهای را از یک وبسرور درخواست میکند، این فرآیند یک سری مراحل را دنبال میکند. ابتدا، شخص یک URL را در نوار آدرس مرورگر وب مشخص میکند. سپس مرورگر وب آدرس IP نام دامنه را به دست میآورد (یا از طریق DNS (سیستم نام دامنه) آن را ترجمه میکند یا اگر قبلا به این آدرس مراجعه کرده آن را در حافظه پنهان جستجو میکند). با این کار مرورگر به یک وبسرور منتقل میشود. سپس مرورگر با درخواست HTTP فایل خاصی را از وبسرور درخواست میکند. وبسرور پاسخ میدهد و صفحه درخواستی را دوباره از طریق HTTP به مرورگر می فرستد. اگر صفحه درخواستی وجود نداشته باشد یا مشکلی پیش بیاید، وبسرور با یک پیام خطا به مرورگر پاسخ خواهد داد. سپس مرورگر قادر به نمایش صفحه وب خواهد بود. دامنههای متعددی نیز میتوانند بر روی یک وبسرور میزبانی شوند.
انواع وب سرور چی هستند ؟
وبسرورهای مختلفی با کاربردها و ویژگیهای خاص خود وجود دارند که در ادامه تعدادی از معروفترین آنها را معرفی میکنیم:
سرور HTTP آپاچی (Apache)
آپاچی یک وبسرور رایگان و متنباز (open source) برای ویندوز، Mac OS X، Unix، Linux، Solaris و سایر سیستم عاملهاست که توسط بنیاد نرمافزار آپاچی توسعه یافته است. متنباز بودن یک برنامه بدین معنی است که کدهای آن به صورت رایگان در دسترس همگان قرار دارد و برنامهنویسان در سراسر دنیا میتوانند به توسعه آن کمک کنند. آپاچی یکی از وبسرورهای مورد علاقه برنامهنویسان است که میتواند با کمترین پیکرهبندی حجم ترافیک بالایی را مدیریت کند.
IIS(Microsoft Internet Information Services)
IIS توسط شرکت مایکروسافت و برای پلتفرمهای مختلف توسعه یافته است. این وبسرور متنباز نیست؛ ولی با توجه به انعطافپذیری در پشتیبانی از انواع فریمورکها به طور گسترده استفاده میشود.
وبسرور Nginx
Nginx یک وبسرور متنباز محبوب است که به دلیل معماری رویداد محور، با استفاده از میزان رم کمتر میتواند بسیاری از نشستها (sessions) را به صورت همزمان مدیریت کند. Nginx همچنین میتواند به عنوان یک سرور پروکسی (proxy server) و متعادلکننده بار (load balancer) استفاده شود.
لایت اسپید (Litespeed)
لایت اسپید یک وبسرور رایگان و متنباز است که با سیستم عامل FreeBSD ارائه میشود. این وبسرور با مصرف CPU کمتر میتواند درخواستهای بیشتری را مدیریت کند. لایت اسپید عملکرد مناسب، امنیت و انعطافپذیری بالایی دارد.
وبسرورهای مجبوب و پیشروی امروزی شامل آپاچی، IIS و Nginx میشوند. از سایر وبسرورها میتوان به سرور Novell’s Netware، GWS (Google Web Server) و خانواده IBM از سرورهای Domino اشاره کرد.
برای انتخاب یک وبسرور مناسب باید به مواردی مانند سازگاری آن با سیستم عاملهای مختلف، توانایی آن برای به کار بردن برنامهنویسی سمت سرور، مشخصات امنیتی، انتشار، موتور جستجو و ابزراهای ساخت وبسایت همراه آن توجه کرد. برخی وبسرورها تنظیمات مختلفی نیز دارند که به طور معمول بر روی مقادیر پیشفرض تنظیم شدهاند. برای ایجاد عملکرد بالا در یک وبسرور عواملی مانند توان عملیاتی بالا و تاخیر کم می توانند کمککننده خواهند بود.
حالا که فهمیدم وب سرور چیه و چطوری کار می کنه بیاید با هم یک وب سرور معمولی طراحی کنیم !
شما برای طراحی وب سرور می تونید از ابزار های زیادی استفاده کنید مثل زبان برنامه نویسی php یا یکی از زبان های برنامه نویسی سمت سرور
من برای ساخت وب سرور از زبان جاوا اسکریپت استفاده می کنم اما چون این زبان سمت سرور اجرا میشه باید از یکی از فریمورک هاش ( در واقع فریمورک نیست یک محیطیه که شما توش می تونی جاوا اسکریپت رو سمت سرور اجرا کنی ) به نام نود جی اس (node.js) استفاده می کنم شما می تونید به جای اینکه از نود جی اس استفاده کنید از express.js هم استفاده کنید اما من الان فقط از node.js استفاده می کنم
برای شروع شما باید اول node.js و npm رو هم روی سیستم خودتون داشته باشید اما اگر این دوتارو ندارید می تونید از سایت نود جی اس هر دوش رو دریافت کنید
برای شروع یک فایل می سازید به نام main.js
خب حالا شروع می کنیم به کد نویسی وب سرور مون
ابتدا باید یکی از کتابخانه های نود جی اس رو فراخوانی کنید
const http = require("http");
اسم این ماژول همینطوری که میبینید http نام داره
این ماژول یک سری متد داره که به ما برای ساخت وب سرور کمک می کنه
حالا باید مشخص کنیم که وب سرور ما روی چه پورتی باشه عدد دلخواهی داره و شما می تونید هر عددی بگذارید ولی اعداد خیلی گنگ و عجیب نذارید . مشکلی نداره اما اصولی نیست
const Port = 4000;
حالا می ریم سراغ اون متد هایی که گفتم مال ماژول http هستش
از متد createserver برای ساخت وب سرور استفاده می کنیم
const server = http.createServer((req, res) => {
//کدهاتون رو باید اینجا بنویسید
});
در مرحله قبلی شی سرور را ساختید و اکنون نوبت به آن رسیده است که گوش شنوای آن را فعال کنید. برای این کار از متد Listen استفاده می کنید؛ توجه داشته باشید که این متد باید روی شی سرور فراخوانی شود. در مراحل قبلی ساخت وب سرور با Node.Js ، پورت را 5000 تعیین کردیم و اکنون باید همین درگاه را برای شنیدن به سرور معرفی کنیم.
Server.listen (port, function (error) {
Consol.log (error);
If (error) {
Throw new Error (error.message);
}
Else {
Consol.log (‘listening on port’ + port);
}
})
طبیعتا سرور تنها برای دریافت درخواست ها ایجاد نشده و باید بتواند پاسخ مناسبی برای هر کلاینت ارسال کند. در این مرحله لازم است از پارامتر Response برای ارسال پاسخ استفاده کنید. به عنوان مثال در قطعه کد زیر سرور ما برای همه درخواست های ورودی پاسخ hello world را ارسال می کند.
برید سراغ قسمتی که از متد createServer استفاده کردیم و این کد ها رو داخلش بنویسید
Const server = http.createServer ((req, res)=> {
res.write (‘Hello World’);
res.end ();
});
به عنوان آرگومان ورودی متد Write هر پیغامی که قصد دارید برای کاربر ارسال کنید را می نویسید و با استفاده از متد end نشان می دهید که ارسال تمام شده است.
برای امتحان این قسمت از برنامه بعد از اجرای سرور با استفاده از دستور node app.js در ترمینال vs code ، مرورگر را باز کنید و بر روی localhost:5000 بروید تا پیغام Hello World را ببینید.
طبیعتا یک وب سرور قرار نیست جواب سلام درخواست های کلاینت ها را بدهد و باید یکی از صفحات HTML را که در اختیار دارد برای آن ها ارسال کند. یک فایل HTML دلخواه ایجاد کنید و آن را در پوشه Mywebserver قرار دهید.
ورودی متد Write یک رشته است؛ پس شما باید به سرور بفهمانید که صفحه HTML را به صورتی برای مرورگر ارسال کند که آن را به درستی نمایش دهد. به این منظور از قطعه کد زیر استفاده می کنید که داده هایی را به هدر پاسخ اضافه می کند.
این یک وب سرور مبتدی و بسیار ساده بود که با نود جی اس نوشته شده بود
انشالله در قسمت های بعدی مباحثی مثل روتینگ و طراحی با اکسپرس جی اس هم کار می کنم
امیدوارم از این نوشته خوشتون اومده باشه
دیدگاهها