Ubuntu 18.04

پیکربندی Apache HTTP با رویداد MPM و PHP-FPM در اوبونتو

وب سرور مجازی Apache HTTP طی سالها پیشرفت کرده و در محیط های مختلف کار می کند و نیازهای مختلف را برطرف می کند. یکی از مشکلات مهم Apache HTTP که مانند هر سرور مجازی وب باید حل شود ، نحوه مدیریت فرآیندهای مختلف برای ارائه یک درخواست پروتکل http است. این فرآیند شامل باز کردن سوکت ، پردازش درخواست ، باز نگه داشتن اتصال برای مدت معین ، رسیدگی به رویدادهای جدید در این ارتباط و بازگشت به محتوای تولید شده توسط برنامه ساخته شده به یک زبان خاص (مانند PHP ، Perl یا Python) است . این کارها توسط یک ماژول چند پردازشی (MPM) انجام و کنترل می شود.
Apache HTTP با سه MPM متفاوت ارائه می شود:
⦁ Pre-fork: یک فرآیند جدید برای هر اتصال ورودی به سرور مجازی ایجاد می شود. هر فرآیند از سایرین جدا شده است ، بنابراین هیچ حافظه ای بین آنها به اشتراک گذاشته نمی شود ، حتی اگر آنها در یک نقطه از اجرای خود تماس های یکسان را انجام دهند. این یک روش ایمن برای اجرای برنامه های مرتبط با کتابخانه هایی است که از رشته سازی پشتیبانی نمی کنند – به طور معمول برنامه ها یا کتابخانه های قدیمی تر.
⦁ Worker: یک فرآیند parent (والد) وظیفه راه اندازی مجموعه ای از فرآیندهای child (فرزند) را بر عهده دارد ، که برخی از آنها در حال گوش دادن به اتصالات جدید ورودی هستند ، و برخی دیگر در حال ارائه محتوای درخواستی هستند. هر فرآیند تبدیل به رشته شده است (یک رشته واحد می تواند یک اتصال را کنترل کند) بنابراین یک فرآیند می تواند همزمان چندین درخواست را انجام دهد. این روش کار با اتصالات ، باعث استفاده بهتر از منابع میشود ، در حالی که همچنان ثبات را حفظ می کند. این نتیجه ای از مجموعه فرآیندهای موجود است که غالباً رشته های در دسترس را برای ارائه اتصالات جدید فوری به صورت رایگان ارائه می دهد.
⦁ Event: بر اساس Worker ، این MPM با بهینه سازی چگونگی برنامه ریزی فرآیند والد وظایف را به فرآیندهای فرزند و رشته های مرتبط با آن ها یک قدم فراتر می گذارد. اتصال بصورت پیش فرض 5 ثانیه باز می ماند و در صورت عدم وقوع اتفاق جدید ، بسته می شود. این مقدار پیش فرض دستورالعمل keep-alive است، که رشته مربوط به آن را حفظ می کند. Event MPM فرایند را قادر می سازد تا رشته ها را مدیریت کند به گونه ای که برخی از رشته ها آزاد هستند که بتوانند اتصالات جدید ورودی را کنترل کنند در حالی که برخی دیگر به اتصالات زنده متصل هستند. اجازه توزیع مجدد وظایف اختصاص یافته به رشته ها باعث می شود تا استفاده و عملکرد بهینه منابع بیشتر شود.
ماژول MPM Event یک ماژول چند پردازشی سریع است که در وب سرور مجازی Apache HTTP موجود است.
PHP-FPM مدیر فرآیند FastCGI برای PHP است. پروتکل FastCGI بر پایه رابط مشترک گیت (CGI) ساخته شده است ، پروتکلی که بین برنامه ها و سرور مجازی های وب مانند Apache HTTP قرار دارد. این ویژگی اجازه می دهد تا توسعه دهندگان برنامه ها را جداگانه از رفتار سرور مجازی های وب بنویسند. برنامه ها فرآیندهای خود را بطور مستقل اجرا می کنند و محصول خود را از طریق این پروتکل به سرور مجازی وب منتقل می کنند. هر اتصال جدیدی که نیاز به پردازش توسط یک برنامه داشته باشد فرآیند جدیدی را ایجاد می کند.
با ترکیبی از رویداد MPM در Apache HTTP با PHP FastCGI مدیر فرآیند (PHP-FPM) ، وب سایت می تواند سریعتر لود شده و ضمن استفاده از منابع کمتر ، اتصالات همزمان بیشتری را مدیریت کند.
در این آموزش عملکرد پشته LAMP را با تغییر ماژول پیش فرض چند پردازشی از pre-fork به event و با استفاده از مدیر فرآیند PHP-FPM برای مدیریت کد PHP به جای mod_php کلاسیک در Apache HTTP بهبود می بخشید.
پیش نیازها
قبل از شروع این راهنما به موارد زیر نیاز خواهید داشت:
• یک سرور مجازی Ubuntu 18.04 که طبق راهنمای ستاپ اولیه سرور مجازی Ubuntu 18.04 تنظیم ، و شامل یک کاربر sudo غیر ریشه و فایروال راه اندازی باشد.
• پشته LAMP که طبق آموزش نحوه نصب Linux ، Apache ، MySQL ، PHP (LAMP stack) در اوبونتو 18.04 روی سرور مجازی شما نصب شده باشد.
مرحله 1 – تغییر ماژول چند پردازشی
اوبونتو برای فعال یا غیرفعال کردن ماژول های Apache HTTP از توزیع والد خود ، یعنی دبیان ، اسکریپت هایی را به ارث می برد. برای غیرفعال کردن ماژول Pre fork و فعال کردن ماژول Event از این مجموعه ابزار در این مرحله استفاده خواهید کرد.
در این مرحله شما Apache HTTP را متوقف خواهید کرد ، ماژول PHP 7.2 را که به ماژول Pre-fork وصل شده است ، غیرفعال میکنید و سپس Pre-fork را غیرفعال میکنید تا بلافاصله ماژول Event فعال شود.
ابتدا سرویس Apache HTTP را متوقف می کنید:
⦁ $ sudo systemctl stop apache2

اکنون می توانید ماژول PHP 7.2 را که مربوط به ماژول Pre-fork است غیرفعال کنید:
⦁ $ sudo a2dismod php7.2

سپس ماژول MPM Pre-fork MPM را غیرفعال کنید:
⦁ $ sudo a2dismod mpm_prefork

اکنون ماژول Event MPM را فعال کنید:
⦁ $ sudo a2enmod mpm_event

شما MPM را از Pre-fork به Event تغییر داده اید و اتصال ماژول PHP 7.2 را بین PHP و Apache HTTP حذف کرده اید. در مرحله بعدی ماژول php-fpm و همچنین کتابخانه ها و ماژول های پروکسی را نصب خواهید کرد. Apache HTTP را پیکربندی خواهید کرد تا بتواند با PHP نیز ارتباط برقرار کند.
مرحله 2 – پیکربندی Apache HTTP برای استفاده از مدیر فرآیند FastCGI
تا این جا روش پردازش اتصالات توسط Apache HTTP را با انتقال از MPM Pre-fork به Event تغییر داده اید. اما در طول راه ماژول PHP را که Apache HTTP را با هر برنامه اجرا شده در PHP وصل کرده است غیرفعال کرده اید.
در این مرحله پردازنده PHP-FPM را نصب خواهید کرد تا Apache HTTP بتواند مجدداً برنامه های PHP را پردازش کند. و همچنین می توانید کتابخانه های متعلقات را نصب کنید و ماژول ها را فعال کنید تا هر دو بتوانند هموارتر و سریعتر از گذشته همکاری کنند.
ابتدا php-fpm را نصب کنید. دستور زیر بسته PHP-FPM را نصب می کند و سرویس php7.2-fpm بصورت خودکار را که با systemd یکپارچه شده است فعال می کند ، بنابراین این سرویس در زمان بوت شروع می شود:
⦁ sudo apt install php-fpm

برای برقراری ارتباط ، Apache HTTP و PHP به یک کتابخانه نیاز دارند که بتواند آن ظرفیت را داشته باشد. اکنون libapache2-mod-fcgid را نصب خواهید کرد ، که می تواند به عنوان واسط بین برنامه ها با سرور مجازی های وب سرویس دهی کند ، و مخصوص Apache HTTP است. این ارتباط از طریق سوکت یونیکس اتفاق می افتد.
این کتابخانه را نصب کنید:
⦁ $ sudo apt install libapache2-mod-fcgid

php-fpm و libapache2-mod-fcgid را نصب کرده اید ، اما هنوز هیچ کدان فعال نشده اند.
ابتدا ماژول php-fpm را با دستور زیر فعال کنید:
⦁ $ sudo a2enconf php7.2-fpm

سپس ماژول پروکسی HTTP Apacheرا فعال کنید.
⦁ $ sudo a2enmod proxy

بعد از آن ماژول پروکسی FastCGI را در Apache HTTP فعال کنید:
⦁ $ sudo a2enmod proxy_fcgi

توجه: می توانید پیکربندی این تعامل بین برنامه های PHP و Apache HTTP را از طریق سوکت UNIX با دستور زیر بخوانید:
⦁ $ cat /etc/apache2/conf-enabled/php7.2-fpm.conf

همه چیز در حال حاضر آماده است بنابراین می توانید Apache HTTP را شروع کنید. ابتدا یک پیکربندی انجام می دهید:
⦁ $ sudo apachectl configtest

Output
Syntax OK

پس از آن می توانید Apache HTTP را رستارت کنید ، تا هنگام نصب کتابخانه FastCGI libapache2-mod-fcgid به طور خودکار شروع شود:
⦁ $ sudo systemctl restart apache2

اکنون ماژول php-fpm را نصب ،و Apache HTTP را پیکربندی کرده اید تا با آن کار کند ، ماژول های لازم را برای کار با پروتکل FastCGI فعال کرده و خدمات مربوطه را شروع نموده اید.
اکنون که Apache ماژول Event MPM را فعال کرده است و PHP-FPM در آن حضور دارد و در حال اجرا است ، زمان آن رسیده است که همه چیز بررسی شود تا مطمئن شویم طبق پیش بینی عمل میکند.
مرحله 3 – پیکربندی خود را بررسی کنید
به منظور بررسی اینکه تغییرات پیکربندی اعمال شده اند ، برخی از آزمایشات را اجرا خواهید کرد. اولین تست بررسی میکند که ماژول چند پردازشی Apache HTTP استفاده می شود. تست دوم تأیید می کند که PHP از مدیر FPM استفاده می کند.
با اجرای دستور زیر سرور مجازی Apache HTTP را بررسی کنید:
⦁ $ sudo apachectl -M | grep ‘mpm’

خروجی شما به شرح زیر خواهد بود:
Output
mpm_event_module (shared)
می توانید همین کار را برای ماژول پروکسی و FastCGI تکرار کنید:
⦁ $ sudo apachectl -M | grep ‘proxy’

خروجی نشان داده شده اینگونه است:
Output
proxy_module (shared)
proxy_fcgi_module (shared)

اگر دوست دارید کل لیست ماژول ها را ببینید ، می توانید قسمت دوم دستور را بعد از -M حذف کنید.
اکنون زمان آن رسیده است که بررسی کنیم PHP از مدیر پردازشگر FastCGI استفاده می کند یا خیر. برای این کار یک اسکریپت کوچک PHP بنویسید که تمام اطلاعات مربوط به PHP را به شما نشان می دهد.
دستور زیر را برای نوشتن فایلی به نام زیر اجرا کنید:
⦁ $ sudo nano /var/www/your_domain/info.php

محتوای زیر را در فایل info.php اضافه کنید:
info.php
<?php phpinfo(); ?>

اکنون به آدرس URL سرور مجازی خود مراجعه کرده و در انتها info.php را اضافه کنید. به این شکل:
http://your_domain/info.php
ورودی API سرور مجازی FPM / FastCGI خواهد بود.

بعد از این بررسی فایل info.php را حذف کنید تا هیچ گونه اطلاعاتی در مورد سرور مجازی به صورت عمومی فاش نشود:
⦁ $ sudo rm /var/www/yourdomain.com/info.php

در حال حاضر وضعیت کار ماژول MPM ، ماژول های مدیریت FastCGI و نحوه استفاده از کد PHP را بررسی کرده اید.
نتیجه
شما پشته LAMP اصلی خود را بهینه کرده اید ، بنابراین تعداد اتصالات برای ایجاد فرآیندهای جدید Apache HTTP افزایش یافته است ، PHP-FPM با کد PHP کارآمدتر عمل می کند ، و استفاده کلی از منابع بهبود یافته است.
برای اطلاعات بیشتر در مورد ماژول های مختلف و پروژه های مرتبط ، به مطالب پروژه سرور مجازی Apache HTTP مراجعه کنید.

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

نصب و پیکربندی Ansible در اوبونتو 18.04 – نصب MySQL در اوبونتو 18.04

نظارت بر سلامت سرور با Checkmk در اوبونتو – اجرای چند نسخه PHP بر روی یک سرور

نصب Nginx، MySQL، PHP در CentOS 7 –  نصب و پیکربندی Elasticsearch در اوبونتو 18.04

راه اندازی سرور اولیه با اوبونتو 20.04 – تنظیم کلیدهای SSH در Ubuntu 20.04

نصب و استفاده از PostgreSQL در اوبونتو 20.0 – نحوه نصب MySQL در اوبونتو 20.04

نصب Python 3 روی سرور Ubuntu 18.04 –  نحوه نصب Python 3 روی سرور Ubuntu 20.04

نصب Linux،Apache،MySQL،PHP LAMP در اوبونتو 20.04 –  نصب وب سرور Apache در CentOS 8

نحوه نصب Drupal با Docker Compose –  نحوه نصب Nginx در اوبونتو 20.04

7 مورد از اقدامات امنیتی برای محافظت از سرورهای شما –  نحوه نصب و ایمن سازی Redis در اوبونتو 20.04

نحوه نصب و ایمن سازی Redis در اوبونتو 18.04اضافه کردن فضای Swap در اوبونتو 20.04

چگونه می توان فایروال را با UFW در اوبونتو 20.04 تنظیم کردنظارت بر اطلاعیه و مسیر BGP با BGPalerter اوبونتو 18.04

نصب و ایمن سازی phpMyAdmin در اوبونتو 20.04  –  نصب و استفاده از Composer در اوبونتو 20.04

ریست کردن رمز ورود ریشه MySQL یا MariaDB –  استفاده از نوع داده MySQL BLOB برای ذخیره تصاویر

نصب Nginx در اوبونتو 18.04نصب توزیع Anaconda پایتون در اوبونتو 20.04

نحوه نصب جاوا با Apt در اوبونتو 18.04 –  نحوه نصب Django و تنظیم محیط توسعه در اوبونتو 16.04

نصب جنگو و تنظیم محیط توسعه در اوبونتو 20.04 – نحوه ایجاد سرور Minecraft در اوبونتو 18.04

نحوه راه اندازی یک پروژه Node با Typescript –  نحوه نصب و پیکربندی VNC در اوبونتو 18.04

ایجاد یک برنامه Django و اتصال آن به یک بانک اطلاعاتینصب و پیکربندی VNC در اوبونتو 20.04

نصب MariaDB در اوبونتو 20.04  –  فعال سازی و اتصال رابط کاربری Django

تنظیم پلتفرم Cloud IDE کد سرور را در اوبونتو 18.04پیکربندی Apache HTTP با رویداد MPM و PHP-FPM

 

 

کلمات کلیدی خرید سرور

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکاخرید سرور مجازی ارزان هلندvpsخرید vps هلندخرید سرور مجازی آمریکاخرید vps فرانسهتست vpsسرور مجازی تستسرور مجازی ویندوزارزانترین vpsخرید وی پی اسvps ارزان – 


https://vpsgol.net/product/vps-germany/

https://vpsgol.net/product/vps-usa/

https://vpsgol.net/product/vps-france/

https://vpsgol.net/product/vps-canada/

https://vpsgol.net/product/vps-poland/

https://vpsgol.net/product/vps-netherlands/

https://vpsgol.net/product/vps-england/