Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

वेबफैक्शन पर रेडिस की स्थापना

परिचय

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

निर्देशों में पांच भाग होते हैं:स्थापना, परीक्षण, सर्वर शुरू करना, सर्वर का प्रबंधन करना और सर्वर को चालू रखना।

इंस्टॉलेशन

अपने वेबफैक्शन शेल में लॉग इन करें

ssh [email protected]

Redis डाउनलोड साइट से नवीनतम Redis डाउनलोड करें।

> mkdir -p ~/src/
> cd ~/src/
> wget http://download.redis.io/releases/redis-2.6.16.tar.gz
> tar -xzf redis-2.6.16.tar.gz
> cd redis-2.6.16/

बनाने से पहले, देखें कि आपका सर्वर लिनक्स 32 या 64 बिट है। कम से कम वेबफैक्शन की CentOS 5 मशीनों पर, इंस्टॉलेशन स्क्रिप्ट 32 बिट वातावरण को अच्छी तरह से हैंडल नहीं करती है। बिट्स के लिए कमांड है uname -m . यदि लिनक्स 32 बिट का है तो परिणाम i686 होगा, यदि 64 बिट है तो x86_64. विवरण के लिए यह उत्तर देखें।

> uname -m
i686

अगर आपका सर्वर 64 बिट (x86_64) है तो बस इसे बनाएं।

> make

लेकिन अगर आपका सर्वर 32 बिट (i686) है तो आपको थोड़ा अतिरिक्त सामान करना होगा। एक कमांड है make 32bit लेकिन यह एक त्रुटि पैदा करता है। make 32bit . बनाने के लिए इंस्टालेशन स्क्रिप्ट में एक लाइन संपादित करें काम करने के लिए।

> nano ~/src/redis-2.6.16/src/Makefile

इससे लाइन 214 बदलें

$(MAKE) CFLAGS="-m32" LDFLAGS="-m32"

इसके लिए

$(MAKE) CFLAGS="-m32 -march=i686" LDFLAGS="-m32 -march=i686"

और बचाओ। फिर मेक को 32 बिट फ्लैग के साथ चलाएं।

> cd ~/src/redis-2.6.16/  ## Note the dir, no trailing src/
> make 32bit

निष्पादन योग्य निर्देशिका ~/src/redis-2.6.16/src/ में बनाए गए थे . निष्पादन योग्य में शामिल हैं redis-cli , redis-server , redis-benchmark और redis-sentinel

परीक्षण (वैकल्पिक)

जैसा कि इंस्टॉलेशन के आउटपुट से पता चलता है, यह सुनिश्चित करना अच्छा होगा कि परीक्षण चलाकर सब कुछ अपेक्षित रूप से काम करता है।

Hint: To run 'make test' is a good idea ;)

दुर्भाग्य से परीक्षण के लिए tlc8.6.0 स्थापित करने की आवश्यकता है जो कम से कम मशीन web223 पर डिफ़ॉल्ट नहीं है। तो आपको इसे पहले स्रोत से स्थापित करना होगा। Tcl/Tk इंस्टालेशन नोट्स और कंपाइलिंग नोट्स देखें।

> cd ~/src/
> wget http://prdownloads.sourceforge.net/tcl/tcl8.6.0-src.tar.gz
> tar -xzf tcl8.6.0-src.tar.gz
> cd tcl8.6.0-src/unix/
> ./configure --prefix=$HOME
> make
> make test # Optional, see notes below
> make install

make test . के साथ Tcl का परीक्षण करना वेबफैक्शन के पर्यावरण प्रतिबंधों के कारण समय लगेगा और असफल भी होगा। मेरा सुझाव है कि आप इसे छोड़ दें।

अब जब हमने टीएलसी स्थापित कर लिया है तो हम रेडिस परीक्षण चला सकते हैं। परीक्षणों में लंबा समय लगेगा और अस्थायी रूप से काफी बड़ी मात्रा में मेमोरी का उपयोग भी करता है।

> cd ~/src/redis-2.6.16/
> make test

परीक्षण के बाद आप जारी रखने के लिए तैयार हैं।

सर्वर प्रारंभ करना

सबसे पहले, वेबफैक्शन कंट्रोल पैनल (कस्टम ऐप (पोर्ट पर सुनना)) के माध्यम से एक कस्टम एप्लिकेशन बनाएं। उदाहरण के लिए इसे नाम दें fooredis . ध्यान दें कि आपको ऐप के लिए एक डोमेन या वेबसाइट बनाने की ज़रूरत नहीं है यदि रेडिस का उपयोग केवल स्थानीय रूप से किया जाता है यानी उसी होस्ट से।

दूसरा, ऐप के लिए दिए गए सॉकेट पोर्ट नंबर के बारे में नोट कर लें। मान लीजिए कि उदाहरण 23015 है ।

पहले से संकलित निष्पादन योग्य को ऐप की निर्देशिका में कॉपी करें। आप सभी या केवल वही कॉपी करना चुन सकते हैं जिनकी आपको आवश्यकता है।

> cd ~/webapps/fooredis/
> cp ~/src/redis-2.6.16/src/redis-server .
> cp ~/src/redis-2.6.16/src/redis-cli .

नमूना कॉन्फ़िगरेशन फ़ाइल भी कॉपी करें। आप इसे जल्द ही संशोधित करेंगे।

> cp ~/src/redis-2.6.16/redis.conf .

अब रेडिस पहले से ही चलने योग्य है। हालांकि युगल समस्याएं हैं। पहले डिफ़ॉल्ट रेडिस पोर्ट 6379 पहले से उपयोग में हो सकता है। दूसरा, भले ही पोर्ट फ्री था, हां, आप सर्वर शुरू कर सकते हैं लेकिन यह उसी समय चलना बंद कर देता है जब आप शेल से बाहर निकलते हैं। पहले के लिए redis.conf को संपादित किया जाना चाहिए और दूसरे के लिए, आपको एक डेमॉन की आवश्यकता होती है जिसे redis.conf संपादित करके भी हल किया जाता है।

रेडिस खुद को डेमॉन मोड में चलाने में सक्षम है। उसके लिए आपको एक जगह स्थापित करने की आवश्यकता है जहां डेमॉन अपनी प्रक्रिया आईडी, पीआईडी ​​​​संग्रहीत करता है। आमतौर पर pidfiles को /var/run/ में स्टोर किया जाता है, लेकिन पर्यावरण प्रतिबंधों के कारण आपको अपने होम डायरेक्टरी में उनके लिए एक जगह का चयन करना होगा। क्योंकि बाद में सर्वर को प्रबंधित करने वाले भाग में समझाया गया एक कारण, एक अच्छा विकल्प है कि पिडफाइल को उसी निर्देशिका के तहत निष्पादन योग्य के रूप में रखा जाए। आपको फ़ाइल स्वयं बनाने की आवश्यकता नहीं है, Redis इसे आपके लिए स्वचालित रूप से बनाता है।

अब संपादन के लिए redis.conf खोलें।

> cd ~/webapps/fooredis/
> nano redis.conf

कॉन्फ़िगरेशन को निम्न तरीके से बदलें।

  • daemonize no -> daemonize yes
  • pidfile /var/run/redis.pid -> pidfile /home/foouser/webapps/fooredis/redis.pid
  • port 6379 -> port 23015

अब अंत में, रेडिस सर्वर शुरू करें। कॉन्फ़-फ़ाइल निर्दिष्ट करें ताकि रेडिस सही पोर्ट को सुन सके और डेमॉन के रूप में चल सके।

> cd ~/webapps/fooredis/
> ./redis-server redis.conf
> 

इसे चलते हुए देखें।

> cd ~/webapps/fooredis/
> ./redis-cli -p 23015
redis 127.0.0.1:23015> SET myfeeling Phew.
OK
redis 127.0.0.1:23015> GET myfeeling
"Phew."
redis 127.0.0.1:23015> (ctrl-d)
>

यदि आप चाहें तो सर्वर बंद कर दें।

> ps -u $USER -o pid,command | grep redis
  718 grep redis
10735 ./redis-server redis.conf
> kill 10735

या

> cat redis.pid | xargs kill

सर्वर का प्रबंधन

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

> cd ~/webapps/fooredis/
> nano Makefile

# Redis Makefile
client cli:
    ./redis-cli -p 23015

start restart:
    ./redis-server redis.conf

stop:
    cat redis.pid | xargs kill

नियम काफी आत्म-व्याख्यात्मक हैं। दूसरे नियम के बारे में विशेष यह है कि डेमॉन मोड में रहते हुए, ./redis-server को कॉल करने से कोई नई प्रक्रिया नहीं बनती है यदि कोई पहले से चल रही है।

तीसरे नियम में कुछ शांत ज्ञान है। यदि redis.pid को fororedis की निर्देशिका के तहत संग्रहीत नहीं किया गया था, लेकिन उदाहरण के लिए /var/run/redis.pid तो सर्वर को रोकना इतना आसान नहीं होगा। यह विशेष रूप से सच है यदि आप एक साथ कई रेडिस इंस्टेंस चलाते हैं।

नियम निष्पादित करने के लिए:

> make start

सर्वर चालू रखना

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

> export EDITOR=nano
> crontab -e

निम्नलिखित दो पंक्तियाँ जोड़ें और सहेजें।

*/5 * * * * make -C ~/webapps/fooredis/ -f ~/webapps/fooredis/Makefile start
@reboot make -C ~/webapps/fooredis/ -f ~/webapps/fooredis/Makefile start

पहला हर पांच मिनट में सुनिश्चित करता है कि फोरडिस चल रहा है। जैसा कि ऊपर कहा गया है कि यदि कोई पहले से चल रहा है तो यह नई प्रक्रिया शुरू नहीं करता है। दूसरा यह सुनिश्चित करता है कि सर्वर मशीन रीबूट के तुरंत बाद और पहले नियम के शुरू होने से बहुत पहले फ़ोरडिस शुरू हो गया है।

इसके लिए कुछ और विस्तृत तरीके इस्तेमाल किए जा सकते हैं, उदाहरण के लिए हमेशा के लिए। विषय के बारे में अधिक जानकारी के लिए यह वेबफैक्शन कम्युनिटी थ्रेड भी देखें।

निष्कर्ष

अब आपके पास है। बहुत कुछ किया है लेकिन शायद और भी आएगा। जो चीजें आप भविष्य में करना पसंद कर सकते हैं, जिन्हें यहां शामिल नहीं किया गया था, उनमें निम्नलिखित शामिल हैं।

  • पासवर्ड सेट करना, अन्य उपयोगकर्ताओं को आपके डेटाबेस को फ्लश करने से रोकना। (देखें redis.conf)
  • स्मृति उपयोग को सीमित करना (redis.conf देखें)
  • उपयोग और त्रुटियों को लॉग करना (redis.conf देखें)
  • एक बार में डेटा का बैकअप लेना।

कोई विचार, टिप्पणी या सुधार?



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. पृष्ठभूमि नॉनस्टॉप में रेडिस-सर्वर चलाना चाहते हैं

  2. रेडिस पब/उप में गिराए गए कनेक्शन से पुनर्प्राप्त करें

  3. जावा बाइट्स को बाइनरी सेफ स्ट्रिंग में बदलें

  4. लारवेल इको सर्वर, रेडिस, सॉकेट.आईओ:उन्हें काम करने के लिए प्रतीत नहीं कर सकता

  5. उपसर्ग के साथ कुंजी संग्रहीत करना जो रेडिस में समाप्त हो जाती है