


برای افزایش بیدردسر عملکرد آپاچی با ما همراه باشید. Apache HTTP Server یکی از محبوبترین و پرکاربردترین وبسرورهای متنباز در سطح جهان است. آپاچی به قدرت، انعطافپذیری و استحکام خود مشهور است و همین موضوع آن را به انتخابی اصلی برای میزبانی وبسایتها تبدیل کرده است. با این حال، مانند هر نرمافزار دیگری، عملکرد آپاچی را میتوان با پیکربندی و تکنیکهای بهینهسازی مناسب بهمیزان قابلتوجهی بهبود بخشید.
این آموزش ۱۱ نکتهٔ مناسب برای مبتدیان را برای افزایش عملکرد Apache در CentOS — یک توزیع محبوب لینوکس که اغلب در محیطهای سرور استفاده میشود — ارائه میدهد.


قبل از اینکه به جزئیات بپردازیم، مهم است که اصول Apache و CentOS را درک کنیم. آپاچی نرمافزاری است که محتوای وب را در اختیار کاربران قرار میدهد؛ هم محتوای استاتیک مانند صفحات HTML و تصاویر، و هم محتوای پویای تولیدشده توسط اسکریپتهای سمت سرور. از سوی دیگر، CentOS یک سیستمعامل رایگان و متنباز است که از منابع Red Hat Enterprise Linux (RHEL) مشتق شده و بهدلیل پایداری و پشتیبانی طولانیمدت، بهطور گسترده در محیطهای سرور استفاده میشود.
برای اجرای پایدار آپاچی به یک بستر مناسب نیاز دارید؛ میتوانید آن را روی سرور مجازی لینوکس یا هاست لینوکس cPanel پارس آپتایم اجرا کنید. اگر به وبسرورهای دیگر هم علاقه دارید، لایسنس LiteSpeed گزینهای پرسرعت در کنار آپاچی است.
اکنون به سراغ نکات بهینهسازی آپاچی در CentOS میرویم تا عملکرد آن را بیدردسر افزایش دهیم.
اولین و مهمترین نکته این است که Apache و CentOS خود را بهروز نگه دارید. بهروزرسانیها اغلب با بهبود عملکرد، وصلههای امنیتی و ویژگیهای جدیدی همراهاند که میتوانند عملکرد کلی سرور شما را افزایش دهند. برای بهروزرسانی Apache و CentOS از دستورات زیر استفاده کنید:
sudo yum update httpd sudo yum update
KeepAlive که بهعنوان اتصال مداوم نیز شناخته میشود، یک ویژگی ضروری در سرور HTTP آپاچی است که عملکرد آن را بهطور قابلتوجهی افزایش میدهد. این ویژگی اجازه میدهد چندین درخواست از یک کلاینت از طریق یک اتصال HTTP ارائه شود، نه اینکه برای هر درخواست یک اتصال جدید باز شود.
برای درک اهمیت KeepAlive، سناریویی را در نظر بگیرید که کاربر از یک صفحهٔ وب حاوی چندین عنصر مانند تصاویر، CSS و فایلهای جاوااسکریپت بازدید میکند. بدون KeepAlive، هر یک از این عناصر به یک اتصال HTTP جداگانه نیاز دارد. یعنی برای یک صفحهٔ وب، سرور ممکن است نیاز به باز و بسته کردن صدها اتصال داشته باشد که فرآیندی منابعبر است و سرعت سرور را بهطور قابلتوجهی کاهش میدهد.
با فعال کردن KeepAlive، همهٔ این عناصر را میتوان از طریق یک اتصال HTTP دائمی ارائه کرد. این کار هزینهٔ باز و بسته شدن چندین اتصال را کاهش میدهد و به زمان بارگذاری سریعتر صفحه و تجربهٔ کاربری بهتر منجر میشود. همچنین مصرف CPU و تأخیر شبکه را کاهش میدهد و سرور شما را کارآمدتر میکند.
برای فعال کردن KeepAlive در آپاچی، باید فایل پیکربندی اصلی «httpd.conf» را پیدا کنید. این فایل معمولاً در دایرکتوری «/etc/httpd/» در CentOS قرار دارد. پس از باز کردن فایل، به دنبال دستورالعمل «KeepAlive» بگردید. اگر روی «Off» تنظیم شده، آن را به «On» تغییر دهید. اگر این دستورالعمل وجود ندارد، میتوانید آن را به فایل اضافه کنید. باید به این شکل باشد:
KeepAlive On
پس از انجام تغییر، فایل «httpd.conf» را ذخیره کرده و سرور آپاچی را مجدداً راهاندازی کنید تا تغییرات اعمال شوند. با دستور زیر میتوانید این کار را انجام دهید:
sudo systemctl restart httpd
به یاد داشته باشید در حالی که KeepAlive میتواند عملکرد سرور را بهطور قابلتوجهی بهبود بخشد، مهم است سرور خود را زیر نظر داشته باشید تا اتصالات زیادی را برای مدت طولانی باز نگه ندارد؛ زیرا این هم میتواند منابع را مصرف کند. میتوانید دستورالعمل «KeepAliveTimeout» را در فایل «httpd.conf» تنظیم کنید تا مدتزمان انتظار سرور برای درخواستهای جدید در یک اتصال دائمی را کنترل کنید.
دستورالعملهای «MaxClients» و «MinSpareServers» در پیکربندی آپاچی، پارامترهای مهمی هستند که میتوانند بهطور قابلتوجهی بر عملکرد سرور شما تأثیر بگذارند. آنها بهترتیب تعداد اتصالات همزمانی که سرور شما میتواند مدیریت کند و حداقل تعداد پردازشهای سرور فرزند (child) را کنترل میکنند.
دستورالعمل «MaxClients» محدودیتی برای حداکثر تعداد درخواستهای همزمانِ قابلارائه تعیین میکند. هر کلاینتی که به سرور شما متصل میشود یک فرآیند یا رشتهٔ جداگانه را شروع میکند و «MaxClients» تعیین میکند که در آپاچی چه تعداد از این فرآیندها یا رشتهها مجاز به شروع هستند.
برای مثال، اگر «MaxClients» را مانند قطعهکد زیر روی ۱۵۰ تنظیم کنید، آپاچی تنها ۱۵۰ درخواست را بهطور همزمان ارائه میکند. هر درخواست اضافی در صف قرار میگیرد و باید منتظر بماند تا یکی از اتصالات موجود بسته شود.
MaxClients 150
تنظیم این مقدار بسیار پایین میتواند منجر به کندی وبسایت شود؛ زیرا آپاچی ممکن است نتواند به همهٔ درخواستها، بهخصوص در زمان اوج ترافیک، سرویس دهد. از طرف دیگر، اگر MaxClients بیش از حد بالا تنظیم شود، آپاچی ممکن است منابع سرور (مانند حافظه و CPU) را بیش از حد مصرف کند که میتواند منجر به بیثباتی یا حتی خرابی سرور شود.
دستورالعمل MinSpareServers حداقل تعداد فرآیندهای بیکارِ سرور فرزند را تعیین میکند. اینها فرآیندهایی هستند که شروع شدهاند اما در حال حاضر درخواستی ارائه نمیدهند و ذخیره میشوند تا وقتی درخواست جدیدی وارد شد، آپاچی مجبور نباشد فرآیند تازهای را شروع کند.
MinSpareServers 20
در مثال بالا، آپاچی طوری پیکربندی شده که حداقل ۲۰ فرآیند سرور را بیکار نگه دارد. اگر تعداد پردازشهای بیکار کمتر از این عدد شود، آپاچی برای جبران، پردازشهای بیشتری شروع میکند. این کار اطمینان میدهد همیشه فرآیند کافی برای ارائهٔ درخواستها وجود دارد و زمان پاسخگویی بهبود مییابد.
با این حال، مانند «MaxClients»، تنظیم «MinSpareServers» بیش از حد بالا میتواند منابع غیرضروری مصرف کند، و تنظیم آن بسیار پایین میتواند منجر به کندی زمان پاسخ شود. در نتیجه، بهینهسازی این دو شامل یافتن تعادلی متناسب با منابع سرور و الگوهای ترافیک وبسایت شماست. توصیه میشود عملکرد سرور را نظارت کنید و این مقادیر را در صورت لزوم تنظیم نمایید.
CDN یک شبکهٔ توزیعشدهٔ جغرافیایی از سرورهای پراکسی و مراکز دادهٔ آنهاست. هدف اصلی CDN ارائهٔ دسترسی و عملکرد بالا با توزیع سرویس بهصورت مکانی نزدیک به کاربران نهایی است. از CDNها برای انتقال محتوای وب — از جمله صفحات HTML، فایلهای جاوااسکریپت، شیوهنامهها، تصاویر و فیلمها — استفاده میشود.
هنگامی که کاربر از وبسایت شما بازدید میکند، CDN درخواست را از سرور اصلی به نزدیکترین سرورِ CDN به کاربر هدایت میکند و محتوای کششده را ارائه میدهد. این فرآیند تقریباً برای کاربر نامرئی است.
برای مثال، فرض کنید سرور آپاچی شما در نیویورک قرار دارد و کاربری از لندن به وبسایت شما دسترسی دارد. بدون CDN، درخواست کاربر باید در سراسر اقیانوس اطلس تا سرور شما در نیویورک سفر کند و دوباره با دادههای درخواستی بازگردد؛ این میتواند منجر به تأخیر قابلتوجهی شود. اما با CDN، درخواست به سرورِ CDN نزدیکتر (مثلاً در لندن) هدایت میشود و محتوای کششده را تحویل میدهد و تأخیر را بهطور قابلتوجهی کاهش میدهد.
با استفاده از CDN نهتنها سرعت و عملکرد وبسایت خود را بهبود میبخشید، بلکه بار روی سرور آپاچی را نیز کاهش میدهید؛ زیرا بخش قابلتوجهی از درخواستها و تحویل دادهها توسط CDN مدیریت میشود و سرور آپاچی شما منابع بیشتری برای پردازش محتوای پویا خواهد داشت.
علاوه بر بهبود عملکرد، CDNها مزایای دیگری مانند کاهش هزینهٔ پهنای باند، افزایش دردسترسبودن و افزونگی محتوا، و بهبود امنیت با ارائهٔ کاهش حملات DDoS ارائه میدهند. بنابراین استفاده از CDN میتواند راهی قدرتمند برای افزایش عملکرد Apache در CentOS باشد، بهویژه برای وبسایتهایی که به مخاطبان جهانی خدمت میکنند یا ترافیک بالایی دارند.
Fastly یک CDN بسیار قابلتنظیم است که بهدلیل تأخیر کم و انتقال دادهٔ پرسرعت شناخته میشود و توسط بسیاری از وبسایتهای پربازدید استفاده میشود. StackPath نیز یک CDN ایمن با WAF داخلی، حفاظت DDoS و قابلیتهای محاسبات حاشیهای ارائه میکند و انتخاب خوبی برای کسبوکارهایی است که به ویژگیهای امنیتی قوی نیاز دارند.
Cloudflare یک پلن CDN رایگان ارائه میدهد که شامل برخی ویژگیهای امنیتی و عملکردی است و برای وبسایتها و وبلاگهای کوچک انتخاب خوبی است. اگر وبسایت وردپرسی دارید، Jetpack نیز یک CDN رایگان برای تصاویر و فایلهای ثابت بهعنوان بخشی از افزونهٔ خود ارائه میدهد.
فشردهسازی GZIP حجم دادههایی را که آپاچی به کلاینتها ارسال میکند کاهش میدهد و میتواند سرعت وبسایت شما را بهمیزان قابلتوجهی افزایش دهد. برای فعال کردن آن، خطوط زیر را به فایل .htaccess خود اضافه کنید:
AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript
Apache HTTP Server یک سیستم ماژولار با مجموعهٔ وسیعی از ماژولهاست که عملکرد آن را گسترش میدهند (مانند بازنویسی URL، رمزگذاری SSL، پروکسی و موارد دیگر). این ماژولار بودن آپاچی را همهکاره میکند، اما یعنی سرور شما ممکن است ماژولهایی را اجرا کند که به آنها نیاز ندارد و منابع ارزشمند سیستم را مصرف کند.
برای مثال، اگر وبسایت شما از اسکریپتهای CGI استفاده نمیکند، نیازی به فعال بودن ماژول mod_cgi نیست. هر یک از این ماژولها وقتی فعالاند، حتی بدون استفاده، حافظه و چرخههای CPU مصرف میکنند. در CentOS فهرست ماژولهای فعال در دایرکتوری «/etc/httpd/conf.modules.d/» قرار دارد. سادهترین راه برای غیرفعال کردن یک ماژول، استفاده از دستور «a2dismod» و نام آن ماژول است. مثلاً برای غیرفعال کردن mod_cgi:
sudo a2dismod cgi
پس از اجرای این دستور، باید آپاچی را مجدداً راهاندازی کنید تا تغییرات اعمال شوند:
sudo systemctl restart httpd
قبل از غیرفعال کردن یک ماژول، مطمئن شوید که وبسایت شما یا هیچیک از اجزای آن به آن نیاز ندارد. غیرفعال کردن یک ماژول ضروری میتواند منجر به خطا یا حتی از دسترس خارج شدن سایت شود. همیشه پس از ایجاد تغییر در پیکربندی سرور، وبسایت خود را بهطور کامل تست کنید.
هدرهای منقضی (Expires Headers) به مرورگر میگویند که آیا باید فایل خاصی را از سرور درخواست کند یا آن را از حافظهٔ پنهان (cache) مرورگر بیاورد. با استفاده از آنها میتوانید بار روی سرور را کاهش و زمان بارگذاری صفحه را بهبود دهید. برای فعال کردن، خطوط زیر را به فایل .htaccess اضافه کنید:
ExpiresActive On ExpiresByType image/jpg "access plus 1 year" ExpiresByType image/jpeg "access plus 1 year" ExpiresByType image/gif "access plus 1 year" ExpiresByType image/png "access plus 1 year" ExpiresByType text/css "access plus 1 month" ExpiresByType application/pdf "access plus 1 month" ExpiresByType text/x-javascript "access plus 1 month" ExpiresByType application/x-shockwave-flash "access plus 1 month" ExpiresByType image/x-icon "access plus 1 year" ExpiresDefault "access plus 2 days"
فایل .htaccess ابزاری قدرتمند است که اجازه میدهد پیکربندی سرور را برای هر دایرکتوری تغییر دهید. اما آپاچی برای هر درخواست این فایل را جستجو و میخواند که میتواند سرعت سایت را کاهش دهد. اگر به فایل پیکربندی اصلی (که معمولاً «httpd.conf» نامیده میشود) دسترسی دارید، محتوای .htaccess را به آن منتقل کنید و سپس .htaccess را غیرفعال نمایید:
# Disable .htaccess AllowOverride None
محتوای استاتیک (مانند تصاویر، فایلهای CSS و جاوااسکریپت) بخش قابلتوجهی از بیشتر وبسایتها را تشکیل میدهد. این فایلها اغلب تغییر نمیکنند و نیازی به پردازش سمت سرور ندارند، و همین آنها را کاندیدای ایدهآلی برای سرویسدهی از یک سرور جداگانه و اختصاصی میکند.
مزیت اصلی این است که وظیفهٔ ارائهٔ فایلهای استاتیک را از سرور اصلی آپاچی خارج میکند. این کار بار روی سرور آپاچی را کاهش میدهد و منابع را برای پردازش محتوای پویا (مانند اسکریپتهای PHP یا کوئریهای پایگاهداده) آزاد میکند. سرور محتوای استاتیک را میتوان بهطور خاص برای ارائهٔ سریع فایلهای ثابت بهینه کرد.
برای پیادهسازی، میتوانید از یک زیردامنه (مانند static.yourwebsite.com) استفاده کنید و آن را طوری پیکربندی کنید که به یک سرور جداگانه اشاره کند، سپس کد سایت را برای ارجاع به این زیردامنه برای فایلهای استاتیک بهروز کنید؛ مثلاً تصویری که قبلاً از مسیر www.website.com/images/logo.jpg ارائه میشد، اکنون از static.website.com/images/logo.jpg ارائه میشود.
به یاد داشته باشید سرور محتوای استاتیک لزوماً یک سرور فیزیکی نیست؛ میتواند یک سرور مجازی یا حتی سرویسی مانند CDN باشد. نکتهٔ اصلی این است که از سرور اصلی آپاچی جدا و برای ارائهٔ محتوای استاتیک بهینه باشد.
اگر وبسایت شما از PHP استفاده میکند، مطمئن شوید از آخرین نسخه استفاده میکنید. هر نسخهٔ جدید PHP با پیشرفتها و بهینهسازیهایی همراه است که میتواند عملکرد سایت شما را بهمیزان قابلتوجهی افزایش دهد. برای بهروزرسانی PHP در CentOS از دستور زیر استفاده کنید:
sudo yum update php
نظارت بر عملکرد سرور، جنبهای حیاتی برای حفظ یک وبسرور پرکارایی و قابلاعتماد است. نظارت منظم به شما امکان میدهد معیارهای مختلفی را که مستقیماً بر عملکرد سرور و تجربهٔ کاربری سایت شما تأثیر میگذارند زیر نظر بگیرید و مشکلاتی مانند افزایش ناگهانی ترافیک، تنگناهای منابع یا خرابیهای سختافزاری را زودتر شناسایی کنید. در ادامه چند ابزار مفید معرفی میشود:
یک ابزار بلادرنگ خط فرمان در لینوکس که نمای پویایی از فرآیندهای در حال اجرا ارائه میدهد و اطلاعات مصرف CPU، حافظه و میانگین بار سیستم را نمایش میدهد.
top
یک نمایشگر فرآیند تعاملی برای سیستمهای یونیکس، شبیه «top» اما با رابط کاربرپسندتر که امکان مدیریت مستقیم فرآیندها را هم میدهد.
htop
ابزاری بسیار مفید برای نظارت بر لاگهای آپاچی در زمان واقعی که تعداد درخواستها در ثانیه، URLهای پربازدید و اطلاعات مفید دیگر را نمایش میدهد.
apachetop -f /var/log/httpd/access_log
به یاد داشته باشید کلید نظارت مؤثر، منظم بودن است. برنامهای برای بررسی منظم تنظیم کنید و از ابزارهای نظارت خودکار استفاده کنید که میتوانند دربارهٔ مشکلات احتمالی هشدار دهند. این رویکرد پیشگیرانه در درازمدت شما را از دردسرهای زیادی نجات میدهد.


KeepAlive اجازه میدهد چندین درخواست از یک کلاینت از طریق یک اتصال HTTP ارائه شود. این کار هزینهٔ ایجاد اتصال جدید برای هر درخواست را کاهش میدهد و در نتیجه عملکرد سرور و زمان پاسخگویی را بهبود میبخشد.
GZIP حجم دادههایی را که آپاچی برای کلاینتها ارسال میکند کاهش میدهد. این کار به انتقال سریعتر اطلاعات و در نتیجه زمان بارگذاری سریعتر صفحه و تجربهٔ کاربری بهتر منجر میشود.
هر ماژول فعال آپاچی منابع مصرف میکند. با غیرفعال کردن ماژولهایی که برای سایت شما ضروری نیستند، منابع آزاد میشود و عملکرد آپاچی بهبود مییابد.
CDN با ارائهٔ محتوای وب به کاربران بر اساس موقعیت جغرافیایی، بار روی سرور آپاچی را کاهش میدهد و سرعت و عملکرد سایت را بهبود میبخشد، بهخصوص برای کاربرانی که از موقعیت سرور شما دور هستند.
نظارت منظم کمک میکند مشکلات را زودتر شناسایی کنید و پیش از تأثیرگذاری بر عملکرد سایت، اقدام اصلاحی انجام دهید. همچنین بینش ارزشمندی دربارهٔ مصرف منابع، الگوهای ترافیک و تنگناهای بالقوه ارائه میدهد.
تقویت عملکرد Apache در CentOS شامل ترکیبی از بهروزرسانی و پیکربندی نرمافزار، بهینهسازی تحویل محتوا و نظارت منظم بر سرور است. با اجرای نکات این راهنما میتوانید کارایی، سرعت و قابلیت اطمینان سرور خود را بهمیزان قابلتوجهی افزایش دهید و تجربهٔ کاربری بهتری برای بازدیدکنندگان فراهم کنید. به یاد داشته باشید هر محیط سرور منحصربهفرد است؛ پس تغییرات را بهطور کامل آزمایش کنید.
برای اطلاعات بیشتر دربارهٔ انواع سرور، میتوانید مقالات ما را در مورد سرور اختصاصی، سرور مجازی (VPS) و سرور ابری بررسی کنید. کلید یک سرور پرعملکرد فقط پیکربندی نیست، بلکه نگهداری منظم آن هم اهمیت دارد. در این مقاله با عنوان «۱۱ نکتهٔ کاربردی برای افزایش عملکرد آپاچی در CentOS» از پارس آپتایم تلاش کردیم به رشد و توسعهٔ کسبوکار شما کمک کنیم.
خدمات مورد نیاز شما را با کیفیتی که انتظار دارید و قیمتی که انتظار ندارید.





