Cài đặt và cấu hình Redis trên Ubuntu 16.04
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.
- Tham khảo Cách thiết lập ban đầu một máy chủ Cloud Server Ubuntu;
- Tham khảo Cách tạo một sudo non-root user trên Ubuntu 16.04.
Đă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
:
. . .
# 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
:
. . .
# 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:
[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":
[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)
[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!