Computer >> कंप्यूटर >  >> प्रणाली >> Linux

Linux सर्वर पर उच्च ट्रैफ़िक वेबसाइटों के लिए Apache और PHP को कैसे कॉन्फ़िगर करें

Linux सर्वर पर उच्च ट्रैफ़िक वेबसाइटों के लिए Apache और PHP को कैसे कॉन्फ़िगर करें

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

Linux सर्वर पर उच्च ट्रैफ़िक वेबसाइटों के लिए Apache और PHP को कैसे कॉन्फ़िगर करें

PHP-FPM स्थापित करें।

apt install php-fpm

आप अपाचे में PHP प्रोसेसर को सक्षम करने के निर्देश देखेंगे।

Linux सर्वर पर उच्च ट्रैफ़िक वेबसाइटों के लिए Apache और 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

Linux सर्वर पर उच्च ट्रैफ़िक वेबसाइटों के लिए Apache और PHP को कैसे कॉन्फ़िगर करें

MPM ईवेंट को सक्षम करने के लिए, आपको एक कॉन्फ़िगरेशन फ़ाइल संपादित करनी होगी।

sed -i '/mpm_prefork\.so$/s/^/#/' /etc/httpd/conf.modules.d/00-mpm.conf

यह एक # जोड़ देगा टिप्पणी करने के लिए साइन इन करें (निष्क्रिय) लाइन LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

Linux सर्वर पर उच्च ट्रैफ़िक वेबसाइटों के लिए Apache और PHP को कैसे कॉन्फ़िगर करें

अब लाइन को अनकम्मेंट (सक्रिय) करें #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

Linux सर्वर पर उच्च ट्रैफ़िक वेबसाइटों के लिए Apache और PHP को कैसे कॉन्फ़िगर करें

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 एप्लिकेशन पर अत्यधिक निर्भर हैं।


  1. मैलवेयर और रूटकिट के लिए लिनक्स सर्वर को कैसे स्कैन करें

    वर्म्स, वायरस, मालवेयर और खतरनाक रूटकिट हर सर्वर एडमिनिस्ट्रेटर के अस्तित्व के लिए अभिशाप हैं। आर्किटेक्चर के आधार पर, संक्रमित सिस्टम में कोड नीर-डू-वेल्स का पता लगाने के लिए कई विकल्प हो सकते हैं, संवेदनशील जानकारी एकत्र करना और/या इस प्रक्रिया में संगठनों को काफी पैसा खर्च करना पड़ता है। शुक्र ह

  1. सीएस कैसे बनाएं:लिनक्स वीपीएस पर सर्वर पर जाएं

    काउंटर-स्ट्राइक के लिए स्टीम के आधिकारिक गेम सर्वर:ग्लोबल ऑफेंसिव अधिकांश उद्देश्यों के लिए पर्याप्त हैं। हालाँकि, आप उन्हें नियंत्रित नहीं करते हैं। यदि आप अपना स्वयं का सर्वर बनाते हैं, तो आप निम्न में सक्षम होंगे: अपने स्वयं के नियम निर्धारित करें, जैसे मैच का समय, फ्रीज का समय, अधिकतम खिलाड़ी,

  1. OEL पर उच्च उपलब्धता के लिए Oracle प्रपत्र और रिपोर्ट स्थापित और कॉन्फ़िगर करें

    यह ब्लॉग आपको उच्च उपलब्धता सुनिश्चित करने के लिए Oracle® फॉर्म और रिपोर्ट संस्करण 12.2.1.3.0 को Oracle Enterprise Linux (OEL) संस्करण 7.2 सर्वर पर स्थापित और कॉन्फ़िगर करने का तरीका दिखाता है। निम्न आरेख एक उच्च-उपलब्धता मॉडल को दर्शाता है: इस उच्च-उपलब्धता मॉडल का उपयोग करने के लिए, आपको निम्नल