Redis هو نظام تخزين مؤقت وتخزين في الذاكرة مفتوح المصدر، ويُشار إليه أيضًا باسم خادم بنية البيانات. وهو يقدم دعمًا متقدمًا للعديد من أنواع البيانات، مثل جداول التجزئة (hashes)، والقوائم، والمجموعات، وخرائط البت (bitmaps)، وغيرها الكثير. وبسبب أدائه الممتاز، يحظى Redis بشعبية كبيرة في الصناعات الرائدة والشركات الكبرى متعددة الجنسيات.
فوائد Redis
عندما يتعلق الأمر بالسرعة، لا يوجد منافس لخوادم Redis. وباعتباره NoSQL خادم قاعدة بيانات، فإنه يوفر سرعة فائقة في تخزين البيانات واسترجاعها. بالإضافة إلى ذلك، يتميز Redis بوظائف بارزة تجعل العمل مع البيانات المختلفة، بما في ذلك البيانات المعقدة، أمرًا سلسًا للغاية. إن سهولة استخدام Redis ووظائفه المتطورة لم تجعله متميزًا فحسب، بل سمحت أيضًا باعتماده المتزايد كقاعدة بيانات رئيسية للمستخدمين من الشركات والأفراد.
أدناه، سنقوم بتفصيل الخطوات لمساعدتك في تثبيت Redis على نظام التشغيل Ubuntu 20.04. في هذا البرنامج التعليمي، ستحصل على جميع المعلومات التي تحتاجها بدءًا من التثبيت وحتى تكوين خادم Redis خارجي ليتم استخدامه كمعالج جلسة (session handler) لتطبيق PHP يعمل على Ubuntu 20.04.
البدء
لتطبيق الخطوات، ستحتاج إلى خادمي قاعدة بيانات مختلفين (droplets) يقعان في نفس مركز البيانات مع تمكين الشبكة الخاصة. وتشمل هذه:
-
خادم ويب PHP يعمل بنظام LAMP و LEMP على Ubuntu 20.04 – سنشير إلى هذا الخادم باسم web.
-
خادم Ubuntu 20.04 ثانٍ ونظيف حيث سيتم تثبيت Redis – سنشير إلى هذا الخادم باسم redis.
الخطوة 1 — تثبيت خادم Redis
خطوتنا الأولى هي تثبيت خادم Redis على Ubuntu 20.04. بمجرد الانتهاء، تأكد من أن الخادم يعمل بشكل صحيح على redis Droplet الخاص بنا.
في هذا البرنامج التعليمي، سنستخدم أرشيفات الحزم الشخصية (PPAs). نوصي بشدة باستخدام PPAs لأسباب أمنية. مقارنة بالمستودعات الخارجية الأخرى، فإن PPAs مستقرة وسهلة التثبيت، وقبل كل شيء، تم تصميم المستودع لمستخدمي Ubuntu. يتيح لك PPA الحصول على أحدث إصدار متاح من البرامج، حتى بالنسبة للبرامج التي لا تجدها في مستودعات Ubuntu الرسمية.
إن استخدام PPAs من مصدر غير مصرح به أمر غير مقبول تمامًا. تأكد من الحصول على PPAs من مصادر موثوقة ومعتمدة فقط. يمكنك إضافة مستودع PPA باستخدام الأمر:
|
1 |
sudo add-apt-repository ppa:chris-lea/redis-server |
اضغط على مفتاح Enter للتأكيد. بعد التأكيد، سنقوم بتحديث ذاكرة التخزين المؤقت لمدير الحزم باستخدام الأمر التالي:
|
1 |
sudo apt-get update |
بعد ذلك، سنقوم بتثبيت Redis باستخدام الأمر:
|
1 |
sudo apt-get install redis-server |
بمجرد تنفيذ الأمر، سيتم تثبيت Redis على خادمك. دعنا نختبر التثبيت باستخدام الأمر:
|
1 |
redis-cli ping |
بمجرد إدخال الأمر، سترى مثيل Redis يعمل على localhost على المنفذ 6379. وأيضًا، سيكون هناك استجابة باسم PONG. إذا رأيت هذا، فهذا يعني أنك أكملت الخطوة الأولى بنجاح. للحصول على دليل مفصل حول تثبيت وتأمين Redis، يمكنك إلقاء نظرة على برنامجنا التعليمي كيفية تثبيت وتأمين Redis على Ubuntu 18.04.
بعد ذلك، دعنا ننتقل إلى الخطوة التالية - تكوين Redis.
الخطوة 2 — تكوين Redis لقبول الاتصالات الخارجية
الهدف الرئيسي من تكوين Redis هو قبول الاتصالات القادمة من الخارج. لماذا؟ لأن Redis – افتراضيًا، يسمح بالاتصالات فقط بـ localhost، وهناك قيود على الاتصال من أي مكان آخر. بعبارات أبسط، سيكون لديك حق الوصول من داخل الخادم الذي قمت بتثبيت Redis عليه.
أولاً، احصل على نظرة مفصلة على واجهات الشبكة الخاصة بك باستخدام الأمر ifconfig :
|
1 |
sudo ifconfig |
ستحصل على المخرجات أدناه:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
eth0 Link encap:Ethernet HWaddr 04:01:63:7e:a4:01 inet addr:188.166.77.33 Bcast:188.166.127.255 Mask:255.255.192.0 inet6 addr: fe80::601:63ff:fe7e:a401/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3497 errors:0 dropped:0 overruns:0 frame:0 TX packets:3554 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:4895060 (4.8 MB) TX bytes:619070 (619.0 KB) eth1 Link encap:Ethernet HWaddr 04:01:63:7e:a4:02 inet addr:10.133.14.9 Bcast:10.133.255.255 Mask:255.255.0.0 inet6 addr: fe80::601:63ff:fe7e:a402/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:8 errors:0 dropped:0 overruns:0 frame:0 TX packets:7 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:648 (648.0 B) TX bytes:578 (578.0 B) |
في واجهة eth1، ستجد inet_addr. هنا لدينا 10.133.14.9. سنستخدم عنوان IP هذا في الخطوات القادمة لتوصيل خادم redis من خادم web.
الخطوة 3 — ربط المضيف المحلي (Localhost)
أنت حر في استخدام محرر الأكواد الذي تختاره (Atom و Visual Studio Code هما الأكثر شعبية).
الآن، افتح الملف /etc/redis/redis.conf وابحث عن السطر الذي يحتوي على تعريف bind. يجب عليك إضافة عنوان IP الخاص بشبكتك الخاصة إلى السطر:
|
1 |
sudo vim /etc/redis/redis.conf |
|
1 |
bind localhost 10.133.14 |
قد ترى localhost، بدلاً من 127.0.0.1. لا تقلق، ما عليك سوى إضافة عنوان IP الخاص بك. بعد ذلك، أعد تشغيل خدمة Redis لتطبيق التغييرات. استخدم الأمر أدناه لإعادة تشغيل خادم redis :
|
1 |
sudo service redis-server restart |
بالنسبة للمستخدمين الذين قاموا بتثبيت Redis باستخدام تطبيق النقرة الواحدة، ستتبع الأمر المذكور أدناه لإعادة تشغيل الخادم الخاص بك:
|
1 |
sudo service redis restart |
بمجرد إعادة تشغيل خادم redis، فإن أي خادم موجود في نفس الشبكة الخاصة سيتصل تلقائيًا بمثيل Redis هذا، دون الحاجة إلى القيام بذلك بشكل فردي.
الخطوة 4 — إعداد كلمة مرور خادم Redis
يمكنك تخطي هذه الخطوة إذا كنت تستخدم تثبيت Redis لأغراض التدريب أو الممارسة. ومع ذلك، يوصى بشدة بإعداد كلمة المرور لخادم redis إذا كنت ترغب في إضافة طبقة أمان إضافية إلى تثبيت Redis الخاص بك. دعنا نعدل نفس ملف التكوين كما فعلنا في الخطوة السابقة. استخدم الأمر للتعديل:
|
1 |
sudo vim /etc/redis/redis.conf |
قم بإلغاء تعليق السطر الذي يحتوي على requirepass، وقم بتعيين كلمة مرور قوية:
|
1 |
requirepass StrongPassword |
أعد تشغيل خدمة Redis لتطبيق التغييرات التي أجريتها. استخدم الأمر لإعادة التشغيل:
|
1 |
sudo service redis-server restart |
الخطوة 5 — اختبار اتصال Redis والمصادقة
في هذه الخطوة، سنتصل بخدمة Redis من داخل جهاز redis للتأكد من أن جميع التغييرات التي تم إجراؤها تعمل بسلاسة كما هو متوقع. للاتصال، استخدم الأمر أدناه:
|
1 |
redis-cli -h 10.133.14.9 |
هنا، حتى لو تخطيت ذكر اسم المضيف، فسيظل يعمل. هدفنا الأساسي هو التأكد من أن خدمة Redis تقبل الاتصالات بسلاسة:
|
1 |
10.133.14.9:6379> |
من الممكن أن تظهر لك رسالة خطأ AUTH عند محاولة الوصول إلى البيانات باستخدام كلمة المرور المحددة:
|
1 |
10.133.14.9:6379> keys * |
سيبدو المخرج الخاص بك مشابهًا لهذا:
|
1 2 |
المخرجات: (خطأ) NOAUTH المصادقة مطلوبة. |
للمصادقة، قم بتشغيل الأمر AUTH مع نفس كلمة المرور التي حددتها في ملف /etc/redis/redis.conf:
|
1 |
10.133.14.9:6379> AUTH StrongPassword |
بعد ذلك، قم بتشغيل الأمر مرة أخرى:
|
1 |
10.133.14.9:6379> keys * |
هذه المرة، ستحصل على استجابة OK بدلاً من الخطأ. ستحصل على المخرجات كما يلي:
|
1 2 |
المخرجات: (قائمة أو مجموعة فارغة) |
المخرجات قائمة أو مجموعة فارغة تعني أن خادم Redis فارغ. وذلك لأننا لم نقم بعد بتهيئة خادم الويب كمعالج للجلسات.
ملاحظة: قبل أن نمضي قدمًا، تأكد من فتح جلسة SSH واتصالها بـ redis-cli. في الخطوات القادمة، سنعود إلى موجه redis-cli للتحقق مما إذا كانت بيانات الجلسة قد تم تخزينها بشكل صحيح بعد إجراء التغييرات اللازمة على خادم الويب .
الخطوة 6 — تثبيت امتداد Redis على خادم الويب
يجب تنفيذ الخطوات التالية على خادم الويب . نحتاج إلى تثبيت امتداد PHP Redis لكي يتمكن PHP من الاتصال بخادم Redis.
أولاً، قم بتحديث ذاكرة التخزين المؤقت لمدير الحزم عن طريق تشغيل الأمر:
|
1 |
sudo apt-get update |
بعد ذلك، قم بتثبيت حزمة php5-redis:
|
1 |
sudo apt-get install php5-redis |
أنت الآن جاهز تمامًا للاتصال بـ Redis.
الخطوة 7 — إعداد Redis كمعالج الجلسة الافتراضي على خادم الويب
يحتوي PHP على معالج جلسة افتراضي. في هذه الخطوة، سنقوم بتحرير ملف php.ini على خادم الويب لتغيير الإعدادات الافتراضية. يعتمد موقع ملف php.ini على الحزمة الحالية:
-
بالنسبة لحزمة LAMP على Ubuntu 20.04، استخدم: /etc/php5/apache2/php.ini.
-
بالنسبة لحزمة LEMP على Ubuntu 20.04، عادةً ما يكون المسار هو /etc/php5/fpm/php.ini.
إذا لم تكن متأكدًا من موقع ملف php.ini الرئيسي، فاستعن بالدالة phpinfo(). ضع الكود التالي في ملف باسم info.php داخل دليل جذر الويب الخاص بك:
|
1 2 |
<?php phpinfo(); |
عندما تحاول الوصول إلى السكربت من متصفحك، ابحث عن الصف الذي يحتوي على "Loaded Configuration File". ستجد الموقع الدقيق لملف php.ini الرئيسي الذي تم تحميله. تأكد من إزالة ملف info.php لأنه يحتوي على جميع المحتويات الحساسة لبيئتك.
بعد ذلك، افتح ملف php.ini وابحث عن السطر الذي يحتوي على session.save_handler. ستكون القيمة الافتراضية هي files، تأكد من تغييرها إلى redis.
في بيئات LAMP:
|
1 |
$ sudo vim /etc/php5/apache2/php.ini |
في بيئات LEMP:
|
1 |
$ sudo vim /etc/php5/fpm/php.ini |
|
1 |
session.save_handler = redis |
بعد ذلك، قم بإلغاء تعليق session.save_path وقم بتعديل القيمة لتشمل سلسلة اتصال Redis. يجب أن يتبع المحتوى التنسيق أدناه:
|
1 |
tcp://IPADDRESS:PORT?auth=REDISPASSWORD |
|
1 |
session.save_path = "tcp://10.133.14.9:6379?auth=yourverycomplexpasswordhere" |
استخدم كلمة المرور التي قمنا بإعدادها في الخطوة 4. في حال لم تكن تستخدم كلمة المرور المحددة، فقم بتقديم المعلمة auth عند تهيئة Redis. الآن، احفظ الملف وأعد تشغيل php الخدمة على كلا البيئتين.
على LAMP بيئات:
|
1 |
sudo service apache2 restart |
على LEMP بيئات:
|
1 |
sudo service php5-fpm restart |
الخطوة 8 — اختبار معالجة جلسات Redis
في الخطوة الأخيرة، نحتاج إلى برنامج نصي أو تطبيق PHP للتأكد من أن جلساتك تتم معالجتها الآن بواسطة Redis. سنستخدم برنامجًا نصيًا بسيطًا ينفذ عدادًا – في كل مرة تقوم فيها بإعادة تحميل الصفحة، يزداد الرقم المطبوع.
أنشئ ملفًا باسم demo.php على خادم web واحتفظ به داخل مجلد جذر المستندات الخاص بك:
|
1 |
sudo sudo vim /usr/share/nginx/html/test.php |
ثم، قم بتغيير /usr/share/nginx/html ليعكس مسار جذر المستندات الخاص بك:
|
1 2 3 4 5 6 7 |
<?php //عداد بسيط لاختبار الجلسات. يجب أن يزداد مع كل إعادة تحميل للصفحة. session_start(); $count = isset($_SESSION['count']) ? $_SESSION['count'] : 1; echo $count; $_SESSION['count'] = ++$count; |
بعد ذلك، عليك توجيه متصفحك إلى http://web/demo.php للوصول إلى البرنامج النصي. سيقوم البرنامج بزيادة الرقم في كل مرة تقوم فيها بإعادة تحميل الصفحة.
الآن سيكون لديك معلومات الجلسة مخزنة على خادم Redis. للتحقق، عليك العودة إلى جلسة SSH الخاصة بك على جهاز redis باستخدام redis-cli. احصل على المحتوى مرة أخرى باستخدام keys *:
|
1 |
10.133.14.9:6379> keys * |
سترى المخرجات أدناه:
|
1 2 |
المخرجات: 1) "PHPREDIS_SESSION:j9rsgtde6st2rqb6lu5u6f4h83" |
تؤكد المخرجات أن جميع المعلومات مخزنة بشكل آمن على خادم redis . إذا كنت ترغب في توصيل خوادم web إضافية، يمكنك اتباع نفس الطريقة.
الخاتمة
Redis هي قاعدة بيانات NoSQL تتيح تخزين العديد من البيانات غير المنظمة. عدد قليل جدًا من قواعد البيانات يمكن مقارنتها بوظائف وبساطة خادم redis . شعبيتها المتزايدة تجعلها باستمرار أمرًا لا بد منه مع وجود بدائل قليلة مقارنة بميزاتها الواسعة.
لمزيد من تعميق معرفتك بتطبيقات PHP وكيفية استخدامها، يمكنك إلقاء نظرة على البرامج التعليمية التالية من مدونتنا:
- نشر تطبيق PHP على عنقود Kubernetes باستخدام Ubuntu 18.04
- تثبيت phpBB على Ubuntu 20.04
- تثبيت وتأمين phpMyAdmin على Ubuntu 18.04
حوسبة سعيدة!
التعليقات
لا توجد تعليقات بعد. كن أول من يعلق.