Image

(अंतिम परिवर्तन: 06.11.2024)
यह मार्गदर्शिका आपको दिखाती है कि डेबियन 12 पर LEMP स्टैक (Nginx, MariaDB और PHP-8.2) कैसे स्थापित करें। एक सॉफ़्टवेयर स्टैक एक साथ बंडल किए गए सॉफ़्टवेयर टूल का एक संग्रह है। LEMP का मतलब Linux, Nginx (इंजन-X), MariaDB/MySQL और PHP है, जो सभी खुले स्रोत हैं और उपयोग के लिए मुफ़्त हैं। यह सबसे आम सॉफ़्टवेयर स्टैक है जो गतिशील वेबसाइटों और वेब अनुप्रयोगों का समर्थन करता है। लिनक्स एक ऑपरेटिंग सिस्टम है; Nginx - वेब सर्वर; MariaDB/MySQL एक डेटाबेस सर्वर है और PHP एक सर्वर-साइड स्क्रिप्टिंग भाषा है जो गतिशील वेब पेज बनाने के लिए जिम्मेदार है। इस गाइड में, हम रूट उपयोगकर्ता के रूप में इंस्टॉल कर रहे हैं, यदि आप एक सामान्य उपयोगकर्ता हैं, तो sudo कमांड का उपयोग करें।


सबसे अक्सर पूछे जाने वाले प्रश्न:

  • हम चाहते हैं कि सारा डेटा हमारे पास रहे। क्या आप यह सारा सेटअप हमारे उपकरण पर कर सकते हैं?

    हां, आप अपने उपकरण पर इस कॉन्फ़िगरेशन की स्थापना और कॉन्फ़िगरेशनlink.


पूर्व-कॉन्फ़िगर सर्वर का कॉन्फ़िगरेशन ऑर्डर फॉर्म पर उपलब्ध है।

1. सॉफ़्टवेयर पैकेज अद्यतन करें

एलईएमपी स्टैक स्थापित करने से पहले, रिपॉजिटरी और सॉफ़्टवेयर पैकेज को अपडेट करने की अनुशंसा की जाती है। डेबियन 12 ओएस पर निम्नलिखित कमांड चलाएँ।

apt update
apt upgrade

2. एक वेब सर्वर स्थापित करें Nginx

Nginx — यह एक उच्च प्रदर्शन वाला वेब सर्वर है जो इन दिनों बहुत लोकप्रिय है। इसका उपयोग रिवर्स प्रॉक्सी और कैशिंग सर्वर के रूप में भी किया जा सकता है। Nginx वेब सर्वर को स्थापित करने के लिए निम्नलिखित कमांड दर्ज करें।

apt install nginx

एक बार यह इंस्टॉल हो जाने पर, हम निम्न कमांड चलाकर Nginx को बूट के दौरान स्वचालित रूप से प्रारंभ करने में सक्षम कर सकते हैं।

systemctl enable nginx

फिर इस आदेश के साथ Nginx प्रारंभ करें:

systemctl start nginx

अब इसकी स्थिति जांचें.

systemctl status nginx

अब अपने ब्राउज़र के एड्रेस बार में अपने डेबियन 12 सर्वर का सार्वजनिक आईपी पता दर्ज करें। आपको "Nginx में आपका स्वागत है" वेब पेज देखना चाहिए, जिसका अर्थ है कि Nginx वेब सर्वर सही ढंग से काम कर रहा है। यदि आप अपनी स्थानीय डेबियन 12 मशीन पर एलईएमपी स्थापित कर रहे हैं, तो अपने ब्राउज़र के एड्रेस बार में 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 MySQL का प्रतिस्थापन है। इसे पूर्व MySQL टीम के सदस्यों द्वारा विकसित किया गया था जो चिंतित थे कि Oracle MySQL को एक बंद स्रोत उत्पाद में बदल सकता है। डेबियन 12 पर मारियाडीबी स्थापित करने के लिए निम्नलिखित कमांड दर्ज करें।

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. आइए PHP-8.2 इंस्टॉल करें

PHP-8.2 को डेबियन 12 रिपॉजिटरी में शामिल किया गया है और इसमें PHP-7.x की तुलना में मामूली प्रदर्शन सुधार हैं। PHP-8.2 और कुछ सामान्य एक्सटेंशन इंस्टॉल करने के लिए निम्न कमांड टाइप करें।

apt install php php-fpm php-mysql php-common php-cli php-common php-json php-opcache php-readline php-mbstring php-xml php-gd php-curl

PHP एक्सटेंशन आमतौर पर वर्डप्रेस जैसे सामग्री प्रबंधन सिस्टम (सीएमएस) के लिए आवश्यक होते हैं। उदाहरण के लिए, यदि आपके इंस्टॉलेशन से php8.2-xml गायब है, तो आपकी वर्डप्रेस साइट के कुछ पेज खाली हो सकते हैं और आपको Nginx त्रुटि लॉग में एक त्रुटि मिल सकती है, उदाहरण के लिए:

PHP संदेश: PHP गंभीर त्रुटि: हैंडल न किया गया त्रुटि: अपरिभाषित फ़ंक्शन पर कॉल करें xml_parser_create()

इन PHP एक्सटेंशन को इंस्टॉल करने से यह सुनिश्चित होगा कि आपका सीएमएस सुचारू रूप से चलता है। अब php8.2-fpm चलाएँ।

systemctl start php8.2-fpm

बूट के दौरान ऑटोरन सक्षम करें।

systemctl enable php8.2-fpm

स्थिति जाँचिए:

systemctl status php8.2-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/php8.2-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 и PHP8.2) डेबियन 12 पर सफलतापूर्वक स्थापित। ये सभी चरण ऑर्डर फॉर्म में वीपीएस सर्वर के लिए पूर्व-स्थापित एलईएमपी डेबियन 12 कॉन्फ़िगरेशन में पहले ही पूरे हो चुके हैं।




No Comments Yet