Cài đặt và cấu hình Redis trên Ubuntu 16.04

2 năm trước

 

Giới thiệu

Redis là một kho quả lí dữ liệu được biết tới với khả năng tùy biến linh hoạt, hiệu suất tốt và hỗ trợ nhiều ngôn ngữ lập trình.

Bài viết này sẽ hướng dẫn các bạn cách cài đặt và cấu hình Redis trên một server chạy Ubuntu 16.04.

Yêu cầu

Trước hêt, bạn phải có quyền truy cập vào server Ubuntu 16.04 của mình thông qua một non-root user với quyền sudo để thực hiện những lệnh yêu cầu quyền root.

Đăng nhập vào server bằng sudo user để tiếp tục các bước sau.

 

Cài những gói hỗ trợ Build và Test 

Để có phiên bản mới nhất của Redis, cần compile( biên dịch) và cài đặt nó từ một nguồn. Trước khi tiến hành download, ta phải cài những gói phụ thuộc hỗ trợ việc build để biên dịch gói tin sẽ tải về.

Cài siêu gói(meta-package) build-essential từ kho của Ubuntu, cùng với gói tcl.(là gói để compile file nhị phân)

Updat local cache của apt rồi cài tcl:

sudo apt-get update sudo apt-get install build-essential tcl 

 

Download, Compile, và Cài Redis

 

Download và Giả nén Mã Nguồn

Vì không cần lưu trữ dài hạn mã nguồn, ta sẽ build trong thư mục /tmp.

Vào /tmp:

cd /tmp 

 

Tải File nén của Redis:

curl -O http://download.redis.io/redis-stable.tar.gz 

 

Giải nén:
tar xzvf redis-stable.tar.gz 

 

Chuyển đến thư mục chứa mã nguồn của Redis mà ta vừa giải nén ra:

cd redis-stable

 

Build và Cài đặt Redis

Thư mục trên chứa file cài đặt Redis ở dạng nhị phân. Ta cần biên dịch lại chúng với lệnh:

make 

 

Kiểm tra lại qua trình biên dịch:

make test 

 

Điều này sẽ tốn vài phút. Sau khi hoàn tất bạn có thể cài Redis với lệnh:

sudo make install 

Cấu hình Redis

Sau khi cài đặt, ta bắt đầu cấu hình cho Redis.

Đầu tiên cần tạo một thư mục chứa những file cấu hình. Thông thường thư mục đó sẽ là /etc/redis
Gõ lệnh:

sudo mkdir /etc/redis 

 

Copy những file cấu hình của Redis trong thư mục giải nén mã nguồn ở trên :

sudo cp /tmp/redis-stable/redis.conf /etc/redis

 

Mở file để tiến hành edit:

sudo nano /etc/redis/redis.conf

 

Tìm đến dòng supervised. Hiện tại thuộc tính này là no. do hệ điền hành ta đang dùng sử dụng hệ khởi tạo (init system) systemd , đặt lại cho nó thành systemd:

/etc/redis/redis.conf
. . .
# 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. . .

Tiếp theo vào thư mục dir. Tùy chọn này chỉ ra địa chỉ Redis dùng để chứa những dữ liệu được lưu lại trong quá trình hoạt động. Cần chọn một thư mục yêu cầu xác nhận bảo mật khi lưu dữ liệu, và không thể truy cập được với những người dùng thường.

Tạo thư mục /var/lib/redis :

/etc/redis/redis.conf
. . .
# 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. . .

Lưu và đóng file.

Tạo Redis systemd Unit File

Tạo ra một systemd unit file để hệ khởi tạo có thể quản lí quá trình xử lí của Redis.

Tạo và mở file /etc/systemd/system/redis.service :

sudo nano /etc/systemd/system/redis.service

 

Điều chỉnh phần[Unit]  bằng cách thêm một mô tả cho nó và điều kiện Internet phải ổn định trước khi sử dụng dịch vụ này:

/etc/systemd/system/redis.service
[Unit]
Description=Redis In-Memory Data Store
After=network.target

Trong phần [Service] , cần làm rõ hành vi của dịch vụ. Vì lí do bảo mật, không nên chạy dịch vụ này với quyền  root mà nên dùng một user hoặc group riêng, ở đây là redis.

Để khởi động dịch vụ, cần gọi đến file nhị phân redis-server (được đề cập ở trên) để trỏ vào quá trình cấu hình. Để dừng dịch vụ, dùng lệnh shutdown của Redis,trong file nhị phân redis-cli .Để Redis tự sửa lỗi khi cần, đặt Restart ở chế độ "always":

/etc/systemd/system/redis.service
[Unit]
Description=Redis In-Memory Data Store
After=network.target[Service]User=redisGroup=redisExecStart=/usr/local/bin/redis-server /etc/redis/redis.confExecStop=/usr/local/bin/redis-cli shutdownRestart=always

Cuối cùng, trong mục [Install] ta có thể đặt systemd target cho dịch vụ để nó trỏ tới khi được kích hoạt( cấu hình cho Redis khởi động cùng hệ thống)

/etc/systemd/system/redis.service
[Unit]
Description=Redis In-Memory 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

Lưu và đóng file.

 

Tạo user, group và thư mục Redis

Giờ ta sẽ tạo ra các user, group và thư mục được tham chiếu đến ở phần trên.

Bắt đầu bằng việc tạo user và group redis 

sudo adduser --system --group --no-create-home redis 

 

Tạo thư mục/var/lib/redis :

sudo mkdir /var/lib/redis

 

Thêm quyền sở hữu của redis cho user and group qua thư mục:

sudo chown redis:redis /var/lib/redis

 

Tùy chỉnh để user thường không thể truy cập vào thư mục này:

sudo chmod 770 /var/lib/redis 

 

 

Khởi động và test Redis

 

Khởi động Redis Service

Khởi động systemd service:

sudo systemctl start redis

 

Kiểm tra trạng thái của Redis để phát hiện lỗi nếu có với lệnh:

sudo systemctl status redis

 

Output sẽ gần giống với:

Output● redis.service - Redis Server
Loaded: loaded (/etc/systemd/system/redis.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2016-05-11 14:38:08 EDT; 1min 43s ago
Process: 3115 ExecStop=/usr/local/bin/redis-cli shutdown (code=exited, status=0/SUCCESS)
Main PID: 3124 (redis-server)
Tasks: 3 (limit: 512)
Memory: 864.0K
CPU: 179ms
CGroup: /system.slice/redis.service
└─3124 /usr/local/bin/redis-server 127.0.0.1:6379 
. . .
 

Kiểm tra tính năng của Redis 

Để xem service của bạn có hoạt động đúng hay không, kết nối với Redis server với lệnh trên client

redis-cli

 

Test kết nối bằng lệnh:

ping 

 

Bạn sẽ thấy:

OutputPONG
 
 

Kiểm tra xem liệu đã có thể set key chưa bằng cách:

set test "It's working!" 

 

 
OutputOK
 

Lấy lại giá trị (của key):

get test 

 

Output:

Output"It's working!"
 
 

Thoát Redis:

exit 

 

Để chắc chắn quá trình cấu hình thành công, khởi động lại Redis:

sudo systemctl restart redis

 

Kết nối với server một lần nữa để kiểm tra lại:

redis-cli

 

get test

 

Nếu giá trị của key vẫn là:

 
Output"It's working!"
 

Thì không có lỗi xảy ra.

Quay lại:

exit 

 

Cho phép Redis Khởi động cùng hệ thống

Sau khi cấu hình thành công, hãy cho Redis tự động khởi dộng khi server boot với lệnh:

 

sudo systemctl enable redis

 

 
 
OutputCreated symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /etc/systemd/system/redis.service

Tổng kết

Đến đây bạn đã cài đặt và cấu hình thành công một phiên bản Redis trên server Ubuntu 16.04 . Truy cập vào đây để tham khảo những bài viết khác.

Cảm ơn đã theo dõi bài viết tại cộng đồng IT ViCloud Community, vui lòng để lại comment bên dưới!