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
yum update
yum install epel-release
Bấm Y và enter để cài!
[caption id="attachment_2707" align="aligncenter" width="644"]
Ả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"]
Ả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.
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
Vậ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
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
cd ..
make
- Test bản build xem ok chưa:
make test
- 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.
cd utils
./install-server.sh
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é.
curl -fsSL https://get.docker.com/ | sh
Quá trình cài đặt docker 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"]
Ả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 :
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.