برنامه نویسی

100 روز توزیع سرورها – روزهای 4 و 100 روز 4 مقدمه ای بر وب سرورها

Summarize this content to 400 words in Persian Lang

در این سفر از سری مقالات خود، ما عمیق‌تر به یکی از مؤلفه‌های کلیدی و ضروری برای عملکرد اینترنت خواهیم پرداخت: وب سرورها. اصل KISS (ساده نگه دارید، احمقانه) یک مفهوم اساسی است که باید مرتباً حفظ شود تا همه چیز تمیز و ساده بماند. به همین دلیل، ما دانش سطح مبتدی را برای درک سرورهای وب، که برای ساخت و میزبانی وب سایت ها یا برنامه های کاربردی وب ضروری است، تقویت خواهیم کرد.

شخصاً برای یکی از پروژه‌هایم در یک سناریوی واقعی، از لاراول برای باطن و فلاتر برای قسمت جلوی اپلیکیشن موبایل استفاده می‌کنم. علاوه بر این، من از Vue.js برای پروژه دیگری استفاده می کنم، و برای یک پروژه وب جاه طلبانه تر، از React استفاده می کنم.

وب سرور سیستمی است که باید تنها مسئولیت ذخیره، پردازش و تحویل صفحات وب به کاربران را بر عهده داشته باشد. ما اکنون در مورد هر دو جنبه نرم افزاری و سخت افزاری صحبت می کنیم که وب سایت ها را در دسترس قرار می دهد.

این پیکربندی nuxt است:

require(“dotenv”).config();
export default {
env: {
baseUrl: process.env.BASE_URL,
},
generate: {
/* routes () {
return axios.get(‘https://myapisite.com/’)
.then((res) => {
return res.data.map((user) => {
return ‘/users/’ + user.id
})
})
}*/
},

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

وقتی یک URL یا حتی یک آدرس IP را در مرورگر تایپ می کنیم، در حال ارسال درخواست به یک سرور هستیم که آدرس اینترنتی مسیر سرور است. وب سرور درخواست را دریافت می کند، آن را پردازش می کند و پاسخ مناسب را که می تواند یک صفحه HTML، یک تصویر، یک ویدیو یا منابع دیگر باشد، پس می فرستد.

در ابتدایی ترین سطح خود، یک وب سرور دو نقش اصلی دارد:رسیدگی به درخواست‌های HTTP: به درخواست‌های HTTP یا HTTPS ارائه‌شده توسط مشتریان (مرورگرهای وب) پاسخ دهید.ارائه محتوا: محتوای ایستا یا پویا مانند صفحات HTML، CSS، جاوا اسکریپت، تصاویر و فایل های چند رسانه ای را ارائه دهید.

رسیدگی به درخواست‌های HTTP: به درخواست‌های HTTP یا HTTPS ارائه‌شده توسط مشتریان (مرورگرهای وب) پاسخ دهید.ارائه محتوا: محتوای ایستا یا پویا مانند صفحات HTML، CSS، جاوا اسکریپت، تصاویر و فایل های چند رسانه ای را ارائه دهید.

چگونه یک وب سرور کار می کند

گام به گام، یک سرور مراحل زیر را دنبال می کند:

درخواست مشتری: یک سرویس گیرنده (مرورگر شما) یک درخواست HTTP را به سرور وب ارسال می کند. به عنوان مثال، وقتی www.mysite.com را تایپ می کنید، مرورگر درخواستی را به سرور میزبان سایت ارسال می کند.

سرور درخواست را پردازش می کند: وب سرور درخواست را دریافت کرده و محتوای درخواستی را بررسی می کند. اگر محتوا وجود داشته باشد، برای پاسخ آماده می شود (مانند یک فایل HTML، یک تصویر و غیره).

وب سرور پاسخ را ارسال می کند: سرور پاسخ را به مشتری ارسال می کند. اگر محتوا پیدا نشد، سرور به عنوان بهترین روش، پیام خطایی مانند «404 یافت نشد» کلاسیک را برمی‌گرداند یا باید برگرداند.

مشتری محتوا را نمایش می دهد: در مرورگر، پاسخ سرور پردازش می شود و صفحات یا منابع مختلف رندر یا نمایش داده می شوند.

انواع وب سرورها

چندین وب سرور در دسترس است که هر کدام نقاط قوت و موارد استفاده خاص خود را دارند. در اینجا تعدادی از محبوب ترین آنها وجود دارد:

سرور HTTP آپاچی
بررسی اجمالی: آپاچی یکی از قدیمی ترین و پرکاربردترین وب سرورها است. این منبع باز و بسیار قابل تنظیم است، و آن را به بهترین انتخاب برای بسیاری از شرکت ها و توسعه دهندگان میزبانی وب تبدیل می کند. موارد استفاده: مناسب برای وب‌سایت‌های کوچک تا بزرگ، سفارشی‌سازی و کنترل گسترده روی پیکربندی‌های سرور را ارائه می‌دهد.

Nginx
نمای کلی: Nginx (تلفظ “Engine-X”) به دلیل عملکرد، مقیاس پذیری و استفاده کارآمد از منابع شناخته شده است. این برای تحمل بارهای بالا طراحی شده است و اغلب به عنوان یک پروکسی معکوس یا متعادل کننده بار استفاده می شود. موارد استفاده: ایده آل برای وب سایت های پربازدید، مدیریت API و معماری میکروسرویس ها.

Microsoft IIS (خدمات اطلاعات اینترنتی)
نمای کلی: IIS وب سرور مایکروسافت است که به شدت با سرورهای ویندوز یکپارچه شده است. از چندین زبان از جمله ASP.NET، PHP و غیره پشتیبانی می کند. موارد استفاده: برای محیط‌های مبتنی بر ویندوز و راه‌حل‌های سازمانی که به فناوری‌های مایکروسافت متکی هستند، ترجیح داده می‌شود.

LiteSpeed
بررسی اجمالی: LiteSpeed ​​یک وب سرور سبک وزن و با کارایی بالا است که با فایل های پیکربندی آپاچی سازگاری دارد. این طراحی شده است تا عملکرد را افزایش دهد و در عین حال مصرف منابع را پایین نگه دارد. موارد استفاده: مناسب برای وب سایت های با کارایی بالا که در آن سرعت و بار کم سرور بسیار مهم است.

Node.js
بررسی اجمالی: Node.js یک وب سرور سنتی نیست، بلکه یک زمان اجرا جاوا اسکریپت است که به شما امکان می دهد وب سرورهایی را با استفاده از جاوا اسکریپت ایجاد کنید. برای برنامه ها و خدمات بلادرنگ بسیار کارآمد است. موارد استفاده: مناسب برای برنامه‌های پویا و بی‌درنگ مانند برنامه‌های چت، پخش زنده ویدیو و APIها.

برای سرور اکسپرس به صورت محلی: در بسته من.json: من دارم:

{
“name”: “node-hello-world”,
“private”: true,
“version”: “0.0.1”,
“description”: “Node.js Hello world app on docker”,
“author”: “hypriot.com”,
“dependencies”: {
“express”: “4.12.0”
}
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در همان پوشه: من index.js دارم

var express = require(‘express’);
var os = require(“os”);

var app = express();
var hostname = os.hostname();

app.get(“https://dev.to/”, function (req, res) {
const ip = req.headers[‘x-forwarded-for’];

res.send(‘Node.js container ‘ + hostname + ‘ ‘ + ‘Client IP: ‘ + ip + ”);
});

app.listen(80);
console.log(‘Running on http://localhost’);

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بعد از نوشتن آن فایل ها، فقط باید npm install و node index.js را اجرا کنم!

وب سرورها بسته به نوع وب‌سایت و پیکربندی آن، می‌تواند محتوای ثابت و پویا را ارائه دهد، که می‌تواند متفاوت باشد:

سرور استاتیک به سادگی فایل های ذخیره شده را بدون پردازش به مشتری تحویل می دهد. وب‌سایت‌های استاتیک سریع‌تر هستند اما از نظر تعاملی محدود هستند. فایل ها به صورت HTML، CSS و جاوا اسکریپت از پیش ساخته شده اند و با دسترسی کاربر به آنها تغییر نمی کنند.

مثال: یک وب سایت نمونه کارها یا صفحه اصلی یک شرکت.سرورهای پویا با تولید محتوا به تدریج درخواست های پیچیده تری را انجام می دهند. اینها معمولاً شامل یک پایگاه داده و یک زبان برنامه نویسی سمت سرور مانند PHP، Python یا Node.js هستند.

مثال: یک فروشگاه آنلاین محتوایی را ارائه می دهد که بر اساس تعامل کاربر به روز می شود.

برای عملکرد کارآمد، یک وب سرور شامل چندین مؤلفه است. عناصر اولیه عبارتند از:

نرم افزار HTTP: درخواست ها و پاسخ های HTTP را مدیریت می کند. این نرم افزار وظیفه ارائه محتوا و برقراری ارتباط با مشتریان را بر عهده دارد.

سیستم عامل: وب سرور بر روی سیستم عاملی مانند لینوکس، ویندوز یا macOS اجرا می شود که امکان مدیریت منابع، فایل ها و فرآیندهای سرور را فراهم می کند.

پایگاه داده (اختیاری): بسیاری از وب‌سایت‌ها با محتوای پویا به یک پایگاه داده مانند MySQL یا PostgreSQL برای ذخیره یا بازیابی داده‌ها در زمان واقعی نیاز دارند. به عنوان مثال، زمانی که ما وارد می شویم، اطلاعات از پایگاه داده دریافت می شود.

زبان سمت سرور (اختیاری): زبان هایی مانند PHP، Python یا جاوا اسکریپت (Node.js) محتوای پویا و تعامل با پایگاه داده را کنترل می کنند.

راه های مختلفی برای میزبانی وب سایت خود وجود دارد:میزبانی محلی: اجرای یک وب سرور بر روی رایانه شخصی خود برای اهداف توسعه. می توانید از ابزارهایی مانند XAMPP (برای آپاچی) یا سرور Node.js برای آزمایش برنامه های خود استفاده کنید.میزبانی مشترک: یک راه حل مقرون به صرفه که در آن چندین وب سایت منابع سرور یکسانی را به اشتراک می گذارند. معمولاً توسط ارائه دهندگان میزبانی وب ارائه می شود.میزبانی VPS: میزبانی سرور خصوصی مجازی (VPS) با ارائه سرور مجازی اختصاص داده شده به نیازهای شما، کنترل و منابع بیشتری نسبت به هاست اشتراکی به شما می دهد.هاست ابری: سرویس‌هایی مانند خدمات وب آمازون (AWS)، Google Cloud یا Microsoft Azure گزینه‌های میزبانی وب مقیاس‌پذیر و قابل پرداخت را برای برنامه‌های کاربردی در مقیاس بزرگ ارائه می‌دهند.راه های مختلفی برای میزبانی وب سایت وجود دارد: میزبانی محلی : اجرای یک وب سرور بر روی رایانه شخصی خود برای اهداف توسعه. می توانید از ابزارهایی مانند XAMPP (برای آپاچی) یا سرور Node.js برای آزمایش برنامه های خود استفاده کنید.میزبانی مشترک: یک راه حل مقرون به صرفه که در آن چندین وب سایت منابع سرور یکسانی را به اشتراک می گذارند. معمولاً توسط ارائه دهندگان میزبانی وب ارائه می شود.

میزبانی VPS: میزبانی سرور خصوصی مجازی (VPS) با ارائه سرور مجازی اختصاص داده شده به نیازهای شما، کنترل و منابع بیشتری نسبت به میزبانی مشترک به شما می دهد.

شخصاً وقتی صحبت از نمونه کارها می شود، از راه حل هاست اشتراکی استفاده می کنم. VPS برای راه حل هایی که نیاز به سرور سفارشی دارند ایده آل است. از آنچه من می دانم، راه اندازی یک سرور اشتراکی برای Node.js بسیار دشوار است، بنابراین VPS بهترین راه حل است.

در DigitalOcean، من یک وب سرور برای API ساخته شده با لاراول دارم، و برای رندر کردن با Nuxt.js، که با تعاملات Vue.js ارتباط برقرار می کند، از سرور Node.js استفاده می کنم که از نیمی از منابع API استفاده می کند.

در این سفر از سری مقالات خود، ما عمیق‌تر به یکی از مؤلفه‌های کلیدی و ضروری برای عملکرد اینترنت خواهیم پرداخت: وب سرورها. اصل KISS (ساده نگه دارید، احمقانه) یک مفهوم اساسی است که باید مرتباً حفظ شود تا همه چیز تمیز و ساده بماند. به همین دلیل، ما دانش سطح مبتدی را برای درک سرورهای وب، که برای ساخت و میزبانی وب سایت ها یا برنامه های کاربردی وب ضروری است، تقویت خواهیم کرد.

شخصاً برای یکی از پروژه‌هایم در یک سناریوی واقعی، از لاراول برای باطن و فلاتر برای قسمت جلوی اپلیکیشن موبایل استفاده می‌کنم. علاوه بر این، من از Vue.js برای پروژه دیگری استفاده می کنم، و برای یک پروژه وب جاه طلبانه تر، از React استفاده می کنم.

وب سرور سیستمی است که باید تنها مسئولیت ذخیره، پردازش و تحویل صفحات وب به کاربران را بر عهده داشته باشد. ما اکنون در مورد هر دو جنبه نرم افزاری و سخت افزاری صحبت می کنیم که وب سایت ها را در دسترس قرار می دهد.

این پیکربندی nuxt است:

require("dotenv").config();
export default {
  env: {
    baseUrl: process.env.BASE_URL,
  },
  generate: {
    /* routes () {
        return axios.get('https://myapisite.com/')
            .then((res) => {
                return res.data.map((user) => {
                    return '/users/' + user.id
                })
            })
    }*/
  },
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید


وقتی یک URL یا حتی یک آدرس IP را در مرورگر تایپ می کنیم، در حال ارسال درخواست به یک سرور هستیم که آدرس اینترنتی مسیر سرور است. وب سرور درخواست را دریافت می کند، آن را پردازش می کند و پاسخ مناسب را که می تواند یک صفحه HTML، یک تصویر، یک ویدیو یا منابع دیگر باشد، پس می فرستد.

در ابتدایی ترین سطح خود، یک وب سرور دو نقش اصلی دارد:
رسیدگی به درخواست‌های HTTP: به درخواست‌های HTTP یا HTTPS ارائه‌شده توسط مشتریان (مرورگرهای وب) پاسخ دهید.
ارائه محتوا: محتوای ایستا یا پویا مانند صفحات HTML، CSS، جاوا اسکریپت، تصاویر و فایل های چند رسانه ای را ارائه دهید.

رسیدگی به درخواست‌های HTTP: به درخواست‌های HTTP یا HTTPS ارائه‌شده توسط مشتریان (مرورگرهای وب) پاسخ دهید.
ارائه محتوا: محتوای ایستا یا پویا مانند صفحات HTML، CSS، جاوا اسکریپت، تصاویر و فایل های چند رسانه ای را ارائه دهید.

توضیحات تصویر

چگونه یک وب سرور کار می کند

گام به گام، یک سرور مراحل زیر را دنبال می کند:

درخواست مشتری: یک سرویس گیرنده (مرورگر شما) یک درخواست HTTP را به سرور وب ارسال می کند. به عنوان مثال، وقتی www.mysite.com را تایپ می کنید، مرورگر درخواستی را به سرور میزبان سایت ارسال می کند.

سرور درخواست را پردازش می کند: وب سرور درخواست را دریافت کرده و محتوای درخواستی را بررسی می کند. اگر محتوا وجود داشته باشد، برای پاسخ آماده می شود (مانند یک فایل HTML، یک تصویر و غیره).

وب سرور پاسخ را ارسال می کند: سرور پاسخ را به مشتری ارسال می کند. اگر محتوا پیدا نشد، سرور به عنوان بهترین روش، پیام خطایی مانند «404 یافت نشد» کلاسیک را برمی‌گرداند یا باید برگرداند.

مشتری محتوا را نمایش می دهد: در مرورگر، پاسخ سرور پردازش می شود و صفحات یا منابع مختلف رندر یا نمایش داده می شوند.

انواع وب سرورها

چندین وب سرور در دسترس است که هر کدام نقاط قوت و موارد استفاده خاص خود را دارند. در اینجا تعدادی از محبوب ترین آنها وجود دارد:

  1. سرور HTTP آپاچی
    بررسی اجمالی: آپاچی یکی از قدیمی ترین و پرکاربردترین وب سرورها است. این منبع باز و بسیار قابل تنظیم است، و آن را به بهترین انتخاب برای بسیاری از شرکت ها و توسعه دهندگان میزبانی وب تبدیل می کند. موارد استفاده: مناسب برای وب‌سایت‌های کوچک تا بزرگ، سفارشی‌سازی و کنترل گسترده روی پیکربندی‌های سرور را ارائه می‌دهد.
  2. Nginx
    نمای کلی: Nginx (تلفظ “Engine-X”) به دلیل عملکرد، مقیاس پذیری و استفاده کارآمد از منابع شناخته شده است. این برای تحمل بارهای بالا طراحی شده است و اغلب به عنوان یک پروکسی معکوس یا متعادل کننده بار استفاده می شود. موارد استفاده: ایده آل برای وب سایت های پربازدید، مدیریت API و معماری میکروسرویس ها.
  3. Microsoft IIS (خدمات اطلاعات اینترنتی)
    نمای کلی: IIS وب سرور مایکروسافت است که به شدت با سرورهای ویندوز یکپارچه شده است. از چندین زبان از جمله ASP.NET، PHP و غیره پشتیبانی می کند. موارد استفاده: برای محیط‌های مبتنی بر ویندوز و راه‌حل‌های سازمانی که به فناوری‌های مایکروسافت متکی هستند، ترجیح داده می‌شود.
  4. LiteSpeed
    بررسی اجمالی: LiteSpeed ​​یک وب سرور سبک وزن و با کارایی بالا است که با فایل های پیکربندی آپاچی سازگاری دارد. این طراحی شده است تا عملکرد را افزایش دهد و در عین حال مصرف منابع را پایین نگه دارد. موارد استفاده: مناسب برای وب سایت های با کارایی بالا که در آن سرعت و بار کم سرور بسیار مهم است.
  5. Node.js
    بررسی اجمالی: Node.js یک وب سرور سنتی نیست، بلکه یک زمان اجرا جاوا اسکریپت است که به شما امکان می دهد وب سرورهایی را با استفاده از جاوا اسکریپت ایجاد کنید. برای برنامه ها و خدمات بلادرنگ بسیار کارآمد است. موارد استفاده: مناسب برای برنامه‌های پویا و بی‌درنگ مانند برنامه‌های چت، پخش زنده ویدیو و APIها.

برای سرور اکسپرس به صورت محلی:
در بسته من.json: من دارم:

{
  "name": "node-hello-world",
  "private": true,
  "version": "0.0.1",
  "description": "Node.js Hello world app on docker",
  "author": "hypriot.com",
  "dependencies": {
    "express": "4.12.0"
  }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در همان پوشه:
من index.js دارم

var express = require('express');
var os = require("os");

var app = express();
var hostname = os.hostname();



app.get("https://dev.to/", function (req, res) {
  const ip = req.headers['x-forwarded-for'];

  res.send('Node.js container ' + hostname + ' ' + 'Client IP: ' + ip + '');
});

app.listen(80);
console.log('Running on http://localhost');
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بعد از نوشتن آن فایل ها، فقط باید npm install و node index.js را اجرا کنم!

وب سرورها بسته به نوع وب‌سایت و پیکربندی آن، می‌تواند محتوای ثابت و پویا را ارائه دهد، که می‌تواند متفاوت باشد:

سرور استاتیک به سادگی فایل های ذخیره شده را بدون پردازش به مشتری تحویل می دهد. وب‌سایت‌های استاتیک سریع‌تر هستند اما از نظر تعاملی محدود هستند. فایل ها به صورت HTML، CSS و جاوا اسکریپت از پیش ساخته شده اند و با دسترسی کاربر به آنها تغییر نمی کنند.

مثال: یک وب سایت نمونه کارها یا صفحه اصلی یک شرکت.
سرورهای پویا با تولید محتوا به تدریج درخواست های پیچیده تری را انجام می دهند. اینها معمولاً شامل یک پایگاه داده و یک زبان برنامه نویسی سمت سرور مانند PHP، Python یا Node.js هستند.

مثال: یک فروشگاه آنلاین محتوایی را ارائه می دهد که بر اساس تعامل کاربر به روز می شود.

برای عملکرد کارآمد، یک وب سرور شامل چندین مؤلفه است. عناصر اولیه عبارتند از:

نرم افزار HTTP: درخواست ها و پاسخ های HTTP را مدیریت می کند. این نرم افزار وظیفه ارائه محتوا و برقراری ارتباط با مشتریان را بر عهده دارد.

سیستم عامل: وب سرور بر روی سیستم عاملی مانند لینوکس، ویندوز یا macOS اجرا می شود که امکان مدیریت منابع، فایل ها و فرآیندهای سرور را فراهم می کند.

پایگاه داده (اختیاری): بسیاری از وب‌سایت‌ها با محتوای پویا به یک پایگاه داده مانند MySQL یا PostgreSQL برای ذخیره یا بازیابی داده‌ها در زمان واقعی نیاز دارند. به عنوان مثال، زمانی که ما وارد می شویم، اطلاعات از پایگاه داده دریافت می شود.

زبان سمت سرور (اختیاری): زبان هایی مانند PHP، Python یا جاوا اسکریپت (Node.js) محتوای پویا و تعامل با پایگاه داده را کنترل می کنند.

راه های مختلفی برای میزبانی وب سایت خود وجود دارد:
میزبانی محلی: اجرای یک وب سرور بر روی رایانه شخصی خود برای اهداف توسعه. می توانید از ابزارهایی مانند XAMPP (برای آپاچی) یا سرور Node.js برای آزمایش برنامه های خود استفاده کنید.
میزبانی مشترک: یک راه حل مقرون به صرفه که در آن چندین وب سایت منابع سرور یکسانی را به اشتراک می گذارند. معمولاً توسط ارائه دهندگان میزبانی وب ارائه می شود.
میزبانی VPS: میزبانی سرور خصوصی مجازی (VPS) با ارائه سرور مجازی اختصاص داده شده به نیازهای شما، کنترل و منابع بیشتری نسبت به هاست اشتراکی به شما می دهد.
هاست ابری: سرویس‌هایی مانند خدمات وب آمازون (AWS)، Google Cloud یا Microsoft Azure گزینه‌های میزبانی وب مقیاس‌پذیر و قابل پرداخت را برای برنامه‌های کاربردی در مقیاس بزرگ ارائه می‌دهند.
راه های مختلفی برای میزبانی وب سایت وجود دارد:
میزبانی محلی : اجرای یک وب سرور بر روی رایانه شخصی خود برای اهداف توسعه. می توانید از ابزارهایی مانند XAMPP (برای آپاچی) یا سرور Node.js برای آزمایش برنامه های خود استفاده کنید.
میزبانی مشترک: یک راه حل مقرون به صرفه که در آن چندین وب سایت منابع سرور یکسانی را به اشتراک می گذارند. معمولاً توسط ارائه دهندگان میزبانی وب ارائه می شود.

میزبانی VPS: میزبانی سرور خصوصی مجازی (VPS) با ارائه سرور مجازی اختصاص داده شده به نیازهای شما، کنترل و منابع بیشتری نسبت به میزبانی مشترک به شما می دهد.

شخصاً وقتی صحبت از نمونه کارها می شود، از راه حل هاست اشتراکی استفاده می کنم. VPS برای راه حل هایی که نیاز به سرور سفارشی دارند ایده آل است. از آنچه من می دانم، راه اندازی یک سرور اشتراکی برای Node.js بسیار دشوار است، بنابراین VPS بهترین راه حل است.

در DigitalOcean، من یک وب سرور برای API ساخته شده با لاراول دارم، و برای رندر کردن با Nuxt.js، که با تعاملات Vue.js ارتباط برقرار می کند، از سرور Node.js استفاده می کنم که از نیمی از منابع API استفاده می کند.

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

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

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

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