Redis، یک فضای ذخیره‌سازی ساختار داده منبع باز، در داخل حافظه است که می‌تواند به‌عنوان یک پایگاه‌داده، حافظه نهان و واسط پیام (message broker) استفاده شود.

 

Redis، از ساختارهای مختلف داده مانند رشته‌ها (Strings)، هش‌ها (Hashes)، لیست‌ها (Lists)، مجموعه‌ها (Sets) و ... پشتیبانی می‌کند. Redis، از طریق Redis Sentinel دسترسی بالایی را ارائه می‌نماید. علاوه‌براین، پارتیشن‌بندی خودکار را در چندین گره Redis با خوشه Redis ایجاد می‌کند.

در این آموزش، نحوه نصب و پیکربندی Redis برروی سرور اوبونتو 18.04 توضیح داده شده است. همین دستورالعمل‌ها برای اوبونتو 16.04 و هر توزیع مستقر دیگر در اوبونتو قابل اعمال است.

قبل از دنبال کردن این آموزش، ابتدا اطمینان حاصل کنید که به‌عنوان یک کاربر با امتیازات sudo وارد سیستم شده‌اید.

 

نصب Redis در اوبونتو

بسته Redis در مخازن پیش فرض اوبونتو 18.04 گنجانده شده است. نصب این ابزار بسیار ساده است و تنها کافی است مراحل زیر را دنبال کنید:

1. با اجرای دستور زیر در ترمینال SSH خود، لیست‌ بسته‌های apt را به روز نمایید:

$ sudo apt update

Redis .2 را با تایپ کردن دستور زیر نصب کنید:

$ sudo apt install redis-server

3. پس از اتمام نصب، سرویس Redis بطور خودکار شروع می‌شود. برای بررسی وضعیت سرویس، دستور زیر را وارد نمایید:

$ sudo systemctl status redis-server

اکنون باید چیزی شبیه به خروجی زیر را ببینید:

Output:
● redis-server.service - Advanced key-value store
   Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2018-10-28 05:10:45 PDT; 2h ago
     Docs: http://redis.io/documentation,
           man:redis-server(1)
  Process: 2197 ExecStop=/bin/kill -s TERM $MAINPID (code=exited, status=0/SUCCESS)
  Process: 2201 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS)
 Main PID: 2226 (redis-server)
    Tasks: 4 (limit: 2319)
   CGroup: /system.slice/redis-server.service
           `-2226 /usr/bin/redis-server 0.0.0.0:6379

دقت کنید که اگر IPv6 در سرور شما غیرفعال باشد، سرویس Redis راه‌اندازی نمی‌شود.

 

پیکربندی دسترسی از راه دور Redis

به‌طور پیش‌فرض، Redis اجازه اتصال از راه دور را نمی‌دهد. شما فقط می‌توانید، در دستگاهی که Redis در آن در حال اجرا است، با استفاده از آدرس 127.0.0.1 به سرور Redis متصل شوید.

مراحل زیر را تنها در صورتی دنبال نمایید که می‌خواهید، از میزبان‌های ریموت به سرور Redis خود متصل شوید. اگر از یک راه‌اندازی سرور واحد استفاده می‌کنید (در جایی که برنامه و Redis در همان دستگاه در حال اجرا هستند)، نباید دسترسی از راه دور را فعال نمایید.

به‌منظور پیکربندی Redis، برای پذیرش اتصالات ریموت، فایل پیکربندی Redis را با ویرایشگر متن خود باز کنید:

$ sudo nano /etc/redis/redis.conf

خطی را که با عبارت “bind 127.0.0.1 ::1” شروع می‌شود، پیدا کرده و 127.0.0.1 را با 0.0.0.0 جایگزین نمایید.

                     /etc/redis/redis.conf

# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES
# JUST COMMENT THE FOLLOWING LINE.
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bind 0.0.0.0 ::1

فایل را ذخیره کرده و ویرایشگر را ببندید.

 

مجدداً سرویس Redis را برای اعمال تغییرات راه‌اندازی کنید:

$ sudo systemctl restart redis-server

برای تأیید اینکه redis در تمام رابط‌ها، برروی پورت 6379 شنود می‌کند، از دستور زیر استفاده نمایید:

$ ss -an | grep 6379

اکنون، باید چیزی مانند خروجی زیر را ببینید. 0.0.0.0 به معنی تمام آدرس‌های IPv4 موجود در دستگاه است.

Output:
tcp  LISTEN 0   128   0.0.0.0:6379   0.0.0.0:*
tcp  LISTEN 0   128      [::]:6379      [::]:*  

 

در مرحله بعد، شما باید یک قانون فایروال اضافه کنید که امکان عبور ترافیک از دستگاه‌های ریموت شما را برروی پورت TCP 6379 امکان‌پذیر می‌نماید.

 

این مطلب نیز ممکن است برای شما مفید باشد: نحوه راه اندازی فایروال UFW در سرور اوبونتو و دبیان

 

با فرض اینکه از UFW برای مدیریت فایروال خود استفاده می‌کنید و می‌خواهید دسترسی از زیر شبکه 192.168.121.0/24 را آزاد نمایید، باید دستور زیر را اجرا کنید:

$ sudo ufw allow proto tcp from 192.168.121.0/24 to any port 6379

در این مرحله، سرور Redis، اتصالات ریموت را برروی پورت TCP 6379 قبول خواهد کرد.

 

اطمینان حاصل کنید که فایروال شما بدین صورت پیکربندی شده است که اتصالات را فقط از محدوده IP معتبر بپذیرد.

برای تأیید صحت تنظیم همه موارد، می‌توانید با استفاده از ابزار redis-cli، سرور Redis را از دستگاه ریموت خود ping نمایید:

$ redis-cli -h <REDIS_IP_ADDRESS> ping

اجرای این دستور باید منجر به پاسخ PONG شود:

Output:
PONG

 

 

منبع:

linuxize