Cách cấu hình Redis Caching để Tăng tốc WordPress trên Ubuntu 14.04
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-redis
cung 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.