LAMP स्टैक (लिनक्स, अपाचे, माईएसक्यूएल, पीएचपी) को स्थापित करने के तरीके पर लगभग हर ट्यूटोरियल अनुशंसा करेगा कि आप PHP स्क्रिप्ट को संसाधित करने के लिए अंतर्निहित अपाचे मॉड्यूल का उपयोग करें। उदाहरण के लिए, उबंटू में आप इसे तब सक्षम करेंगे जब आप sudo apt install libapache2-mod-php
जैसे कमांड का उपयोग करेंगे। एक पैकेज स्थापित करने के लिए। यह बदले में अपाचे को mpm_prefork का उपयोग करने के लिए मजबूर करेगा। हर बार जब कोई आगंतुक आपकी वेबसाइट तक पहुंचता है, तो उस कनेक्शन को संभालने के लिए एक नई प्रक्रिया शुरू की जाएगी। ट्रैफिक कम होने पर यह अच्छा काम करता है।
लेकिन, अचानक से ट्रैफिक जाम हो जाए तो यह एक बड़ी समस्या बन जाती है। उदाहरण के लिए, एक Reddit पोस्ट में आपकी वेबसाइट शामिल हो सकती है, और यदि पोस्ट लोकप्रिय हो जाती है, तो आपको कुछ ही मिनटों में हजारों विज़िटर मिल सकते हैं।
सबसे अच्छी स्थिति में, यदि अपाचे ट्रैफ़िक विस्फोट को संभालने में सक्षम है, तो कुछ बदकिस्मत आगंतुकों को पृष्ठ लोड होने तक शायद तीस से साठ सेकंड तक प्रतीक्षा करनी पड़ सकती है, जो आज की दुनिया में बेतुका है। सबसे खराब स्थिति में, सर्वर बुरी तरह से पिछड़ने लगेगा, और संसाधनों की कमी के कारण कुछ कनेक्शन आसानी से छोड़ दिए जाएंगे। इस मामले में आगंतुकों को उनके ब्राउज़र में एक त्रुटि दिखाई देगी।
यह किसी भी तरह से अच्छा परिदृश्य नहीं है, क्योंकि आपने संभावित रूप से सैकड़ों या हजारों इच्छुक पाठकों, ग्राहकों या प्रशंसकों का ध्यान खो दिया है।
दुर्भाग्य से, PHP किसी भी तरह से एक बहुत बड़ा संसाधन हॉग है। लेकिन, mpm_event के साथ, अपाचे यातायात के अचानक फटने को अधिक कुशल तरीके से संभाल सकता है। हालाँकि, यह अनुशंसा की जाती है कि आपके सर्वर में कम से कम 2GB RAM और 2 CPU कोर हों, वास्तविक या आभासी, और इससे भी अधिक यदि आप तीव्र ट्रैफ़िक स्पाइक्स की अपेक्षा करते हैं, जैसे कि प्रति सेकंड दस से अधिक विज़िटर। यदि आप वर्चुअल प्राइवेट सर्वर का उपयोग कर रहे हैं, तो अपनी स्थिति और एसएसडी स्टोरेज में अधिक वर्चुअल सीपीयू कोर जोड़ें। रैम सेकेंडरी है।
डेबियन-आधारित वितरण पर Apache MPM ईवेंट और PHP-FPM का उपयोग कैसे करें
इस परिवार के डेबियन, उबंटू या अन्य डिस्ट्रो पर बस "libapache2-mod-php" पैकेज स्थापित करने से बचें। जब आप अपाचे स्थापित करते हैं तो यह डिफ़ॉल्ट रूप से एमपीएम ईवेंट का उपयोग करता है। लेकिन उल्लिखित पैकेज को स्थापित करने पर, एक स्क्रिप्ट MPM ईवेंट को अक्षम कर देती है और MPM प्रीफ़ोर्क को सक्षम कर देती है। Apache PHP मॉड्यूल केवल mpm_prefork के साथ (सुरक्षित रूप से) काम कर सकता है। बेशक, "libapache2-mod-php" के बिना, आपके पास PHP फ़ाइलों के लिए कोई प्रोसेसर नहीं है। तो आप Apache में शामिल PHP मॉड्यूल के बजाय PHP-FPM का उपयोग करेंगे। यहां बताया गया है कि आप एक नए सर्वर पर LAMP स्टैक कैसे स्थापित करेंगे। आप अपने वेब एप्लिकेशन की आवश्यकताओं के अनुसार चरणों को अनुकूलित कर सकते हैं।
सबसे पहले, रूट के रूप में लॉग इन करें। फिर, अपाचे इंस्टॉल करें।
apt update && apt install apache2
इस बिंदु पर आप देख सकते हैं कि अपाचे वास्तव में डिफ़ॉल्ट रूप से सक्षम MPM ईवेंट के साथ शिप करता है।
apachectl -V
PHP-FPM स्थापित करें।
apt install php-fpm
आप अपाचे में PHP प्रोसेसर को सक्षम करने के निर्देश देखेंगे।
FastCGI प्रोटोकॉल सक्षम करें।
a2enmod proxy_fcgi
Apache के लिए PHP-FPM डिफ़ॉल्ट कॉन्फ़िगरेशन सक्षम करें।
a2enconf php7.0-fpm
नोट :डेबियन/उबंटू के भविष्य के संस्करणों में, यह आदेश कुछ और में बदल सकता है, उदा। a2enconf php7.6-fpm
, क्योंकि PHP-FPM एक अलग संस्करण होगा।
अपाचे को पुनरारंभ करें।
systemctl restart apache2
अपने PHP एप्लिकेशन के लिए अपनी बाकी आवश्यकताओं को स्थापित करें। यहां एक उदाहरण दिया गया है:
apt install mariadb-server php-mysql
यह एक डेटाबेस सर्वर और PHP MySQL मॉड्यूल स्थापित करेगा ताकि आपका PHP एप्लिकेशन एक डेटाबेस से जुड़ सके।
RedHat-आधारित वितरण पर Apache MPM ईवेंट और PHP-FPM का उपयोग कैसे करें
अन्य लोकप्रिय सर्वर वितरण विकल्प RedHat, या CentOS है। ऊपर की तरह ही, एमपीएम इवेंट सक्षम और पीएचपी-एफपीएम के साथ अपाचे के क्लीन इंस्टाल का एक उदाहरण पेश किया जाएगा।
रूट के रूप में लॉग इन करें और Apache इंस्टॉल करें।
yum install httpd
डेबियन-आधारित डिस्ट्रोस के विपरीत, यहां आप देखेंगे कि अपाचे डिफ़ॉल्ट रूप से एमपीएम प्रीफोर्क का उपयोग करता है, कम से कम नवीनतम CentOS 7 पर लेखन के समय उपलब्ध है।
apachectl -V
MPM ईवेंट को सक्षम करने के लिए, आपको एक कॉन्फ़िगरेशन फ़ाइल संपादित करनी होगी।
sed -i '/mpm_prefork\.so$/s/^/#/' /etc/httpd/conf.modules.d/00-mpm.conf
यह एक #
जोड़ देगा टिप्पणी करने के लिए साइन इन करें (निष्क्रिय) लाइन LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
।
अब लाइन को अनकम्मेंट (सक्रिय) करें #LoadModule mpm_event_module modules/mod_mpm_event.so
पिछले #
. को हटाकर अगले आदेश के साथ हस्ताक्षर करें।
sed -i '/mpm_event\.so$/s/^#//' /etc/httpd/conf.modules.d/00-mpm.conf
Apache प्रारंभ करें और इसे बूट पर स्वतः प्रारंभ करने के लिए सक्षम करें।
systemctl start httpd.service systemctl enable httpd.service
जांचें कि क्या अपाचे अब एमपीएम इवेंट का उपयोग करता है।
apachectl -V
PHP-FPM और FastCGI मॉड्यूल स्थापित करें।
yum install php-fpm mod_fcgid
PHP फ़ाइलों को संसाधित करने के तरीके के बारे में Apache को निर्देश देने के लिए "/etc/httpd/conf.d/php.conf" बनाएं। नीचे दी गई सभी सामग्री को कॉपी करें, और सभी को एक बार टर्मिनल में पेस्ट करें, फिर ENTER दबाएँ।
cat <<PASTE > /etc/httpd/conf.d/php.conf # Redirect to local php-fpm if mod_php is not available <IfModule !mod_php7.c> <IfModule proxy_fcgi_module> # Enable http authorization headers <IfModule setenvif_module> SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1 </IfModule> <FilesMatch ".+\.ph(p[3457]?|t|tml)$"> #SetHandler "proxy:unix:/run/php/php7.0-fpm.sock|fcgi://localhost" SetHandler "proxy:fcgi://127.0.0.1:9000" </FilesMatch> <FilesMatch ".+\.phps$"> # Deny access to raw php sources by default # To re-enable it's recommended to enable access to the files # only in specific virtual host or directory Require all denied </FilesMatch> # Deny access to files without filename (e.g. '.php') <FilesMatch "^\.ph(p[3457]?|t|tml|ps)$"> Require all denied </FilesMatch> </IfModule> </IfModule> PASTE
इस महान विन्यास का श्रेय डेबियन को जाता है। अन्य स्रोत एक साधारण कॉन्फ़िगरेशन फ़ाइल की अनुशंसा करते हैं जैसे:
<FilesMatch \.php$> SetHandler "proxy:fcgi://127.0.0.1:9000" </FilesMatch>
लेकिन यह कुछ हमलों के लिए असुरक्षित है, और यदि कुछ सेवाएं विफल हो जाती हैं, तो आप सार्वजनिक रूप से PHP फ़ाइलों को उजागर कर सकते हैं, बदले में संभावित रूप से संग्रहीत पासवर्ड, कोड और संवेदनशील डेटा को उजागर कर सकते हैं।
अपाचे को पुनरारंभ करें।
systemctl restart httpd.service
PHP-FPM प्रारंभ करें और बूट पर इसके ऑटोस्टार्ट को सक्षम करें।
systemctl start php-fpm.service systemctl enable php-fpm.service
निष्कर्ष
अब आपके पास एक अपाचे सर्वर है जो यातायात के साथ बहुत बेहतर होता है। हालाँकि, याद रखें कि आप डिफ़ॉल्ट सेटिंग्स का उपयोग कर रहे हैं, जैसा कि अधिकांश लोगों के लिए "सर्वश्रेष्ठ" है। यदि आप वास्तव में अपने HTTP सर्वर का अधिकतम लाभ उठाना चाहते हैं, तो आपको उन विभिन्न चरों के बारे में पढ़ना होगा जिन्हें आप ट्यून कर सकते हैं। इनके लिए सही मान आपके सर्वर के संसाधनों, अपेक्षित ट्रैफ़िक और PHP एप्लिकेशन पर अत्यधिक निर्भर हैं।