تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

ارزیابی و بهینه‌ سازی عملکرد وب سرورها


۹ اردیبهشت ۱۴۰۴

تا‌به‌حال به این موضوع فکر کرده‌اید که زمانی‌که یک آدرس را در مرورگر خود وارد می‌کنید، چه فرایندی طی می‌شود تا صفحه‌ی موردنظر برایتان نمایش داده شود؟ باید در پاسخ گفت که وب‌سرورها نقش اصلی را در این فرایند ایفا می‌کنند، آن‌ها واسطه‌ای میان درخواست کاربران و پاسخ‌هایی هستند که از سوی وب‌سایت‌ها ارسال می‌شود.

در مقاله‌های پیشین لیارا، با مفهوم پایه‌ای وب‌سرور آشنا شدید، حالا زمان آن رسیده است که با استفاده از این بخش، نکات کلیدی را بیاموزید و با به‌کارگیری دستورات لینوکس، به پیکربندی و اصلاح تنظیمات آن بپردازید و مفاهیم پایه‌ای مرتبط با پروتکل‌های شبکه را بهتر درک کنید.

آنچه در ادامه خواهید خواند:

  • خلاصه ای از معرفی وب سرور
  • ویژگی ها و اهداف مهم ارزیابی راه حل های وب سرور
  • استفاده از خط فرمان برای پیکربندی وب سرور
  • پیکربندی فایل های سرور
  • وب‌سرور Apache
  • محل فایل‌ های پیکربندی اصلی Apache
  • مکان ذخیره‌ سازی فایل‌ های Apache شامل میزبان‌ های مجازی و لاگ‌ ها
  • اصطلاحات مهم در Apache
  • وب سرور Nginx
  • محل فایل‌ های پیکربندی اصلی Nginx
  • مکان ذخیره سازی لاگ های دسترسی و گزارش خطای Nginx
  • اصطلاحات مهم در Nginx
  • شناخت ارتباطات شبکه و پروتکل های امنیتی
  • سوالات متداول
  • جمع بندی
همین الان، بدون کمترین پیچیدگی، سرور مجازی خودتون رو در کمتر از ۳۰ ثانیه، راه‌اندازی کنید.
✅ عملکرد پایدار ✅ ترافیک نامحدود ✅ هزینه به‌صرفه
خرید سرور مجازی ابری
ارزیابی و بهینه‌ سازی عملکرد وب سرورها

خلاصه ای از معرفی وب سرور

وب‌سرور سیستمی است که فایل‌های موردنیاز برای نمایش یک اپلیکیشن وب را از طریق پروتکل‌های HTTP و HTTPS در اختیار مرورگر قرار می‌دهد. اپلیکیشن وب نیز نوعی نرم‌افزار است که از طریق مرورگر قابل دسترسی است و کاربران می‌توانند با آن تعامل داشته باشند.

ویژگی ها و اهداف مهم ارزیابی راه حل های وب سرور

  • زمان عملکرد بالا با استفاده پایدار و بارگذاری سریع
  • دسترسی همزمان توسط بسیاری از کاربران
  • مقیاس‌پذیری با رشد تعداد مخاطبان و کاربران
  • نصب و پیکربندی ساده و تکرار پذیر
  • پشتیبانی از توسعه‌دهندگان، شامل پچ‌های (Patch) کوتاه‌مدت و به‌روزرسانی‌های بلندمدت نرم‌افزاری
  • پشتیبانی جامعه و پذیرش نرم‌افزار برای درک وب‌سرورها، آشنایی با چندین اصطلاح کلیدی در حوزه کامپیوتر و شبکه ضروری است.

برای این که بتوانید این مقاله را بهتر درک کنید بهتر است که با چندین اصطلاح رایج آن در این زمینه آشنا شوید.

پورت

پورت، آدرسی در یک ماشین است که می‌تواند به یک نرم‌افزار خاص متصل شود. پورت یک رابط یا موقعیت فیزیکی نیست، اما این امکان را به سرور می‌دهد که از چندین برنامه مختلف برای برقراری ارتباط استفاده کند.

پروتکل

پروتکل مجموعه‌ای از قوانین و استانداردها است که زبان ارتباطی بین دستگاه‌ها را تعریف می‌کند. پروتکل‌های سطح پایین شامل TCP , UDP , IP و ICMP هستند. برخی از نمونه‌های آشنا در پروتکل‌های لایه‌ی اپلیکیشن که بر اساس این پروتکل‌های پایین‌تر ساخته شده‌اند، HTTP (برای دسترسی به محتوای وب)، SSH ,TLS/SSL و FTP هستند.

فایروال

فایروال سیستمی است که امنیت شبکه را از طریق فیلتر کردن ترافیک ورودی و خروجی شبکه بر اساس مجموعه‌ای از قوانین تعریف‌شده توسط کاربر تأمین می‌کند. فایروال‌های رایج شامل Iptables , UFW و Fail2Ban هستند. برای آشنایی بیشتر با نحوه عملکرد فایروال‌ها، می‌توانید مقاله «فایروال Iptables چگونه کار می‌کند؟» را مطالعه کنید.

DNS

DNS یا سیستم نام دامنه، یک پروتکل لایه‌‌ای اپلیکیشن است که نام دامنه (مانند یک URL سفارشی) را با یک آدرس IP خاص ارتباط می‌دهد.

سرورهای HTTP و HTTPS

سرور HTTP یک وب‌سرور است که از پروتکل انتقال ابرمتن (HTTP) برای راحت تر شدن ارتباطات در شبکه کامپیوتری از آن استفاده می‌شود. HTTPS به معنای پروتکل انتقال ابرمتن امن است که ارتباطات را با استفاده از امنیت لایه انتقال (TLS) یا لایه سوکت امن (SSL) رمزگذاری می‌کند. برای فعال‌سازی یک سرور HTTPS و رمزگذاری SSL/TLS، باید یک گواهی SSL از یک مرجع گواهی مانند Let’s Encrypt تهیه و ارائه کنید.

سرور پروکسی

سرور پروکسی به‌عنوان یک لایه اضافی میان مشتری‌ها و سرورها عمل می‌کند و درخواست‌های HTTP را به وب‌سرورهای خود هدایت می‌کند.

نحوه نصب وب سرور آپاچی Apache روی سرور مجازی لینوکس Linux یا VPS
وب سرور آپاچی Apache روی سرور مجازی لینوکس Linux

استفاده از خط فرمان برای پیکربندی وب سرور

برای مدیریت و پیکربندی وب‌سرور در محیط لینوکس، معمولاً از خط فرمان استفاده می‌شود. خط فرمان یا Terminal محیطی متنی است که در آن می‌توان دستورات مختلفی را برای کنترل سیستم وارد کرد. در این بخش به نحوه‌ی پیکربندی وب‌سرورهایی مانند Apache و Nginx از طریق خط فرمان خواهیم پرداخت. این فرایند شامل مواردی همچون ویرایش فایل‌های تنظیمات، ساخت فایل‌هایی که به‌عنوان صفحات وب نمایش داده می‌شوند و از همه مهم‌تر، اجرای اسکریپت‌هایی است که در زمان راه‌اندازی سیستم اجرا می‌شوند. همچنین به‌روزرسانی نرم‌افزارهای سرور با استفاده از ابزار APT (که مخصوص مدیریت بسته‌های نرم‌افزاری در لینوکس است) انجام می‌شود.

برخی از دستورات مهم و کاربردی در این زمینه دستورات زیر می‌باشد که می‌توانید از آن استفاده کنید.

  • chown: برای تغییر مالکیت فایل‌ها
  • chmod: برای تنظیم یا تغییر سطح دسترسی فایل‌ها
  • curl: برای ارسال یا دریافت داده از یک نشانی مشخص (URL)
  • hostname: برای مشاهده یا تغییر نام میزبان و دامنه
  • systemctl: برای مدیریت سرویس‌هایی که توسط systemd کنترل می‌شوند

یکی از اجزای مهم در سیستم عامل‌های لینوکسی، ابزار systemd است که این ابزار وظیفه راه‌ندازی اولیه سیستم را بر عهده دارد. فایل‌هایی که در زمان راه‌اندازی سیستم اجرا می‌شود، معمولا در مسیر /etc/init.d قرار دارند و برای کار با آن‌ها نیاز به دسترسی مدیریتی (سطح root یا استفاده از دستور sudo) وجود دارد. همچنین فایل‌های مربوط به ثبت گزارش‌ها و رخدادهای سیستم در مسیر /var/log ذخیره می‌شوند.

در انتها، از ابزار Certbot برای دریافت گواهی امنیتی SSL از سرویس‌های Let’s Encrypt استفاده می‌شود. این گواهی‌ها باعث می‌شوند ارتباط میان کاربران و وب‌سایت به‌‌صورت رمزنگاری شده و مطمئن بر قرار شود. استفاده از گزینه --standalone در Certbot برای مواقعی است که وب‌سرور به‌صورت موقت خاموش شده تا فرآیند دریافت گواهی بدون تداخل انجام شود.

همین حالا، فایل‌های خودتون رو در فضایی سریع، پایدار و مقیاس‌پذیر ذخیره کنید.
✅ سازگار با Amazon S3 ✅ عملکرد بالا ✅۲.۵ گیگ فضای رایگان
خرید فضای ذخیره‌سازی ابری

پیکربندی فایل های سرور

وب سرور‌ها از طریق فایل‌هایی به نام Configuration Files مدیریت می‌شوند. این فایل‌ها تنظیمات اصلی سرور هستند و ممکن است که بر اساس نیاز پروژه یا ساختار سیستم تغییر داده شوند.

به‌عنوان مثال، فایل‌های تنظیمات بیشتر سیستم‌ها در مسیر /etc قرار دارند و می‌توان آن‌ها را با استفاده از ویرایشگرهای متنی در محیط خط فرمان مانند nano یا vim ویرایش کرد. همچنین فایل‌هایی که به‌عنوان صفحات وب برای کاربران نمایش داده می‌شود، معمولا در مسیر /var/www ذخیره می‌شوند. این فایل‌ها قابل ویرایش هستند و می‌توان آن‌ها را یا از طریق خط فرمان یا با استفاده از محیط‌های توسعه یکپارچه (IDE) به‌روزرسانی کرد.

وب‌سرورهای متن‌باز و پرکاربردی مانند Apache و Nginx بر روی سرورهای ریموت (remote) نصب و پیکربندی شده‌اند. این دو وب‌سرور در مجموع تقریباً 50 درصد از کل ترافیک وب جهان را مدیریت می‌کنند که نشان‌دهنده‌ی اهمیت بالای آن‌ها در زیرساخت‌های اینترنتی است. برای ایمن‌سازی ارتباطات نیز معمولاً از فایروال استفاده می‌شود. فایروال نقش مهمی در کنترل ترافیک ورودی و خروجی سرور دارد. در سیستم‌عامل Ubuntu، فایروال پیش‌فرض از ابزار UFW استفاده می‌کند که برای مدیریت فایروال iptables به کار می‌رود.

آموزش نصب و راه‌اندازی فایروال UFW در سرور مجازی اوبونتو به زبان ساده
نصب و راه‌اندازی فایروال UFW در سرور مجازی اوبونتو

هم Apache و هم Nginx پس از نصب، به‌صورت خودکار در فایروال ثبت می‌شوند و هر کدام سه پروفایل را برای باز کردن پورت‌های مشخص ارائه می‌دهند:

پورتپروفایل Apacheپروفایل Nginx
فقط پورت 80ApacheNginx HTTP
پورت‌های 80 و 443Apache FullNginx Full
فقط پورت 443Apache SecureNginx HTTPS

این پروفایل‌ها به فایروال اعلام می‌کنند که اجازه‌ی دسترسی به کدام پورت‌ها صادر شود، و به این ترتیب امکان برقراری ارتباط امن و کنترل‌شده با سرور فراهم می‌شود.

وب‌سرور Apache

وب‌سرور Apache برای تنظیمات پیکربندی در سطح دایرکتوری از فایل‌هایی به نام .htaccess استفاده می‌کند. این فایل‌ها به شما اجازه می‌دهند که بدون نیاز به ویرایش فایل‌های اصلی پیکربندی، تغییرات دلخواه را در مسیرهای مشخص اعمال کنید.

مقایسه وب‌سرور Apache و NGINX؛ کدام را انتخاب کنیم؟
مقایسه وب‌سرور Apache و NGINX

محل فایل‌ های پیکربندی اصلی Apache

فایل‌های اصلی پیکربندی Apache در مسیر /etc/apache2 قرار دارند.

مکان ذخیره‌سازی فایل‌ های مهم Apache شامل میزبان‌ های مجازی و لاگ‌ها

فایل‌های مربوط به میزبان‌های مجازی برای هر سایت به‌صورت جداگانه در مسیر /etc/apache2/sites-available/ قرار دارد و برای فعال‌سازی، به مسیر /etc/apache2/sites-enabled/ لینک داده می‌شوند.

سایر بخش‌های پیکربندی که به میزبان‌های مجازی مربوط نیستند، در مسیر /etc/apache2/conf-available/ ذخیره شده و از طریق لینک‌دهی به مسیر /etc/apache2/conf-enabled/ فعال می‌شوند.

فایل لاگ مربوط به دسترسی‌ها در مسیر /var/log/apache2/access.log و گزارش خطاها در مسیر /var/log/apache2/error.log ذخیره می‌شود. سطح ثبت لاگ‌ها بر اساس تنظیمات LogLevel در فایل پیکربندی اصلی /etc/apache2/apache2.conf تعیین می‌شود.

اصطلاحات مهم در Apache

در ادامه اصطلاحات مهم آپاچی را برای شما شرح خواهیم داد تا با استفاده از آن بتوانید به درستی فرآیند را انجام دهید.

میزبان مجازی (Virtual Hosts)

هر Virtual Host نماینده‌ یک سایت یا دامنه‌ جداگانه است که می‌تواند تنظیمات مخصوص به خود را داشته باشد. این ویژگی امکان ارائه‌ محتوای متفاوت به بازدیدکنندگان مختلف را فراهم می‌کند.

ماژول‌ های چند پردازشی (Multi-Processing Modules)

ماژول‌های چندپردازشی یا MPM در Apache مسئول رسیدگی به درخواست‌های کاربران هستند. توجه داشته باشید که در هر لحظه فقط یک MPM می‌تواند روی سرور فعال باشد. از ماژول‌های متداول می‌توان به mpm_prefork و mpm_worker اشاره کرد که از سیستم چندرشته‌ای برای پاسخ به درخواست‌ها استفاده می‌کنند و اما ماژول‌های Apache در مسیرهای /etc/apache2/mods-available/ و /etc/apache2/mods-enabled/ قرار دارند.

وب سرور Nginx

وب سرور Nginx از الگوی متمرکز بر روی شناسه یکنواخت منبع (URI) برای تنظیمات خود استفاده می‌کند. URI مجموعه‌ای یکتا از کاراکترها است که برای شناسایی منابع مختلف به کار می‌رود.

آموزش نصب وب سرور آپاچی در دبیان
نصب وب سرور آپاچی در دبیان

محل فایل‌های پیکربندی اصلی Nginx

فایل‌های پیکربندی Nginx در مسیر /etc/nginx قرار دارند. تنظیمات مربوط به هر دامنه (server block) در مسیر /etc/nginx/sites-available ذخیره می‌شوند و از طریق لینک‌های نمادین به مسیر /etc/nginx/sites-enabled فعال می‌شوند.

مکان ذخیره سازی لاگ های دسترسی و گزارش خطای Nginx

هر دو نوع فایل لاگ (دسترسی و خطا) در مسیر /var/log/nginx قرار دارند. فایل /var/log/nginx/access.log مربوط به لاگ دسترسی‌ها، و فایل /var/log/nginx/error.log مربوط به پیام‌های خطا است.

اصطلاحات مهم در Nginx

در ادامه اصطلاحات مهم در انجین‌ایکس (Nginx) را برای شما شرح خواهیم داد تا با استفاده از آن بتوانید به درستی فرآیند را انجام دهید.

بلاک های سرور (Server Blocks)

بلاک‌های سرور در Nginx بخش‌هایی از فایل پیکربندی هستند که برای میزبانی چند دامنه روی یک سرور استفاده می‌شوند. این بلاک‌ها معمولاً در مسیر /etc/nginx/sites-available قرار دارند. در نسخه Ubuntu 22.04، بلاک پیش‌فرض در مسیر /var/www/html قرار گرفته است.

لینک‌ های نمادین (Symlinks)

لینک نمادین یا symlink مانند یک میان‌بر عمل می‌کند که به یک فایل یا پوشه‌ی دیگر در سیستم اشاره دارد. خود لینک حاوی داده‌ای نیست، بلکه فقط به مسیر اصلی فایل اشاره می‌کند. در Nginx، فایل‌های قرار گرفته در مسیر /etc/nginx/sites-enabled، به صورت لینک نمادین به فایل‌های موجود در /etc/nginx/sites-available متصل هستند.

فرآیند های کاری (Worker Processes)

Nginx برای پاسخ‌دهی به درخواست‌های کاربران از فرآیندهایی به نام worker process استفاده می‌کند که با استفاده از یک حلقه‌ رویدادی (event loop) کار می‌کنند. برخلاف Apache که از سیستم چندرشته‌ای استفاده می‌کند، در Nginx هر فرآیند کاری تک‌نخی (single-threaded) است و اتصال‌ها به صورت غیرهم‌زمان (asynchronous) در درون همان حلقه مدیریت می‌شوند.

“برای تنظیم Reverse Proxy با استفاده از Nginx می‌توانید از مستندات لیارا استفاده کنید.”

شناخت ارتباطات شبکه و پروتکل های امنیتی

پروتکل‌های ارتباطی در شبکه معمولاً به‌صورت لایه‌ای طراحی می‌شوند. یکی از ترکیب‌های رایج این است که از رمزنگاری روی پروتکل‌های TCP و UDP استفاده می‌شود.
TCP (پروتکل کنترل انتقال) وظیفه انتقال داده‌ها از طریق بسته‌ها (Packet) را دارد و این کار را با استفاده از یک فرایند سه‌مرحله‌ای به نام Three-Way Handshake انجام می‌دهد.
پروتکل دیتاگرام کاربر(UDP) نیز برای انتقال داده‌ها به کار می‌رود، اما ساختار ساده‌تری دارد.

TLS یا امنیت لایه انتقال (و نسخه قدیمی‌تر آن SSL) یک پروتکل رمزنگاری است که ترافیک معمولی شبکه را در قالبی رمزگذاری‌شده و ایمن قرار می‌دهد.

Nginx چیست؟ درک نحوه کارکرد آن و کاربردهای اصلی
Nginx چیست؟

سوالات متداول

در ادامه به سوالاتی که امکان دارد در این زمینه برای شما بدون پاسخ بماند، جواب‌های کوتاه اما مفیدی داده‌ایم که با استفاده از آن می‌توانید به سوال خود پاسخ صحیحی را بدهید.

چگونه می‌توانم یک وب‌سرور Apache را نصب و پیکربندی کنم؟

برای نصب Apache بر روی سرور مجازی Ubuntu می‌توانید از این دستور استفاده کنید. sudo apt update sudo apt install apache2 پس از نصب، می‌توانید Apache را با دستور systemctl مدیریت کنید. sudo systemctl start apache2 sudo systemctl enable apache2

چگونه SSL را بر روی وب‌ سرور Apache فعال کنم؟

برای فعال‌سازی SSL، ابتدا باید Certbot را نصب کنید. sudo apt install certbot python3-certbot-apache سپس با استفاده از Certbot گواهی SSL رایگان از Let’s Encrypt دریافت کنید. sudo certbot --apache پس از تکمیل فرایند، SSL بر روی وب‌سرور فعال می‌شود.

چگونه می‌توانم وب‌سرور Nginx را نصب و راه‌اندازی کنم؟

برای نصب Nginx روی Ubuntu می‌توانید این دستور را اجرا کنید. sudo apt update sudo apt install nginx سپس می‌توانید با استفاده از دستور systemctl Nginx را شروع کنید. sudo systemctl start nginx sudo systemctl enable nginx

چگونه می‌توانم تنظیمات فایروال برای Apache و Nginx را پیکربندی کنم؟

اگر از فایروال UFW استفاده می‌کنید، برای اجازه دادن به ترافیک وب می‌توانید این دستور را اجرا کنید. برای Apache: sudo ufw allow 'Apache Full' برای Nginx: sudo ufw allow 'Nginx Full'

چگونه می‌توانم لاگ‌های Apache یا Nginx را مشاهده کنم؟

برای مشاهده لاگ‌های Apache، می‌توانید از دستورات زیر استفاده کنید:

دسترسی‌ها: sudo tail -f /var/log/apache2/access.logخطاها: sudo tail -f /var/log/apache2/error.log

برای مشاهده لاگ‌های Nginx از دستورات زیر استفاده کنید:

  • دسترسی‌ها: sudo tail -f /var/log/nginx/access.log
  • خطاها: sudo tail -f /var/log/nginx/error.log

جمع بندی

برای پیکربندی و مدیریت وب‌سرورهای Apache و Nginx، شما باید فایل‌های تنظیمات و لاگ‌ها را در مسیرهای مشخصی پیدا کنید. Apache از فایل‌های virtual hosts برای مدیریت دامنه‌ها استفاده می‌کند و Nginx با استفاده از server blocks این کار را انجام می‌دهد. همچنین، برای امنیت بیشتر، می‌توانید از گواهی‌نامه‌های SSL با ابزار Certbot استفاده کنید. مراقب باشید که پیکربندی فایروال نیز ضروری است تا ترافیک‌های مورد نظر به درستی به وب‌سرور شما منتقل شوند.

راهنمای عیب‌یابی مشکلات رایج سایت در سرور مجازی لینوکس
راهنمای عیب‌یابی مشکلات سایت در سرور مجازی لینوکس


به اشتراک بگذارید