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!
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
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
- Build Redis:
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.
- Cài init script:
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é.
- Cài docker trên centos:
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
Bước 2: 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
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.