اگر میخواهید یک وبسایت یا برنامۀ تحت وب را روی لینوکس اجرا کنید، احتمال زیادی دارد که به نام LEMP Stack برسید. اما LEMP Stack چیست و این ترکیب دقیقاً چه کاری انجام میدهد؟ در این مطلب از مجلۀ VPSmarket به معرفی lemp و این موضوع که چگونه چهار فناوری متنباز را کنار هم قرار میدهد تا بستری سبک و پایدار برای میزبانی سایتها و برنامههای تحت وب فراهم شود، میپردازیم. با ما همراه باشید.
LEMP Stack چیست؟
LEMP Stack یک پشتۀ نرمافزاری برای میزبانی وبسایتها و برنامههای تحت وب روی سرورهای لینوکسی است. نام LEMP از 4 فناوری اصلی گرفته شده است که به ترتیب عبارتاند از:
- حرف L: مخفف Linux و اشاره به سیستمعامل دارد.
- حرف E: مخفف Nginx و به وبسرور اشاره دارد.
- حرف M: مخفف MySQL یا MariaDB که به پایگاه داده اشاره دارد.
- و حرف P: مخفف PHP که همان زبان برنامهنویسی سمت سرور است.
این 4 جزء در کنار هم بستر لازم برای اجرای سایتهای داینامیک، فروشگاههای اینترنتی، وردپرس، APIها و برنامههای PHP را فراهم میکنند.
5 جزء اصلی LEMP Stack
LEMP از چند فناوری تشکیل شده است که هرکدام بخشی از مسیر دریافت، پردازش و پاسخگویی به درخواستهای وب را بر عهده دارند. Linux بستر اجرای این سرویسها را فراهم میکند، Nginx درخواستهای کاربران را مدیریت میکند و PHP همراه با PHP-FPM پردازشهای سمت سرور را انجام میدهد. در کنار آنها، MySQL یا MariaDB نیز مسئول ذخیره و بازیابی اطلاعات است. هماهنگی این اجزا در کنار هم، ساختار اصلی LEMP Stack را شکل میدهد. در ادامه، هر یک از اجزای اصلی را به صورت کامل توضیح میدهیم.
1) Linux؛ بستر اجرای LEMP
Linux پایهای است که سایر اجزای LEMP روی آن اجرا میشوند. در واقع، سیستمعامل وظیفۀ مدیریت منابع سرور، اجرای سرویسها، کنترل دسترسیها و فراهمکردن محیط لازم برای فعالیت Nginx ،PHP و پایگاه داده را بر عهده دارد. توزیعهایی مانند Ubuntu و Debian از گزینههای رایج برای راهاندازی LEMP هستند و بهدلیل مستندات گسترده و پشتیبانی مناسب از ابزارهای سروری، در بسیاری از پروژهها استفاده میشوند.
مدیر سرور از طریق Linux میتواند سرویسهای مختلف را نصب، بهروزرسانی و پیکربندی کند و روی مصرف CPU ،RAM، فضای ذخیرهسازی و وضعیت پردازشها کنترل داشته باشد. به همین دلیل، انتخاب و پیکربندی صحیح سیستمعامل روی پایداری کل پشته LEMP تأثیر مستقیم دارد.
2) Nginx؛ وبسرور و نقطۀ ورود درخواستها
Nginx وبسرور اصلی در LEMP است و درخواستهای HTTP و HTTPS کاربران ابتدا به آن میرسند. اگر درخواست مربوط به محتوای استاتیک، مانند تصویر، فایل CSS یا JavaScript باشد، Nginx میتواند آن را مستقیماً برای کاربر ارسال کند. اما زمانی که درخواست به اجرای کد PHP نیاز داشته باشد، Nginx آن را به PHP-FPM تحویل میدهد.
یکی از ویژگیهای مهم Nginx معماری Event-Driven آن است که برای مدیریت تعداد زیادی اتصال همزمان طراحی شده است. همین ویژگی باعث شده است تا Nginx در بسیاری از سناریوهای پرترافیک، با مصرف نسبتاً بهینۀ منابع عمل کند. البته عملکرد نهایی سرور فقط به وبسرور وابسته نیست و عواملی مانند تنظیمات PHP، پایگاه داده، کش و منابع سختافزاری نیز در آن نقش دارند.
3) MySQL یا MariaDB؛ محل ذخیرۀ اطلاعات
MySQL و MariaDB نقش پایگاه داده را در LEMP بر عهده دارند. اطلاعاتی که باید بهصورت ساختاریافته و قابل بازیابی ذخیره شوند، در این بخش نگهداری میشوند؛ برای مثال اطلاعات کاربران، نوشتهها، محصولات، سفارشها، تنظیمات و سایر دادههای یک وبسایت یا برنامه.
هر زمان برنامه به اطلاعاتی از پایگاه داده نیاز داشته باشد، PHP درخواست لازم را ارسال میکند و نتیجه را برای ادامۀ پردازش دریافت میکند. در یک فروشگاه اینترنتی، برای نمونه، اطلاعات یک محصول از پایگاه داده خوانده میشود، PHP آن را پردازش میکند و نتیجۀ نهایی از طریق Nginx برای کاربر ارسال میشود.
4) PHP؛ اجرای منطق سمت سرور
PHP بخش مربوط به اجرای منطق برنامه در LEMP است. بسیاری از وبسایتها و سیستمهای مدیریت محتوا مانند وردپرس برای اجرای بخشهای داینامیک خود به PHP متکی هستند. زمانی که کاربر عملیاتی انجام میدهد که به پردازش سمت سرور نیاز دارد، PHP کد مربوط را اجرا میکند و در صورت نیاز با پایگاه داده ارتباط میگیرد.
برای مثال، نمایش اطلاعات حساب کاربری، ثبت سفارش، پردازش فرمها یا دریافت اطلاعات یک محصول، همگی میتوانند شامل اجرای کد PHP باشند. پس از پایان پردازش، نتیجه به Nginx برمیگردد تا پاسخ نهایی برای مرورگر ارسال شود.
5) PHP-FPM؛ مدیریت پردازشهای PHP
PHP-FPM وظیفۀ مدیریت پردازشهای PHP را بر عهده دارد و ارتباط میان Nginx و PHP را برقرار میکند. از آنجا که Nginx کد PHP را مستقیماً اجرا نمیکند، درخواستهای مربوط به PHP را به PHP-FPM میفرستد تا پردازش شوند.
PHP-FPM درخواست را دریافت میکند، کد PHP را اجرا میکند و نتیجه را دوباره در اختیار Nginx قرار میدهد. در معماری رایج LEMP، این ارتباط بخش مهمی از چرخۀ پردازش درخواست است؛ به همین دلیل، نحوۀ پیکربندی PHP-FPM میتواند روی عملکرد و مصرف منابع سرور اثر بگذارد.
در کنار هم، این 5 بخش مسیر اصلی پردازش یک درخواست وب در LEMP را شکل میدهند، به این صورت که: درخواست از طریق Nginx وارد میشود، در صورت نیاز به PHP-FPM منتقل میشود، PHP پردازش را انجام میدهد و در صورت نیاز با MySQL یا MariaDB ارتباط میگیرد؛ سپس پاسخ نهایی از طریق Nginx به کاربر برمیگردد.
LEMP چگونه کار میکند؟
وقتی کاربر صفحهای از سایت را باز میکند، درخواست ابتدا به Nginx میرسد. اگر درخواست مربوط به محتوای استاتیک باشد، Nginx میتواند همانجا پاسخ را ارسال کند. درخواستهای PHP اما به PHP-FPM منتقل میشوند تا پردازش لازم انجام شود. این فرایند را میتوان بهصورت خلاصه در شش مرحله دید:
- مرورگر درخواست را ارسال میکند.
- Nginx درخواست را دریافت میکند.
- اگر درخواست PHP باشد، Nginx آن را به PHP-FPM میفرستد.
- PHP کد موردنیاز را اجرا میکند.
- در صورت نیاز، اطلاعات از MySQL یا MariaDB خوانده میشود.
- نتیجه به Nginx برمیگردد و از آنجا برای کاربر ارسال میشود.
برای نمونه، در یک فروشگاه اینترنتی ممکن است اطلاعات محصول از دیتابیس خوانده شود، PHP آن را پردازش کند و Nginx خروجی نهایی را به مرورگر تحویل دهد.
مزایای استفاده از LEMP Stack
LEMP بهدلیل ترکیب Nginx ،PHP-FPM و یک پایگاه داده مانند MySQL یا MariaDB، انعطاف خوبی برای میزبانی سایتها و برنامههای تحت وب در اختیار مدیر سرور میگذارد. مزیت اصلی این پشته فقط به سرعت محدود نمیشود؛ نحوۀ مدیریت اتصالهای همزمان، مصرف منابع، امکان تنظیم دقیق سرویسها و پشتیبانی از استانداردهای جدید وب هم از دلایلی هستند که LEMP را برای پروژههای مختلف به گزینهای قابلتوجه تبدیل کردهاند. البته میزان بهرهمندی از این مزایا به کیفیت پیکربندی و منابع سرور نیز بستگی دارد. در ادامه به مزایای lemp stack اشاره میکنیم:
- عملکرد در اتصالهای همزمان: معماری Nginx برای مدیریت تعداد زیادی اتصال همزمان مناسب است.
- مصرف بهینۀ منابع: Nginx در بسیاری از سناریوها میتواند اتصالها را با مصرف نسبتاً کم منابع مدیریت کند.
- مناسب برای ترافیک بالا: LEMP برای بسیاری از سایتهای پرترافیک و سرویسهای آنلاین انتخاب مناسبی است. البته نتیجۀ نهایی فقط به پشتۀ نرمافزاری وابسته نیست و کدنویسی، دیتابیس، کش و منابع سرور هم روی عملکرد اثر میگذارند.
- انعطافپذیری در پیکربندی: مدیر سرور میتواند Nginx، PHP-FPM و دیتابیس را بر اساس نیازهای پروژه تنظیم کند.
- متنباز بودن: اجزای اصلی LEMP متنبازند و برای کار با آنها مستندات و ابزارهای زیادی در دسترس است.
- پشتیبانی از پروتکلهای جدید: Nginx از HTTP/2 پشتیبانی میکند و در نسخههای جدیدتر امکان استفاده از HTTP/3 نیز وجود دارد؛ قابلیتی که در شرایط مناسب میتواند به بهبود سرعت بارگذاری صفحات کمک کند.
تفاوت LEMP و LAMP
LAMP هم مانند LEMP یک پشتۀ نرمافزاری برای راهاندازی و میزبانی وبسایتها و برنامههای تحت وب روی سرورهای لینوکسی است. نام LAMP از Linux ،Apache ،MySQL و PHP گرفته شده است و تفاوت اصلی آن با LEMP به وبسرور برمیگردد؛ در LAMP از Apache استفاده میشود، در حالی که LEMP بر پایه Nginx کار میکند.
Apache بهدلیل سابقۀ طولانی، پشتیبانی گسترده و امکان استفاده از فایلهای htaccess. همچنان در بسیاری از پروژهها کاربرد دارد. در مقابل، معماری Nginx برای مدیریت تعداد زیادی اتصال همزمان طراحی شده است. بنابراین انتخاب بین LAMP و LEMP بیشتر به نیازهای پروژه، نوع پیکربندی و تجربه مدیر سرور بستگی دارد. در جدول زیر تفاوت lemp و lamp را بهتر متوجه میشوید.
|
معیار |
LAMP | LEMP |
|
وبسرور |
Apache | Nginx |
|
مصرف منابع |
کمتر در بسیاری از سناریوها |
بیشتر در برخی سناریوها |
|
مدیریت اتصالهای زیاد |
بسیار مناسب |
مناسب |
| عملکرد در ترافیک بالا | بسیار خوب |
خوب |
بااینحال، نمیتوان این مقایسه را برای همۀ پروژهها یکسان دانست. نوع برنامه، تنظیمات سرور، منابع سختافزاری، دیتابیس و سیستم کش میتوانند نتیجه واقعی را تغییر دهند.
LEMP روی سرور مجازی
اجرای LEMP روی سرور مجازی یکی از روشهای رایج میزبانی برنامههای PHP است. سرور مجازی کنترل بیشتری نسبت به هاست اشتراکی میدهد و دست مدیر سرور را برای نصب و تنظیم Nginx ،PHP-FPM و پایگاه داده باز میگذارد. برای مثال، یک سایت شرکتی کمترافیک ممکن است با ۲ گیگابایت RAM و ۱ تا ۲ هسته پردازنده شروع مناسبی داشته باشد؛ در مقابل، یک فروشگاه پرترافیک ممکن است از همان ابتدا به منابع بیشتری نیاز پیدا کند.
به همین دلیل، وقتی دربارۀ منابع مناسب میگوییم «بستگی دارد»، منظور مجموعهای از عوامل است، مانند: تعداد کاربران همزمان، حجم دیتابیس، تعداد درخواستها، افزونهها، پردازشهای PHP و نحوۀ استفاده از کش. دقت داشه باشید که تعداد بازدید ماهانه بهتنهایی معیار دقیقی برای انتخاب منابع نیست.
اگر میخواهید هزینۀ شروع پروژه را پایین نگه دارید، سرور مجازی لینوکس ارزان میتواند گزینۀ قابلبررسی باشد؛ البته فقط زمانی که منابع و کیفیت شبکۀ آن با نیاز پروژه همخوانی داشته باشد.
مراحل کلی راهاندازی LEMP
راهاندازی LEMP معمولاً از چند مرحلۀ مشخص تشکیل میشود:
- نصب Linux مانند Ubuntu یا Debian
- نصب و پیکربندی Nginx
- نصب MySQL یا MariaDB
- نصب PHP و PHP-FPM
- اتصال Nginx به PHP-FPM
- ایجاد Server Block برای دامنه
- تست و ایمنسازی سرویسها
برای نمونه، در Ubuntu ابتدا سرویسهای موردنیاز نصب میشوند و بعد Nginx طوری تنظیم میشود که درخواستهای PHP را به PHP-FPM بفرستد. پس از آن میتوان دامنه، HTTPS، فایروال و بکاپ را پیکربندی کرد. بعد از راهاندازی بهتر است وضعیت سرویسها را هم بررسی کنید. دستورهایی مانند systemctl status nginx و systemctl status php-fpm بهسرعت نشان میدهند سرویسها فعال هستند یا نه؛ البته نام دقیق سرویس PHP-FPM به نسخۀ نصبشده بستگی دارد.
اگر قرار است این پشته را روی Ubuntu اجرا کنید، مطلب نصب LEMP stack در اوبونتو مراحل نصب و پیکربندی را قدمبهقدم دنبال میکند.
نکات مهم راهاندازی LEMP برای کاربران ایرانی
راهاندازی LEMP برای کاربران ایرانی فقط به نصب و پیکربندی سرویسها محدود نمیشود. محل قرارگیری سرور، کیفیت مسیر شبکه تا ایران، شرایط پرداخت و امکان ارتقای منابع هم میتوانند روی کیفیت سرویس و تجربۀ کاربر اثر بگذارند. به همین دلیل، بهتر است پیش از خرید سرور و شروع راهاندازی، این موارد را هم در کنار نیاز فنی پروژه بررسی کنید تا بعداً مجبور به تغییر زیرساخت یا مهاجرت زودهنگام نشوید.
- انتخاب لوکیشن: فاصله و مسیر شبکه میان سرور و کاربران روی تجربۀ کاربری اثر میگذارد. اگر بیشتر مخاطبان شما داخل ایران هستند، بهتر است لوکیشنی را انتخاب کنید که مسیر شبکۀ مناسبی به ایران داشته باشد.
- بررسی پینگ: پیش از خرید سرور، پینگ و کیفیت اتصال را از چند نقطه بررسی کنید. پینگ پایینتر معمولاً زمان رفتوبرگشت درخواست را کاهش میدهد.
- پرداخت و تمدید: برای کاربران ایرانی، شیوۀ پرداخت، امکان تمدید سرویس و دسترسی ساده به مدیریت سرور هم مهم است. بهتر است این موارد را پیش از شروع پروژه در شرایط ارائهدهنده بررسی کنید.
- امکان ارتقا: اگر احتمال رشد سایت وجود دارد، سروری انتخاب کنید که افزایش CPU ،RAM یا فضای ذخیرهسازی در آن امکانپذیر باشد.
محدودیتهای LEMP
LEMP برای هر پروژهای بهترین گزینه نیست. راهاندازی و مدیریت Nginx ،PHP-FPM و دیتابیس در مقایسه با یک هاست اشتراکی آماده، دانش فنی بیشتری میخواهد. از طرف دیگر، نصب LEMP بهتنهایی سرعت سایت را تضمین نمیکند. کوئریهای سنگین، کدنویسی ضعیف، افزونههای زیاد یا تنظیمات نامناسب PHP و دیتابیس همچنان میتوانند سایت را کند کنند. بهینهسازی نرمافزار و زیرساخت باید در کنار هم انجام شود.
اگر از هاست اشتراکی یا LAMP به LEMP مهاجرت میکنید، یک تفاوت مهم را هم باید در نظر داشته باشید: Nginx از فایلهای htaccess. پشتیبانی نمیکند. بنابراین قوانین بازنویسی آدرس و محدودیتهای دسترسی باید مستقیماً در فایل پیکربندی Nginx تعریف شوند.
جمعبندی
اگر بخواهیم LEMP Stack را خلاصه کنیم، با ترکیبی از Linux ،Nginx ،MySQL یا MariaDB و PHP روبهرو هستیم؛ پشتهای که برای میزبانی وب، محیطی انعطافپذیر در اختیار مدیر سرور قرار میدهد. ترکیب Nginx و PHP-FPM باعث شده است LEMP برای بسیاری از سایتها، فروشگاهها و برنامههای PHP گزینۀ مناسبی باشد. با این حال، کیفیت عملکرد فقط به انتخاب این پشته وابسته نیست و منابع سرور، دیتابیس، کش و کیفیت شبکه هم نقش دارند.
اگر قرار است LEMP را روی VPS اجرا کنید، پیش از خرید منابع موردنیاز و لوکیشن سرور را مشخص کنید. امکان ارتقای منابع را هم از همان ابتدا در نظر بگیرید تا با رشد پروژه مجبور به مهاجرت زودهنگام نشوید.
سوالات متداول
LEMP Stack چیست؟
LEMP یک پشتۀ نرمافزاری برای میزبانی وب است که از Linux ،Nginx ،MySQL یا MariaDB و PHP تشکیل میشود. Linux بستر اجرای سرویسهاست، Nginx درخواستهای وب را مدیریت میکند، PHP پردازش سمت سرور را انجام میدهد و MySQL یا MariaDB اطلاعات را ذخیره میکند.
تفاوت LEMP و LAMP چیست؟
تفاوت اصلی در وبسرور است: LEMP از Nginx استفاده میکند و LAMP معمولاً از Apache. هر دو برای اجرای سایتهای PHP قابل استفادهاند، اما معماری و شیوۀ پیکربندی متفاوتی دارند؛ بنابراین انتخاب میان آنها به نیاز پروژه و تجربۀ مدیر سرور بستگی دارد.
آیا LEMP برای وردپرس مناسب است؟
بله. وردپرس با PHP نوشته شده و میتواند با Nginx ،PHP-FPM و MySQL یا MariaDB اجرا شود. LEMP برای سایتهای وردپرسی کوچک تا پرترافیک قابل استفاده است، اما سرعت نهایی سایت به عواملی مانند قالب، افزونهها، کش و منابع سرور هم وابسته است.
PHP-FPM در LEMP چه کاری انجام میدهد؟
PHP-FPM پردازشهای PHP را مدیریت و اجرا میکند. در معماری معمول LEMP ،Nginx درخواست PHP را به PHP-FPM میفرستد؛ PHP-FPM کد را پردازش میکند و نتیجه را به Nginx برمیگرداند تا پاسخ برای کاربر ارسال شود.
آیا راهاندازی LEMP روی سرور مجازی امکانپذیر است؟
بله. سرور مجازی برای نصب LEMP مناسب است، چون کنترل بیشتری روی سیستمعامل و سرویسها در اختیار مدیر سرور میگذارد. میتوان Nginx ،PHP-FPM ،MySQL یا MariaDB و ابزارهای امنیتی موردنیاز را نصب و پیکربندی کرد. منابع لازم نیز به نوع برنامه، ترافیک و شیوۀ استفاده از سرور بستگی دارد.
آیا استفاده از LEMP رایگان است؟
اجزای اصلی LEMP متنبازند و برای استفاده از خود نرمافزارها معمولاً نیازی به پرداخت لایسنس نیست. با این حال، هزینههایی مثل سرور مجازی، دامنه، بکاپ و فضای ذخیرهسازی همچنان وجود دارند و رایگان بودن نرمافزارها به معنی رایگان بودن کل زیرساخت میزبانی نیست.






