وب سرور مجازي 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

اكنون به آدرس 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 ارزان –