Blog chia sẻ kiến thức

Blog chia sẻ kiến thức

10/8/20

Hướng dẫn cài redis trên centos 7 theo 3 cách khác nhau

Redis là một ứng dụng tuyệt vời khi được sử dụng làm cache. Nếu bạn chưa biết redis là gì thì có thể đọc bài viết này.

Hướng dẫn chi tiết cài redis trên centos 7


Để cài đặt redis trên centos 7 có nhiều cách: Cài từ Packet manager của Centos qua yum, Cài từ Mã nguồn redis, Cài redis qua docker image. Mỗi cách đều có ưu và nhược điểm riêng.

Cài redis trên centos 7 thông qua yum


Đây là cách đơn giản và nhanh nhất so với các cách khác. Trên centos, Redis được phân phối trên khá nhiều Repository. Ta sẽ cài redis qua Epel Repository.

Bước 1: Update server & Cài Epel repository


  • Update server:

yum update

  • Cài epel-release:

yum install epel-release

Bấm Y và enter để cài!

[caption id="attachment_2707" align="aligncenter" width="644"]cài epel repository trên centos 7 Ảnh: cài epel repository trên centos 7 bằng lệnh yum[/caption]

Bước 2: Cài redis bằng yum


Trước khi cài, có thể kiểm tra thông tin gói redis:
yum info redis

[caption id="attachment_2708" align="aligncenter" width="644"]Kiểm tra gói cài redis trên centos 7 bằng yum info Ảnh: Lệnh yum info redis kiểm tra thông tin gói cài đặt trên centos 7 trước khi cài vào server[/caption]

Sau khi kiểm tra thông tin ta thấy gói cài đặt mặc định sẽ cài Redis version 3.2.12 từ Reposiotry Epel/X86_64 (do mình đang dùng centos 7 bản 64bit) và một số thông tin cơ bản về redis bằng tiếng Anh. Bạn có thể đọc hiểu kỹ hơn trong bài cơ bản về redis mà mình đã viết. Tiếp theo ta sẽ cài redis vào server centos 7 đang dùng bằng lệnh sau:
yum install redis -y

Bằng cách thêm -y vào trong lệnh yum, ta không cần xác nhận cài đặt nữa.

yum install redis centos 7

yum install redis on centos 7 command

Vậy là ta đã cài xong redis trên centos 7 bằng lệnh yum. Để chạy redis ta dùng lệnh sau:
systemctl start redis

Kiểm tra trạng thái của redis:
systemctl status redis

Cho phép redis chạy khi khởi động server:
systemctl enable redis

start redis on centos 7Vậy là redis đã hoạt động và lắng nghe trên port mặc định 6379. Ta kiểm tra xem có kết nối được redis trên port 6379 không bằng cách dùng redis-cli
redis-cli -h 127.0.0.1

Sau khi kết nối, kiểm tra thông tin redis server bằng command:info
127.0.0.1:6379> info
# Server
redis_version:3.2.12
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:7897e7d0e13773f
redis_mode:standalone
os:Linux 3.10.0-1062.18.1.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.8.5
process_id:63565
run_id:5e5b4c608f2b3ca18bec493affc2aa72179130ff
tcp_port:6379
uptime_in_seconds:250
uptime_in_days:0
hz:10
lru_clock:2394419
executable:/usr/bin/redis-server
config_file:/etc/redis.conf

# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

# Memory
used_memory:813448
used_memory_human:794.38K
used_memory_rss:5926912
used_memory_rss_human:5.65M
used_memory_peak:813448
used_memory_peak_human:794.38K
total_system_memory:3954020352
total_system_memory_human:3.68G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:7.29
mem_allocator:jemalloc-3.6.0

# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1596229689
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:-1
rdb_current_bgsave_time_sec:-1
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok

# Stats
total_connections_received:1
total_commands_processed:1
instantaneous_ops_per_sec:0
total_net_input_bytes:31
total_net_output_bytes:9928
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.00
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0
migrate_cached_sockets:0

# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

# CPU
used_cpu_sys:0.21
used_cpu_user:0.10
used_cpu_sys_children:0.00
used_cpu_user_children:0.00

# Cluster
cluster_enabled:0

# Keyspace

Yeah, vậy là redis đã được cài đặt thành công và hoạt động như muốn.

Trên đây mình sử dụng lệnh cơ bản nhất của redis là info để xem thông tin redis server. Bạn có thể tham khảo toàn bộ các lệnh của redis trên redis-cli tại đây.

Cách cài redis trên centos 7 bằng mã nguồn trực tiếp


Đây là cách cài redis trực tiếp từ mã nguồn. Trên trang chủ redis.io hướng dẫn sử dụng cách này. Cách này phức tạp hơn so với cách cài qua yum một chút vì đôi khi phải cài thêm một số gói build tools. Tuy nhiên cách này lại có thể áp dụng trên mọi hệ điều hành linux, thậm chí có thể build trên windows!

Các bước thực hiện như sau:

Bước 1: Tải gói cài đặt redis về server:


Tất cả các vesion redis bạn có thể tải tại đây: http://download.redis.io/releases/?C=S;O=A

Để đồng nhất với phiên bản trong phần cách cài qua yum nên mình tiếp tục dùng bản 3.2.12
cd /opt
mkidr redis
cd redis
wget http://download.redis.io/releases/redis-3.2.12.tar.gz
tar -xzf redis-3.2.12.tar.gz
cd redis-3.2.12.gz
ls

file redis 3.2.12 source code

Bước 2: Tiến hành build redis bằng lệnh make:


  • Cài đặt gcc, make, tcl nếu chưa cài:

yum install make gcc tcl

  • Build các thành phần của redis trước:

cd deps
make hiredis lua jemalloc linenoise

  • Build Redis:

cd ..
make

  • Test bản build xem ok chưa:

make test

build-redis-make-test-success
  • Cài đặt bản redis vừa build vào server:

make install

Note: Khi chạy make mà lỗi thì kiểm tra lại bước cài build tools. Đồng thơi build trước các thư viện cho redis trong folder deps. Làm theo đúng trình tự thì sẽ ok.
  • Cài init script:

cd utils
./install-server.sh

install init script for redis on centos 7

Script đã start luôn server. Bây giờ kiểm tra trạng thái redis đang chạy:
systemctl stop redis_6379
systemctl start redis_6379
systemctl status redis_6379



 

Note: Mình sử dụng các thông số mặc định khi chạy script cài redis nên tên service và đường dẫn có khác so với cài qua yum. Nếu bạn muốn sử dụng giống như cài qua yum thì khi chạy scrip install-server.sh bạn sửa các thông số theo giống như redis cài qua yum. Từng bước đều có dấu nhắc để bạn sửa các giá trị mặc định nên mình không mô tả chi tiết nữa.

Bây giờ bạn đã hoàn tất quá trình cài redis trên centos 7 qua source code. Các bước kiểm tra kết nối và thông tin server hoàn toàn như bước cài redis bằng lệnh yum.

Cách cài redis trên centos 7 bằng docker.


Hiện nay docker được sử dụng rất nhiều để cài các ứng dụng trên linux cũng như windows. Để tìm hiểu sâu hơn về docker, bạn có thể tham khảo bài viết docker là gì? trong chuyên mục learing center trên blog này. Trong nội dung này mình chỉ giới thiệu lệnh cài để các bạn làm theo từng bước có thể chạy được. Bắt đầu nhé

Bước 1: Cài docker trên centos 7


Cài docker trên centos 7 có vài cách, nhanh nhất là dùng lệnh này: curl -fsSL https://get.docker.com/ | sh  Nếu bạn muốn xem chi tiết các bước cài (qua yum) thì có thể xem bài viết khác cùng chuyên mục nhé.
  • Cài docker trên centos:

curl -fsSL https://get.docker.com/ | sh

Quá trình cài đặt docker thành công:

cài docker trên centos 7 để cài redis th ành công
  • Chạy docker & Cho docker chạy khi khởi động:

systemctl start docker
systemctl enable docker

  • Kiểm tra docker bằng lệnh docker info: (Output khá dài nên mình không post)

docker info

  • Test docker chạy ok chưa: docker run hello-world

docker run hello-world

  • Tải redis image tren docker hub và chạy: (vesion 3.2.12)

docker run --name redis-3.2.12 -p 6379:6379 redis:3.2.12

[caption id="attachment_2720" align="aligncenter" width="618"]Trạng thái redis 3.2.12 khi chạy qua docker Ảnh: Kiểm tra redis container chạy trên centos 7 (bấm vào ảnh để phóng to)[/caption]

Note: Cách này có thể chạy nhiểu phiên bản redis trên cùng 1 server một cách đơn giản. Chú ý port cho từng phiên bản chạy phải khác nhau :). Toàn bộ phiên bản redis docker có thể xem tại : https://hub.docker.com/_/redis/

Đến dây bạn tiếp tục kiểm tra kết nối tới redis bằng redis-clie như trên phần đầu tiên nhé! => click vào đây để nhảy tới mục đó.

Vậy là bạn đã nắm được cách cài redis trên centos 7 rồi nhé. Tuy nhiên tới đây bạn mới chỉ chạy được redis trên localhost thôi (mặc định của redis). Nếu muốn kết nối tới server redis này từ một máy khác bạn phải sửa lại cấu hình redis để redis lắng nghe trên IP public(Nếu dùng VPS) hoặc dải IP mạng nội bộ của server. Tham khảo bước cuối cùng này nhé: Cấu hình để redis kết nối tới redis server từ server khác.

Cách Cấu hình để redis kết nối tới redis server từ server khác.


Bước 1: Sửa file cấu hình redis.


Tùy theo cách cài đặt redis mà vị trí file cấu hình cũng khác nhau. Nếu bạn theo cách đầu tiên thì hãy làm theo cách sau:
  • Mở và sửa file /etc/redis.conf

vi /etc/redis.conf

Tìm dòng bind 127.0.0.1 và sửa lại thành địa chỉ IP của server
bind 127.0.0.1 192.168.30.134

Nếu server có nhiều IP thì bạn liệt kê những IP nào muốn cho redis chay. Hoặc nếu bind tất cả thì chọn:
bind 0.0.0.0

Note: cách này khá nguy hiểm nếu bạn cấu hình firewall không tốt thì ai cũng có thể truy cập vào redis server của bạn và phá hoại.

Sau khi khi save file cấu hình lại thì bạn khởi động lại redis server bằng lệnh:
systemctl restart redis

  • Kiểm tra lại redis đang listen trên IP nào:

 netstat -tpln | grep redis

Kết quả thế này :

netstat view redis status

Bước 2: Mở firewall để cho kết nối tới redis server từ server khác


Hầu như server linux nào cũng cài đặt sẵn một firewall nhằm bảo mật server. Trên centos 7 sử dụng firewalld service. Muốn cho kết nối tới redis server từ server khác ta phải mở port redis đang sử dụng. Mặc đinh redis chạy trên port 6379.

Lệnh sau sẽ mở port 6379 trên tất cả các card mạng và IP:
firewall-cmd --permanent --add-port=6379/tcp
firewall-cmd --reload

Note: Cách này không nên dùng trên VPS vì mở port trên IP public cho redis khá nguy hiểm, dễ bị ăn cắp thông tin vì ai có được IP của VPS đều có thể kết nối tới redis server. Ta chỉ nên mở firewall cho 1 card hoặc 1 dải IP nhất định được tin tưởng.

Muốn như vậy ta dùng rich-rules:
firewall-cmd --permanent --add-rich-rule='
rule family="ipv4"
source address="192.168.30.0/24"
port protocol="tcp" port="6379" accept'

firwall-cmd --reload

Lệnh trên sẽ mở cho tất cả cá IP trong dải 192.168.30.0/24 truy cập vào server. Bạn có thể sửa lệnh để mở cho dải ip khác hoặc chỉ 1 IP riêng biệt.

Để kiểm tra truy cập từ server khác vào redis bạn có thể dùng redis-cli -h [IP redis server] hoặc đơn giản là dung telnet:
telnet [IP redis server] 6379

TỔNG KẾT


Bài viết tuy khá dài nhưng cần thiết vì các lệnh trên linux thường cần những kiến thức khác nhau để hiểu được. Nếu bạn đọc bài viết tới đây, toiyeuit.com xin chúc mừng bạn đã cài thạo redis trên centos 7, thậm chí linux khác bạn cũng "xử ngon" rồi đó.

Một lần nữa, Blog Quản trị hệ thống cảm ơn bạn đã theo dõi bài viết. Chúc các bạn thành công. Mọi đóng góp xin gửi về support@toiyeuit.com hoặc để lại comment bên dưới bài viết.

Không có nhận xét nào:

Đăng nhận xét