Cách cấu hình Redis Caching để Tăng tốc WordPress trên Ubuntu 14.04

6 năm trước

Mở đầu

Redis is an open-source key value store that can operate as both an in-memory store and as cache. Redis is a data structure server that can be used as a database server on its own, or paired with a relational database like MySQL to speed things up, as we're doing in this tutorial.

Redis là một kho dữ liệu chứa các key-value mã nguồn mở có thể hoạt động như bộ nhớ trong hoặc bộ nhớ cache. Redis là một server cấu trúc dữ liệu có thể được dùng đơn lẻ như một server chứa dữ liệu bình thường, hoặc kết hợp với một database khác như MySQL để tăng tốc độ xử lí của nó.

Ở đây, Redis sẽ được thiết lập như một bộ nhớ cache cho WordPress để làm giảm bớt các truy vấn database dự phòng và tiết kiệm thời gian thực hiện một trang WordPress. Kết quả là WordPress sẽ chạy nhanh hơn, sử dụng ít tài nguyên hơn, và cung cấp một bộ nhớ cache có thể điều chỉnh liên tục. Các hướng dẫn này áp dụng cho Ubuntu 14.04.

Dưới đây là một ví dụ về quá trình cài đặt một trang chủ mặc định WordPress sử dụng và không sử dụng Redis. Các công cụ phát triển của Chrome được sử dụng để test với browser caching bị vô hiệu hóa:

Trang mặc định của WordPress không cài Redis:

804ms load time.

Với Redis:

449ms load time.

Note: Việc cài đặt Redis caching cho WordPress ở đây phụ thuộc vào một đoạn script hay nhưng đưuọc phát triển bởi một bên thứ ba. Đoạn script này được lưu trên trên một server của ViCloud nhưng không được phát triển bởi ViCloud. Nếu muốn tự mình thực hiện Redis caching cho WordPress mà không phụ thuộc vào đoạn script này, bạn sẽ cần thực hiện thêm vài bước dựa trên những khái niệm được trình bày ở đây.

Redis và Memcached

Memcached cũng là một lựa chọn không tồi cho bộ nhớ cache, tuy nhiên ở đây Redis có thể thực mọi việc Memcached có thể làm với nhiều tính năng hỗ trợ hơn. Trang web này sẽ cho bạn những thông tin cơ bản về Redis.

Quá trình Caching hoạt động như thế nào?

Lần đầu tiên một trang WordPress được tải, một truy vấn cơ sở dữ liệu được thực hiện trên server. Redis lưu lại truy vấn này. Vì vậy, khi một người dùng khác tải trang Wordpress, kết quả được cung cấp từ Redis và từ bộ nhớ mà không cần thực hiện lại truy vấn cơ sở dữ liệu.

Việc cài Redis được dùng trong hướng dẫn này hoạt động như một đối tượng cache ổn định( vô thời hạn) cho WordPress. Một đối tượng cache hoạt động bằng cách lưu các truy vấn SQL cần thiết để tải một trang WordPress.

Khi một trang tải, kết quả kết quả truy vấn SQL được cung cấp từ bộ nhớ cache của Redis, vì vậy không cần truy cập vào database. Kết quả là thời gian tải trang nhanh hơn nhiều, và giảm tải cho server do có ít truy vấn hơn. Nếu truy vấn không có sẵn trong Redis, databae sẽ gửi dữ liệu và Redis thêm dữ liệu đó vào cache của nó.

Nếu một giá trị được cập nhật trong cơ sở dữ liệu (ví dụ, một bài mới hoặc trang được tạo ra trong WordPress),giá trị cũ được lưu trong Redis bị vô hiệu hóa, và Redis phải cập nhật một giá trị mới cho nó.

 

Nếu có lỗi xảy ra trong quá trình caching, bạn có thể xóa dữ liệu trong cache bằng lệnh flushall

Mở giao diện dòng lệnh của  Redis:

redis-cli

Xong đó gõ:

flushall

 

Yêu cầu

 

Đàu tiên bạn cần một sudo user và cài WordPress. Cụ thể là:

  • Cloud Server chạy Ubuntu 14.04 (1 GB trở lên)
  • Với một sudo user
  • Cuối cùng là WordPress. Có nhiều cách để cài WordPress, bạn có thể tham khảo trên ViCloud Community
 

Bước 1 — Cài Redis

Để cài Redis, ta cần cài đặ 2 gói: redis-server và php5-redis. Gói redis-server giúp ta cài Redis, trong khi php5-rediscung cấp phần PHP extension để WordPress có thể hoạt đọng cùng Redis

Cài 2 gói trên với lệnh:

sudo apt-get install redis-server php5-redis
 

Bước 2 — Cấu hình Redis thành một Cache

 

Vì Redis có thể hoạt động như một NoSQL database cũng như một cache, ta cần cấu hình cho Redis để nó hoạt động như một cache.

Mở file cấu hình /etc/redis/redis.conf bằng nano:

sudo nano /etc/redis/redis.conf

Thêm vào những dòng sau ở cuối file:

maxmemory 256mb
maxmemory-policy allkeys-lru

Lưu và thoát.

 

Bước 3 — Cài Redis Cache Backend Script

 

Đoạn script PHP cho WordPress này được phát triển bới Eric Mann. Nó là một Redis object cache backend cho WordPress.

Download đoạn script object-cache.php . Hãy chú ý đọc phần comment bên trong nó để xem cách nó hoạt động.

Tải về PHP script:

wget https://assets.digitalocean.com/articles/wordpress_redis/object-cache.php

Chuyển nó đến thư mục /wp-content trong thư mục cài đặt WordPress. Tùy thuộc vào quá trình cài đặt, thư mục này có thể khác nhau. Ở đây là /var/www/html

sudo mv object-cache.php /var/www/html/wp-content/

 

 

Bước 4 — Kích hoạt Cache Settings trong wp-config.php

Tiếp theo, edit file wp-config.php để thêm vào một cache key salt cho website của bạn 

nano /var/www/html/wp-config.php

Thêm dòng sau vào cuối mục * Authentication Unique Keys and Salts. :

define('WP_CACHE_KEY_SALT', 'example.com');

 

Note: Với những user có nhiều trang WordPress, cách trang đó có thể dùng chung Redis cache miễn là chúng có cache key salt riêng..

Thêm một dòng nữa sau dòng WP_CACHE_KEY_SALT để tạo một cache ổn định bằng Redis object cache plugin:

define('WP_CACHE', true);

Sau khi edit, ta thu được:

 * Authentication Unique Keys and Salts.
. . .
define('NONCE_SALT', 'put your unique phrase here');
define('WP_CACHE_KEY_SALT', 'example.com');
define('WP_CACHE', true);

Lưu và đóng file.

 

Bước 5 — Restart Redis và Apache

Cuối cùng, khởi động lại redis-service và apache2.

Khởi động lại Redis:

sudo service redis-server restart

Khởi động lại Apache

sudo service apache2 restart

Khởi động lại cả php5-fpm nếu dịch vụ này đang chạy

sudo service php5-fpm restart 

Vậy là quá trình cấu hình đã xong. Kiểm tra lại việc load trang web và tài nguyên sử dụng, bạn sẽ thấy sự thay đổi đáng kể.

 

Kiểm tra Redis caching với redis-cli

 

Dùng lệnh:

redis-cli monitor

 

Khi chạy lệnh này, bạn sẽ thấy những real-time output của Redis đang cung cấp những truy vấn trong bộ nhớ cache. Nếu không thấy gì, truy cập vào website của bạn và tải lại trang.

Đay là một ví dụ về những output của một trang WordPress sử dụng Redis cache. Việc này giúp bạn thấy chính xác điều gì đang diễn ra.

OK
1412273195.815838 "monitor"
1412273198.428472 "EXISTS" "example.comwp_:default:is_blog_installed"
1412273198.428650 "GET" "example.comwp_:default:is_blog_installed"
1412273198.432252 "EXISTS" "example.comwp_:options:notoptions"
1412273198.432443 "GET" "example.comwp_:options:notoptions"
1412273198.432626 "EXISTS" "example.comwp_:options:alloptions"
1412273198.432799 "GET" "example.comwp_:options:alloptions"
1412273198.433572 "EXISTS" "example.comwp_site-options:0:notoptions"
1412273198.433729 "EXISTS" "example.comwp_:options:notoptions"
1412273198.433876 "GET" "example.comwp_:options:notoptions"
1412273198.434018 "EXISTS" "example.comwp_:options:alloptions"
1412273198.434161 "GET" "example.comwp_:options:alloptions"
1412273198.434745 "EXISTS" "example.comwp_:options:notoptions"
1412273198.434921 "GET" "example.comwp_:options:notoptions"
1412273198.435058 "EXISTS" "example.comwp_:options:alloptions"
1412273198.435193 "GET" "example.comwp_:options:alloptions"
1412273198.435737 "EXISTS" "example.comwp_:options:notoptions"
1412273198.435885 "GET" "example.comwp_:options:notoptions"
1412273198.436022 "EXISTS" "example.comwp_:options:alloptions"
1412273198.436157 "GET" "example.comwp_:options:alloptions"
1412273198.438298 "EXISTS" "example.comwp_:options:notoptions"
1412273198.438418 "GET" "example.comwp_:options:notoptions"
1412273198.438598 "EXISTS" "example.comwp_:options:alloptions"
1412273198.438700 "GET" "example.comwp_:options:alloptions"
1412273198.439449 "EXISTS" "example.comwp_:options:notoptions"
1412273198.439560 "GET" "example.comwp_:options:notoptions"
1412273198.439746 "EXISTS" "example.comwp_:options:alloptions"
1412273198.439844 "GET" "example.comwp_:options:alloptions"
1412273198.440764 "EXISTS" "example.comwp_:options:notoptions"
1412273198.440868 "GET" "example.comwp_:options:notoptions"
1412273198.441035 "EXISTS" "example.comwp_:options:alloptions"
1412273198.441149 "GET" "example.comwp_:options:alloptions"
1412273198.441813 "EXISTS" "example.comwp_:options:notoptions"
1412273198.441913 "GET" "example.comwp_:options:notoptions"
1412273198.442023 "EXISTS" "example.comwp_:options:alloptions"
1412273198.442121 "GET" "example.comwp_:options:alloptions"
1412273198.442652 "EXISTS" "example.comwp_:options:notoptions"
1412273198.442773 "GET" "example.comwp_:options:notoptions"
1412273198.442874 "EXISTS" "example.comwp_:options:alloptions"
1412273198.442974 "GET" "example.comwp_:options:alloptions"

Bấm tổ hợp phím CTRL-C để thoát.

Tổng kết

Sau hướng dẫn này, WordPress đã được cấu hình để sử dụng Redis như một bộ nhớ cache trên server chạy Ubuntu 14.04.