Nextcloud में Redis को चलाने तक का संघर्ष

8 min

language: ja bn en es hi pt ru zh-cn zh-tw

नमस्ते, मैं अक्षम हूँ।

Ubuntu 20.04 पर Nextcloud21.0.1+Nginx+PHP+MariaDB+Redis सेट करें

मैंने इस लेख का पालन किया, जिसे मैंने पहले Nextcloud स्थापित करते समय भी संदर्भित किया था, लेकिन मेरे वातावरण में Redis ठीक से काम नहीं कर रहा था।
यह काम न भी करे तो भी ठीक चलता है, इसलिए मुझे इसे करने की ज़रूरत नहीं है...

मैं लंबे समय से इससे परेशान था, तो यह समाधान है।
वैसे, चूंकि मैंने Nginx में प्रॉक्सी कैशिंग सेट की है, तो मैंने सोचा कि क्या अंतर है, इसलिए मैंने ChatGPT से इसे समझाने के लिए कहा। आप नीचे दिए गए बटन को दबाकर इसे देख सकते हैं।

#myText { display: none; } #toggleButton:checked ~ #myText { display: block; }

विवरण दिखाएँ

Nginx का प्रॉक्सी कैश वेब सर्वर (Nginx) में ही बना होता है।
यह एक रिवर्स प्रॉक्सी के रूप में कार्य करता है, एप्लिकेशन सर्वर को अनुरोधों को कैश करता है और प्रतिक्रियाएँ लौटाता है।

इसका उपयोग मुख्य रूप से वेब सामग्री (HTML, चित्र, CSS, JavaScript, आदि) को कैश करने के लिए किया जाता है।
यह स्थिर फ़ाइलों के वितरण को गति देता है और सर्वर पर लोड कम करता है।

Nginx के प्रॉक्सी कैश को Nginx कॉन्फ़िगरेशन फ़ाइलों का उपयोग करके आसानी से प्रबंधित और नियंत्रित किया जा सकता है।
आप कैश की समाप्ति, आकार, कैशिंग के लिए लक्षित URL आदि सेट कर सकते हैं।

Nginx का प्रॉक्सी कैश एक ही Nginx सर्वर के भीतर संचालित होता है, और स्केलेबिलिटी और उच्च उपलब्धता के लिए Nginx क्लस्टरिंग या प्रतिकृति जैसी तकनीकों की आवश्यकता होती है।

यह डिस्क पर अस्थायी कैश फ़ाइलें संग्रहीत करता है, लेकिन दीर्घकालिक डेटा दृढ़ता या स्थायित्व के लिए सुविधाएँ प्रदान नहीं करता है।

Redis एक स्वतंत्र डेटाबेस और कैशिंग प्लेटफ़ॉर्म है।
यह एक अलग सर्वर पर चलता है, और एप्लिकेशन कैश किए गए डेटा को पढ़ने और लिखने के लिए Redis से जुड़ते हैं।

यह एक सामान्य-उद्देश्य वाला कैशिंग प्लेटफ़ॉर्म है और विभिन्न प्रकार के डेटा को कैश कर सकता है।
कैश किए जा सकने वाले डेटा के प्रकारों में स्ट्रिंग, सूचियाँ, सेट, सॉर्ट किए गए सेट, हैश आदि शामिल हैं।

Redis को प्रोग्राम द्वारा सीधे नियंत्रित और प्रबंधित किया जाता है।
आप Redis कमांड का उपयोग करके कैश किए गए डेटा को सेट करने, प्राप्त करने, हटाने और समाप्ति समय निर्धारित करने जैसे कार्यों को करते हैं।

समस्या

सबसे पहले, Redis काम ही नहीं कर रहा था।
अंततः स्थापित किए गए पैकेज
Redis , Redis-server , Redis-tools , php-fpm

जब मैंने Redis शुरू करने की कोशिश की

sudo service redis-server start

आई हुई त्रुटि

समस्या 1

Reading the configuration file, at line 1
>>> 'logfile "/var/log/redis/redis.log"'
Can't open the log file: No such file or directory

समाधान: यह शिकायत करता है कि यह redis.conf में कॉन्फ़िगर किए गए लॉग तक नहीं पहुँच सकता है!
भले ही लॉगफाइल निर्दिष्ट न हो, यह स्वचालित रूप से एक बनाता है, इसलिए मैंने इसे "" पर सेट कर दिया। यदि वास्तव में आवश्यक हो, तो लॉग, अनुमतियाँ और पहुँच अधिकार कॉन्फ़िगर करके यह सामान्य रूप से काम करना चाहिए।

समस्या 2

# Opening port: bind: Address already in use

समाधान: यह शिकायत करता है कि पोर्ट पहले से ही उपयोग में है!
redis.conf में प्रारंभ में कॉन्फ़िगर किया गया पोर्ट 6379 है। किसी कारण से, Devuan (OpenRC) में, sudo service redis-server stop भी एक त्रुटि फेंकता है और रुकता नहीं है। तो, यह जांचने के लिए कि इसका उपयोग कौन कर रहा है, मैंने निम्नलिखित दर्ज किया:

root@hoge:~# lsof -i :6379

यदि पृष्ठभूमि में कोई Redis प्रक्रिया चल रही है, तो वह मिल गई। PID की जाँच करें और उसे मार दें।

root@hoge:~# kill -9 <PID>

इसके बाद, इसे सामान्य रूप से शुरू करने में सक्षम होना चाहिए।

समस्या 3

*** FATAL CONFIG FILE ERROR ***
Reading the configuration file, at line 135
>>> 'slave-serve-stale-data yes'
Bad directive or wrong number of arguments

समाधान: मुझे एहसास हुआ कि यह त्रुटि आमतौर पर Redis के संस्करण और redis.conf फ़ाइल के संस्करण के बीच बेमेल के कारण होती है।

Redis वेबसाइट पर जाएं, अपने संस्करण के लिए कॉन्फ़िगरेशन फ़ाइल चुनें, और सब कुछ कॉपी-पेस्ट करें।

Redis कॉन्फ़िगरेशन

समस्या 4

 Failed opening the RDB file dump.rdb (in server root dir /) for saving: Permission denied
6232:M 07 Jul 2023 03:56:39.182 # Background saving error

समाधान: यह कहता है "dump.rdb फ़ाइल नहीं खोली जा सकती~"।
इसी तरह, यदि कोई पुरानी RDB फ़ाइल बची रहती है, तो यह शुरू होने के बाद बीच में क्रैश हो सकती है। मैंने शुरू में सोचा था कि यह मेमोरी का मुद्दा था, लेकिन ऐसा नहीं था।
यह तब हुआ जब मैंने शुरू होने के बाद redis.conf में कैश गंतव्य फ़ोल्डर Dir */~ को बदल दिया।
भले ही कैश निर्देशिका बदल दी जाए, यह पुरानी से पढ़ने की कोशिश करता है, इसलिए आइए इसे जबरन हटा दें। मेरा /var/lib/redis/dump.rdb पर था।

sudo rm /var/lib/redis/dump.rdb

इससे Redis-साइड की समस्याएँ हल हो गईं।

Nextcloud पक्ष

root@hoge:~# sudo -u www-data php /var/www/html/nextcloud/occ maintenance:update:htaccess

htaccess अपडेट करते समय क्या करना है।

RedisException: Connection refused in /var/www/html/nextcloud/lib/private/RedisFactory.php:137
~~~~~

समाधान: यदि इसके बाद फ़ाइल नामों के साथ कई त्रुटियाँ आती हैं, तो इसका मतलब है कि Redis ठीक से काम नहीं कर रहा है, या Nextcloud कॉन्फ़िगरेशन गलत है और Redis से कनेक्ट नहीं हो सकता है।
Redis और Nextcloud के php.config पर संदेह करने पर ध्यान दें।


मुझे लगता है कि कुछ और मुद्दे भी थे, लेकिन ये मुख्य थे।

अब मैं भविष्य में Redis को आत्मविश्वास से संभाल सकता हूँ।

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

मैं थक गया हूँ।
फिर मिलते हैं।

Related Posts