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

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

LAMP स्टैक (लिनक्स, Apache, MySQL, PHP) कैसे इंस्टॉल करें पर लगभग हर ट्यूटोरियल यह सिफारिश करेगा कि आप PHP स्क्रिप्ट को प्रोसेस करने के लिए बिल्ट-इन Apache मॉड्यूल का उपयोग करें। उदाहरण के लिए, उबंटू में आप sudo apt install libapache2-mod-php जैसी कमांड का उपयोग करके एक पैकेज इंस्टॉल करके इसे सक्षम करेंगे। यह बदले में Apache को mpm_prefork का उपयोग करने के लिए मजबूर करेगा। हर बार जब कोई विज़िटर आपकी वेबसाइट एक्सेस करता है, तो उस कनेक्शन को संभालने के लिए एक नई प्रक्रिया शुरू की जाएगी। यह तब अच्छा काम करता है जब ट्रैफिक कम होता है।

लेकिन, यह एक बड़ा मुद्दा बन जाता है यदि आपको अचानक ट्रैफिक का फटना मिलता है। उदाहरण के लिए, एक Reddit पोस्ट में आपकी वेबसाइट शामिल हो सकती है, और यदि पोस्ट लोकप्रिय हो जाता है, तो आपको कुछ ही मिनटों में हजारों विज़िटर मिल सकते हैं।

बेस्ट केस परिदृश्य में, यदि Apache ट्रैफिक फटने को संभालने में सक्षम है, तो कुछ बदकिस्मत विज़िटर्स को शायद तीस से साठ सेकंड इंतजार करना पड़ सकता है जब तक पेज लोड नहीं हो जाता, जो आज की दुनिया में बेतुका है। सबसे खराब स्थिति में, सर्वर बुरी तरह से लैग करना शुरू कर देगा, और संसाधनों की कमी के कारण कुछ कनेक्शन बस ड्रॉप हो जाएंगे। इस मामले में विज़िटर्स को उनके ब्राउज़र में एक त्रुटि दिखाई देगी।

किसी भी तरह से यह एक अच्छा परिदृश्य नहीं है, क्योंकि आपने संभावित रूप से सैकड़ों या हजारों इच्छुक पाठकों, ग्राहकों या प्रशंसकों का ध्यान खो दिया।

दुर्भाग्य से, PHP किसी भी तरह से एक बहुत बड़ा संसाधन हॉग है। लेकिन, mpm_event के साथ, Apache अचानक ट्रैफिक फटने को बहुत अधिक कुशल तरीके से संभाल सकता है। हालांकि, यह अनुशंसा की जाती है कि आपके सर्वर में कम से कम 2GB RAM और 2 CPU कोर हों, वास्तविक या वर्चुअल, और यदि आप तीव्र ट्रैफिक स्पाइक्स की उम्मीद करते हैं, जैसे प्रति सेकंड दस से अधिक विज़िटर, तो और भी अधिक। यदि आप वर्चुअल प्राइवेट सर्वर का उपयोग कर रहे हैं, तो अपनी स्थिति में अधिक वर्चुअल CPU कोर और SSD स्टोरेज जोड़ें। RAM द्वितीयक है।

डेबियन-आधारित डिस्ट्रीब्यूशन पर Apache MPM Event और PHP-FPM का उपयोग कैसे करें

डेबियन, उबंटू या इस परिवार के अन्य डिस्ट्रो पर बस "libapache2-mod-php" पैकेज इंस्टॉल करने से बचें। जब आप Apache इंस्टॉल करते हैं तो यह डिफ़ॉल्ट रूप से MPM इवेंट का उपयोग करता है। लेकिन उल्लिखित पैकेज इंस्टॉल करने पर, एक स्क्रिप्ट MPM इवेंट को अक्षम कर देती है और MPM प्रीफोर्क को सक्षम कर देती है। Apache PHP मॉड्यूल केवल (सुरक्षित रूप से) mpm_prefork के साथ काम कर सकता है। बेशक, "libapache2-mod-php" के बिना, आपके पास PHP फ़ाइलों के लिए कोई प्रोसेसर नहीं है। इसलिए आप Apache में शामिल PHP मॉड्यूल के बजाय PHP-FPM का उपयोग करेंगे। यहां बताया गया है कि आप एक नए सर्वर पर LAMP स्टैक कैसे इंस्टॉल करेंगे। आप चरणों को अपने वेब एप्लिकेशन की आवश्यकताओं के अनुसार अनुकूलित कर सकते हैं।

सबसे पहले, रूट के रूप में लॉग इन करें। फिर, Apache इंस्टॉल करें।

apt update && apt install apache2

इस बिंदु पर आप देख सकते हैं कि Apache वास्तव में डिफ़ॉल्ट रूप से MPM इवेंट सक्षम के साथ शिप करता है।

apachectl -V

PHP-FPM इंस्टॉल करें।

apt install php-fpm

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

FastCGI प्रोटोकॉल सक्षम करें।

a2enmod proxy_fcgi

Apache के लिए PHP-FPM डिफ़ॉल्ट कॉन्फ़िगरेशन सक्षम करें।

a2enconf php7.0-fpm

नोट: डेबियन/उबंटू के भविष्य के संस्करणों में, यह कमांड कुछ और में बदल सकती है, जैसे a2enconf php7.6-fpm, क्योंकि PHP-FPM एक अलग संस्करण होगा।

Apache रीस्टार्ट करें।

systemctl restart apache2

अपने PHP एप्लिकेशन के लिए अपनी बाकी आवश्यकताएं इंस्टॉल करें। यहां एक उदाहरण है:

apt install mariadb-server php-mysql

यह एक डेटाबेस सर्वर और PHP MySQL मॉड्यूल इंस्टॉल करेगा ताकि आपका PHP एप्लिकेशन डेटाबेस से कनेक्ट हो सके।

RedHat-आधारित डिस्ट्रीब्यूशन पर Apache MPM Event और PHP-FPM का उपयोग कैसे करें

दूसरा लोकप्रिय सर्वर डिस्ट्रीब्यूशन विकल्प RedHat, या CentOS है। उसी तरह जैसे ऊपर, Apache का एक साफ इंस्टॉल जिसमें MPM इवेंट सक्षम हो और PHP-FPM की पेशकश की जाएगी।

रूट के रूप में लॉग इन करें और Apache इंस्टॉल करें।

yum install httpd

डेबियन-आधारित डिस्ट्रो के विपरीत, यहां आप देखेंगे कि Apache डिफ़ॉल्ट रूप से MPM प्रीफोर्क का उपयोग करता है, कम से कम लेखन के समय उपलब्ध नवीनतम 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

जांचें कि क्या Apache अब MPM इवेंट का उपयोग करता है।

apachectl -V

PHP-FPM और FastCGI मॉड्यूल इंस्टॉल करें।

yum install php-fpm mod_fcgid

"/etc/httpd/conf.d/php.conf" बनाएं ताकि Apache को निर्देश दिया जा सके कि PHP फ़ाइलों को कैसे प्रोसेस करना है। नीचे दी गई ALL सामग्री को कॉपी करें, और इसे एक बार में टर्मिनल में पेस्ट करें, फिर ENTER दबाएं।

cat < /etc/httpd/conf.d/php.conf
# Redirect to local php-fpm if mod_php is not available


# Enable http authorization headers

SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1


#SetHandler "proxy:unix:/run/php/php7.0-fpm.sock|fcgi://localhost"
SetHandler "proxy:fcgi://127.0.0.1:9000"


# 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

# Deny access to files without filename (e.g. '.php')

Require all denied



PASTE

इस शानदार कॉन्फ़िगरेशन का श्रेय डेबियन को जाता है। अन्य स्रोत एक साधारण कॉन्फ़िगरेशन फ़ाइल की सिफारिश करते हैं जैसे:


SetHandler "proxy:fcgi://127.0.0.1:9000"

लेकिन यह कुछ हमलों के प्रति संवेदनशील है, और यदि कुछ सेवाएं विफल होती हैं, तो आप PHP फ़ाइलों को सार्वजनिक रूप से उजागर कर सकते हैं, बदले में संभावित रूप से संग्रहीत पासवर्ड, कोड और संवेदनशील डेटा को उजागर कर सकते हैं।

Apache रीस्टार्ट करें।

systemctl restart httpd.service

PHP-FPM शुरू करें और बूट पर इसके ऑटोस्टार्ट को सक्षम करें।

systemctl start php-fpm.service
systemctl enable php-fpm.service

निष्कर्ष

अब आपके पास एक Apache सर्वर है जो ट्रैफिक के साथ बेहतर स्केल करता है। हालांकि, याद रखें कि आप डिफ़ॉल्ट सेटिंग्स का उपयोग कर रहे हैं, जैसा कि ज्यादातर लोगों के लिए "सबसे अच्छा" है। यदि आप वास्तव में अपने HTTP सर्वर से अधिकतम लाभ प्राप्त करना चाहते हैं, तो आपको उन विभिन्न चरों के बारे में पढ़ना होगा जिन्हें आप ट्यून कर सकते हैं। इनके लिए सही मान आपके सर्वर के संसाधनों, अपेक्षित ट्रैफिक और PHP एप्लिकेशन पर अत्यधिक निर्भर हैं।

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

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

  1. लिनक्स VPS पर CS:GO सर्वर कैसे बनाएं लिनक्स VPS पर CS:GO सर्वर कैसे बनाएं

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

  1. उच्च उपलब्धता प्राप्त करें: Oracle Forms & Reports 12.2.1.3 को Oracle Enterprise Linux 7.2 पर इंस्टॉल और कॉन्फ़िगर करना उच्च उपलब्धता प्राप्त करें: Oracle Forms & Reports 12.2.1.3 को Oracle Enterprise Linux 7.2 पर इंस्टॉल और कॉन्फ़िगर करना

    उच्च-उपलब्धता मॉडल निम्न आरेख एक उच्च-उपलब्धता मॉडल को दर्शाता है। इस मॉडल का उपयोग करने के लिए, आपको निम्नलिखित कार्य करने होंगे, जिन्हें यह ब्लॉग विस्तार से कवर करता है: एप्लिकेशन नोड्स (नोड1 और नोड2) पर WebLogic® सर्वर संस्करण 12.2.1.3 इंस्टॉल करने की तैयारी करें। JDK® 1.8 इंस्टॉल करें। WebLogic