यह मार्गदर्शिका आपको दिखाती है कि डेबियन 11 पर LEMP स्टैक (Nginx, MariaDB और PHP7.4) कैसे स्थापित करें। एक सॉफ़्टवेयर स्टैक एक साथ बंडल किए गए सॉफ़्टवेयर टूल का एक संग्रह है। LEMP का मतलब Linux, Nginx (इंजन-X), MariaDB/MySQL और PHP है, जो सभी खुले स्रोत हैं और उपयोग के लिए मुफ़्त हैं। यह सबसे आम सॉफ़्टवेयर स्टैक है जो गतिशील वेबसाइटों और वेब अनुप्रयोगों का समर्थन करता है। लिनक्स एक ऑपरेटिंग सिस्टम है; Nginx - वेब सर्वर; MariaDB/MySQL एक डेटाबेस सर्वर है और PHP एक सर्वर-साइड स्क्रिप्टिंग भाषा है जो गतिशील वेब पेज बनाने के लिए जिम्मेदार है। इस गाइड में हम रूट यूजर के रूप में इंस्टॉल कर रहे हैं, यदि आपके पास सामान्य यूजर है, तो कमांड का उपयोग करें sudo.
|
पूर्व-कॉन्फ़िगर सर्वर का कॉन्फ़िगरेशन ऑर्डर फॉर्म पर उपलब्ध है।
1. सॉफ़्टवेयर पैकेज अद्यतन करें
एलईएमपी स्टैक स्थापित करने से पहले, रिपॉजिटरी और सॉफ़्टवेयर पैकेज को अपडेट करने की अनुशंसा की जाती है। डेबियन 11 ओएस पर निम्नलिखित कमांड चलाएँ।
apt update
apt upgrade
2. Nginx वेब सर्वर स्थापित करें
Nginx — यह एक उच्च प्रदर्शन वाला वेब सर्वर है जो इन दिनों बहुत लोकप्रिय है। इसका उपयोग रिवर्स प्रॉक्सी और कैशिंग सर्वर के रूप में भी किया जा सकता है। Nginx वेब सर्वर को स्थापित करने के लिए निम्नलिखित कमांड दर्ज करें।
apt install nginx
एक बार यह इंस्टॉल हो जाने पर, हम निम्न कमांड चलाकर Nginx को बूट के दौरान स्वचालित रूप से प्रारंभ करने में सक्षम कर सकते हैं।
systemctl enable nginx
फिर इस आदेश के साथ Nginx प्रारंभ करें:
systemctl start nginx
अब इसकी स्थिति जांचें.
systemctl status nginx
अब अपने ब्राउज़र के एड्रेस बार में अपने डेबियन 11 सर्वर का सार्वजनिक आईपी पता दर्ज करें। आपको "Nginx में आपका स्वागत है" वेब पेज देखना चाहिए, जिसका अर्थ है कि Nginx वेब सर्वर सही ढंग से काम कर रहा है। यदि आप अपनी स्थानीय डेबियन 11 मशीन पर एलईएमपी स्थापित कर रहे हैं, तो अपने ब्राउज़र के एड्रेस बार में 127.0.0.1 या लोकलहोस्ट दर्ज करें।
यदि कनेक्शन अस्वीकार कर दिया गया है या स्थापित नहीं किया जा सकता है, तो फ़ायरवॉल टीसीपी पोर्ट 80 पर आने वाले अनुरोधों को रोक सकता है। यदि आप आईपीटेबल्स फ़ायरवॉल का उपयोग कर रहे हैं, तो आपको टीसीपी पोर्ट 80 खोलने के लिए निम्नलिखित कमांड चलाने की आवश्यकता है।
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
यदि आप UFW फ़ायरवॉल का उपयोग कर रहे हैं, तो TCP पोर्ट 80 खोलने के लिए यह कमांड चलाएँ।
ufw allow http
अब हमें www-data (Nginx उपयोगकर्ता) को वेब निर्देशिका का स्वामी बनाने की आवश्यकता है। डिफ़ॉल्ट रूप से इसका स्वामित्व रूट उपयोगकर्ता के पास होता है।
chown www-data:www-data /usr/share/nginx/html -R
3. डेटाबेस सर्वर स्थापित करें MariaDB
MariaDB MySQL का प्रतिस्थापन है। इसे पूर्व MySQL टीम के सदस्यों द्वारा विकसित किया गया था जो चिंतित थे कि Oracle MySQL को एक बंद स्रोत उत्पाद में बदल सकता है। डेबियन 11 पर मारियाडीबी स्थापित करने के लिए निम्नलिखित कमांड दर्ज करें।
apt install mariadb-server mariadb-client
स्थापना के बाद, मारियाडीबी सर्वर स्वचालित रूप से प्रारंभ होना चाहिए। इसकी स्थिति जांचने के लिए systemctl का उपयोग करें।
systemctl status mariadb
यदि यह नहीं चल रहा है, तो इसे इस आदेश से प्रारंभ करें:
systemctl start mariadb
मारियाडीबी को बूट के दौरान स्वचालित रूप से प्रारंभ करने की अनुमति देने के लिए, चलाएँ
systemctl enable mariadb
अब इंस्टालेशन के बाद सिक्योरिटी स्क्रिप्ट चलाएँ।
mysql_secure_installation
जब आपसे MariaDB के लिए रूट पासवर्ड दर्ज करने के लिए कहा जाए, तो Enter दबाएँ क्योंकि रूट पासवर्ड अभी तक सेट नहीं किया गया है। फिर MariaDB सर्वर के लिए रूट पासवर्ड सेट करने के लिए y दर्ज करें।
फिर आप किसी भी शेष प्रश्न का उत्तर देने के लिए Enter दबा सकते हैं, जो अज्ञात उपयोगकर्ता को हटा देगा, दूरस्थ रूट लॉगिन को अक्षम कर देगा और परीक्षण डेटाबेस को हटा देगा। यह कदम मारियाडीबी डेटाबेस को सुरक्षित करने के लिए बुनियादी आवश्यकता है। (ध्यान दें कि Y बड़े अक्षरों में है, जिसका अर्थ है कि यह डिफ़ॉल्ट उत्तर है।)
डिफ़ॉल्ट रूप से, डेबियन पर MaraiDB पैकेज उपयोगकर्ता प्रमाणीकरण के लिए unix_socket का उपयोग करता है, जिसका मूल रूप से मतलब है कि आप MariaDB कंसोल में लॉग इन करने के लिए OS उपयोगकर्ता नाम और पासवर्ड का उपयोग कर सकते हैं। तो आप मारियाडीबी रूट पासवर्ड प्रदान किए बिना लॉगिन करने के लिए निम्न कमांड चला सकते हैं।
mariadb -u root
बाहर निकलने के लिए, भागो
exit;
4. स्थापित करना PHP7.4
PHP7.4 को डेबियन 11 रिपॉजिटरी में शामिल किया गया है और इसमें PHP7.3 की तुलना में मामूली प्रदर्शन सुधार हैं। PHP7.4 और कुछ सामान्य एक्सटेंशन इंस्टॉल करने के लिए निम्न कमांड दर्ज करें।
apt install php7.4 php7.4-fpm php7.4-mysql php-common php7.4-cli php7.4-common php7.4-json php7.4-opcache php7.4-readline php7.4-mbstring php7.4-xml php7.4-gd php7.4-curl
PHP एक्सटेंशन आमतौर पर वर्डप्रेस जैसे सामग्री प्रबंधन सिस्टम (सीएमएस) के लिए आवश्यक होते हैं। उदाहरण के लिए, यदि आपके इंस्टॉलेशन में php7.4-xml गायब है, तो आपकी वर्डप्रेस साइट के कुछ पेज खाली हो सकते हैं और आपको Nginx त्रुटि लॉग में एक त्रुटि मिल सकती है, उदाहरण के लिए:
PHP संदेश: PHP गंभीर त्रुटि: हैंडल न किया गया त्रुटि: अपरिभाषित फ़ंक्शन पर कॉल करें xml_parser_create()
इन PHP एक्सटेंशन को इंस्टॉल करने से यह सुनिश्चित होगा कि आपका सीएमएस सुचारू रूप से चलता है। अब php7.4-fpm चलाएँ।
systemctl start php7.4-fpm
बूट के दौरान ऑटोरन सक्षम करें।
systemctl enable php7.4-fpm
स्थिति जाँचिए:
systemctl status php7.4-fpm
5. आइए एक Nginx सर्वर ब्लॉक बनाएं
Nginx सर्वर ब्लॉक Apache में वर्चुअल होस्ट के समान है। हम डिफ़ॉल्ट सर्वर ब्लॉक का उपयोग नहीं करेंगे क्योंकि यह PHP कोड चलाने के लिए उपयुक्त नहीं है और यदि हम इसे बदलते हैं तो यह गड़बड़ हो जाएगा। इसलिए, निम्न आदेश चलाकर साइट-सक्षम निर्देशिका में डिफ़ॉल्ट प्रतीकात्मक लिंक को हटा दें। (यह अभी भी /etc/nginx/sites-available/default के रूप में उपलब्ध है।)
rm /etc/nginx/sites-enabled/default
फिर /etc/nginx/conf.d/ निर्देशिका में एक नई सर्वर ब्लॉक फ़ाइल बनाने के लिए नैनो जैसे कमांड लाइन टेक्स्ट एडिटर का उपयोग करें। निम्नलिखित पाठ को फ़ाइल में चिपकाएँ। निम्नलिखित स्निपेट Nginx को सामान्य सर्वर नाम के साथ IPv4 पोर्ट 80 और IPv6 पोर्ट 80 पर सुनने देगा।
nano /etc/nginx/conf.d/default.conf
server {
listen 80;
listen [::]:80;
server_name _;
root /usr/share/nginx/html/;
index index.php index.html index.htm index.nginx-debian.html;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
include snippets/fastcgi-php.conf;
}
# A long browser cache lifetime can speed up repeat visits to your page
location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
access_log off;
log_not_found off;
expires 360d;
}
# disable access to hidden files
location ~ /\.ht {
access_log off;
log_not_found off;
deny all;
}
}
फ़ाइल को सहेजें और बंद करें। (फ़ाइल को नैनो टेक्स्ट एडिटर में सहेजने के लिए, Ctrl+O दबाएँ, फिर पुष्टि करने के लिए Enter दबाएँ। बाहर निकलने के लिए, Ctrl+X दबाएँ।)
फिर अपने Nginx कॉन्फ़िगरेशन का परीक्षण करें।
nginx -t
यदि परीक्षण सफल होता है, तो Nginx को पुनरारंभ करें।
systemctl reload nginx
6. आइए PHP का परीक्षण करें
Nginx वेब सर्वर के साथ PHP-FPM का परीक्षण करने के लिए, हमें वेबरूट निर्देशिका में एक info.php फ़ाइल बनाने की आवश्यकता है।
nano /usr/share/nginx/html/info.php
फ़ाइल को सहेजें और बंद करें। अब अपने ब्राउज़र के एड्रेस बार मेंserver-ip-address/info.php डालें। सर्वर आईपी पते को अपने वास्तविक आईपी पते से बदलें। यदि आप अपने स्थानीय कंप्यूटर पर इस ट्यूटोरियल का अनुसरण कर रहे हैं, तो 127.0.0.1/info.php या localhost/info.php दर्ज करें।
आप अपने सर्वर की PHP जानकारी देखेंगे। इसका मतलब यह है कि PHP स्क्रिप्ट Nginx वेब सर्वर के साथ सही ढंग से काम कर सकती है।
7. Nginx का स्वचालित पुनरारंभ
यदि किसी कारण से आपकी Nginx प्रक्रिया रुक गई है, तो आपको इसे पुनः आरंभ करने के लिए निम्नलिखित कमांड चलाने की आवश्यकता है।
systemctl restart nginx
इस कमांड को मैन्युअल रूप से दर्ज करने के बजाय, हम nginx.service systemd सिस्टम मॉड्यूल को संपादित करके Nginx को स्वचालित रूप से पुनरारंभ कर सकते हैं। डिफ़ॉल्ट सिस्टमडी सेवा कॉन्फ़िगरेशन को ओवरराइड करने के लिए, हम एक अलग निर्देशिका बनाते हैं।
mkdir -p /etc/systemd/system/nginx.service.d/
फिर इस निर्देशिका में एक फ़ाइल बनाएँ।
nano /etc/systemd/system/nginx.service.d/restart.conf
फ़ाइल में निम्नलिखित पंक्तियाँ जोड़ें, जो विफलता का पता चलने के 5 सेकंड बाद Nginx को स्वचालित रूप से पुनरारंभ करने के लिए बाध्य करेगी। डिफ़ॉल्ट RetartSec मान 100ms है, जो बहुत कम है। यदि RestartSec पर्याप्त बड़ा नहीं है, तो Nginx शिकायत कर सकता है कि "प्रारंभ अनुरोध बहुत तेज़ी से पुनः प्रयास कर रहा है"।
[Service]
Restart=always
RestartSec=5s
फ़ाइल को सहेजें और बंद करें। फिर परिवर्तनों को प्रभावी करने के लिए systemd को पुनरारंभ करें।
systemctl daemon-reload
यह जांचने के लिए कि क्या यह काम करेगा, Nginx को मारें:
pkill nginx
फिर Nginx स्थिति जांचें। आप पाएंगे कि Nginx स्वचालित रूप से पुनरारंभ हो जाता है।
systemctl status nginx
LEMP (Nginx, MariaDB और PHP7.4) को डेबियन 11 पर सफलतापूर्वक स्थापित किया गया है। ये सभी चरण ऑर्डर फॉर्म में VPS सर्वर के लिए पूर्व-स्थापित डेबियन 11 LEMP कॉन्फ़िगरेशन में पहले ही पूरे हो चुके हैं।