Keyvan Eslamian
Keyvan Eslamian
خواندن ۴ دقیقه·۴ سال پیش

کامپایل Redis بروی CentOS 7

سلام، در این آموزش سعی دارم کامپایل Redis نسخه 5.0.0 را بروی یک سرور CentOS 7 که دسترسی به اینترنت ندارد را در اختیارتون بزارم.
امیدوارم به عنوان اولین مطلب در وب سایت خوبه ویرگول برای علاقمندان در حوزه DevOps و Development مفید باشه :)

برخی اوقات شاهد این هستیم که دسترسی اینترنت بخاطر یکسری مسائل از سرور گرفته می شود و از شانس خوب ما پکیج مورد نیازمون روی local repository وجود ندارد و از این رو یکی از راه های باقیمونده نصب پکیج مورد نظرمون به صورت دستی هست که در این مقاله به کامپایل Redis به صورت step by step اشاره میکنم.



مرحله 1) نصب ابزارهای کامپایل در centos توسط کامند زیر:

yum install gcc make wget tcl

اگر پکیج های بالا بروی سرور شما نصب بود می تونید مرحله 1 را نادیده بگیرید.


مرحله 2) وارد مسیر زیر می شویم:

cd /usr/local/src

سورس فایل Redis را به مسیر بالا انتقال می دهیم و آن را از حالت فشرده با کامند زیر خارج می کنیم:

tar xf redis-5.0.0.tar.gz

سپس وارد دایرکتوری که از حالت فشرده جارج شده می رویم و دستورات زیر را اجرا می کنیم:

cd redis-5.0.0
make
make test
make install

مرحله 3) ساخت کاربر و گروه redis:

groupadd redis
adduser --system -g redis --no-create-home redis

پس از ساختن کاربر و گروه، دایرکتوری redis را در مسیر زیر ایجاد می کنیم:

mkdir -p /var/lib/redis

مالکیت دایرکتوری ساخته شده را توسط کامند زیر به redis تخصیص می دهیم:

chown redis: /var/lib/redis

سپس سطح دسترسی آن را توسط کامند زیر به 770 تغییر می دهیم:

chmod 770 /var/lib/redis

مرحله 4) ساخت کانفیگ Redis:

مراحل نصب به اتمام رسیده و در این مرحله دایرکتوری و فایل کانفیگ Redis را توسط دستورات زیر ایجاد می کنیم:

mkdir /etc/redis

انتقال فایل کانفیگ به مسیر اصلی:

cp /usr/local/src/redis-5.0.0/redis.conf /etc/redis/

در نهایت فایل کانفیگ را با ویرایشگر دلخواه(vi , vim , nano) باز می کنیم:

vi /etc/redis/redis.conf

در فایل باز شده supervised را سرچ می کنیم و عبارت “systemd” جایزگین عبارت no می کنیم:

# If you run Redis from upstart or systemd, Redis can interact with your
# supervision tree. Options:
# supervised no - no supervision interaction
# supervised upstart - signal upstart by putting Redis into SIGSTOP mode
# supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
# supervised auto - detect upstart or systemd method based on
# UPSTART_JOB or NOTIFY_SOCKET environment variables
# Note: these supervision methods only signal "process is ready."
# They do not enable continuous liveness pings back to your supervisor.

supervised systemd

و سپس عبارت dir را در فایل سرچ می کنیم و مسیر /var/lib/redis را مقابل آن اضافه می کنیم:

# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
#
# The Append Only File will also be created inside this directory.
#
# Note that you must specify a directory here, not a file name.
dir /var/lib/redis

فایل را دخیره می کنیم و این مرحله را با موفقیت پشت سر می گذاریم.

مرحله 5) ساخت فایل systemd سرویس Redis:
فایل redis.service در مسیر زیر با ویرایشگر متن دلخواه باز می کنیم:

vi /etc/systemd/system/redis.service

سپس محتوای زیر را در فایل مذکور اضافه می کنیم:

[Unit]
Description=Redis Data Store
After=network.target

[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always

[Install]
WantedBy=multi-user.target

فایل را ذخیره و از آن خارج می شویم، سپس آن را Enable و start میکنیم:

systemctl enable redis
systemctl start redis

پس از start سرویس، برای اطلاع از وضعیت اجرا status آن را بررسی می کنیم:

systemctl status redis

خروجی دستور بالا بدون داشتن error باید مشابه متن زیر باشد:

● redis.service - Redis Data Store
Loaded: loaded (/etc/systemd/system/redis.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2018-11-12 04:39:32 CST; 5s ago
Main PID: 9788 (redis-server)
CGroup: /system.slice/redis.service
└─9788 /usr/local/bin/redis-server 127.0.0.1:6379

تبریک! Redis شما به درستی کامپایل و اجرا شده است، جهت بررسی عملکرد Redis دستور زیر را وارد می کنیم:

redis-cli ping

درصورت صحیح بودن عملکرد با خروجی زیر مواجه می شویم:

PONG
rediscentosنصب redislinuxآموزش redis
کیوان اسلامیان هستم متخصص DevOps چهار ساله توی این زمینه فعالیت دارم، اینجا هستم که‌ تجربیاتم رو در اخیتار دیگران قرار بدهم و از‌ تجربیات دیگران بهره ببرم✌
شاید از این پست‌ها خوشتان بیاید