Trang chủ / Code / Cài đặt Redis Cache để tăng tốc cho WordPress
cài đặt redis cho wordpress

Cài đặt Redis Cache để tăng tốc cho WordPress

Chào các bạn!

Nói về vấn đề tăng tốc WordPress thì có rất nhiều cách và mình cũng đã viết bài hướng dẫn tăng tốc WordPress toàn tập từ A-Z, tập hợp tất cả các phương pháp tăng tốc WordPress mà mình học được và rút ra trong quá trình làm việc, giúp bạn không phải mất công tìm kiếm nhiều, các bạn có thể đọc ở đâyNhưng có một phương pháp hơi phức tạp một chút mình không tiện giới thiệu trong đó nên mình viết thành một bài riêng đó là cài đặt Redis để tăng tốc cho WordPress rất hiệu quả.

Redis là một dạng cache in-memory giống như memcached, tức là lưu trên RAM cho tốc độ truy xuất  nhanh hơn  các loại cache lưu trên ổ cứng nhưng Redis hỗ trợ cache tốt hơn memcached rất nhiều, nó hỗ trợ rất nhiều loại cấu trúc như String. hash, list,sets,…, là một sự thay thế hoàn hảo cho Memcached. Hiện tại mình cũng đang dùng Redis Cache cho blog Crazytut.

Trong bài này mình sẽ hướng dẫn các bạn cài đặt Redis trên VPS để làm cache cho WordPress và cấu hình bảo mật cho Redis. Có nhiều cách cài đặt nhưng mình sẽ cài đặt thông qua EPEL(CentOS) và PECL(Debian/Ubuntu) để tiện làm module kết nối với WordPress sau này.

Phần 1: Sử dụng Redis làm Cache

Cài đặt Redis

CentOS

Dễ dàng cài đặt Redis trên CentOS thông qua EPEL, đầu tiên bạn cần cài đặt EPEL đã, EPEL có 2 phiên bản 32bit và 64bit, bạn cần kiểm tra trước khi cài đặt bằng lệnh uname -r để check xem bản CentOS đang dùng là 32bit hay 64bit (i386 là 32bit còn x86_64 là 64 bit)

32 bit:

wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

64 bit:

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

Sau khi đã download về, bạn tiến hành cài đặt và import GPG key bằng lệnh sau (cần tài khoản root):

rpm -Uvh epel-release-6*.rpm

rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6

Bây giờ bắt đầu cài đặt Redis và PhpRedis extension để kết nối PHP với Redis, cấu hình Redis tự chạy khi khởi động và khửi chạy Redis bằng các lệnh sau:

su
yum install redis php-pecl-redis
chkconfig redis on
service redis restart hoặc service redis-server restart

Như vậy là xong phần cài đặt Redis trên CentOS

Debian/Ubuntu

Redis đã đi kèm với gói repository trên Debian/ Ubuntu nên bạn chỉ cần chạy lệnh sau để cài đặt

sudo -i
apt-get install redis-server php5-dev php5-cli php-pear

Tiếp tục bạn cần cài đặt PhpRedis Extension để có thể kết nối PHP với Redis

pecl install redis
echo "extension=redis.so" > /etc/php5/mods-available/redis.ini
php5enmod redis

Xong phần cài đặt Redis trên Ubuntu

Giờ bạn khởi động lại webserver

service httpd restart //Nếu dùng Apache

service nginx restart //Nếu dùng NGINX

Kiểm tra xem Redis đã chạy chưa

redis-cli ping

Nếu bạn nhận được từ PONG có nghĩa là Redis đã cài đặt thành công và đang chạy

Kiếm tra xem PHP đã kết nối với Redis chưa

php -m | grep redis

Nếu bạn nhận được kết quả là redis thì PHP đã kết nối với Redis và bạn có thể bắt đầu sử dụng Redis cho WordPress

Cài đặt Redis Cache cho WordPress

Cách đơn giản nhất để tích hợp Redis với WordPress đó là bạn cài plugin này vào, sau khi cài đặt kích hoạt plugin lên và vào Setting tìm đến Redis xong Enable lên

Cài đặt Redis Cache trên CentOS và Unbuntu
Kích hoạt Redis Cache cho WordPress

Kiểm tả Redis có đang hoạt động không

Bạn ra ngoài truy cập web, click khoảng vài link để Redis lưu cache xong quay lại SSH gõ lệnh sau:

redis-cli monitor

Sau đó bạn lại quay ra web truy cập lại, sau đó quay nhanh lại SSH xem có hiện ra một loại các key của Redis không, như thế này:

cài đặt Redis Cache cho WordPress
Redis Cache đang hoạt động

Một số lệnh thao tác với Redis

Để thao tác với Redis bạn cần chạy Redis CLI lê bằng lệnh redis-cli sau đó gõ các lệnh sau:

FLUSHDB //Xoá dữ liệu Redis trong Database
FLUSHALL //Xoá tất cả các dữ liệu Redis lưu trữ
INFO //Xem thông tin Redis như phiên bản, cấu hình cài đặt,...
MONITOR //Giám sát Redis theo thời gian thực

Cấu hình bảo mật cho Redis

Đặt mật khẩu cho Redis

Nếu bạn muốn mỗi khi truy cập Redis-CLi bằng cách gõ lệnh redis-cli mà nó hỏi mật khẩu thì bạn mở file redis.conf tại /etc/redis/redis.conf và tìm đến dòng sau bỏ dấu comment “#” đằng trước và thêm mật khẩu vào như thế này, tuy nhiên không nên đặt vì sẽ có lỗi khi kết nối với WordPress.

requirepass 12345678
Thay đổi câu lệnh thao tác với Redis

Mặc định các câu lệnh FLUSHDB, FLUSHALL là dể xoá dữ liệu của Redis nếu ai đó vô tình xoá mất của bạn thì rất nguy hiểm do đó bạn cần thay đổi các câu lệnh này thành câu lệnh khác bảo mật hơn, cái này tuỳ bạn thích, sao cho dễ nhớ thôi. Cũng tại file  /etc/redis/redis.conf bạn tìm đến đoạn sau và thay đổi như sau

# It is also possible to completely kill a command by renaming it into
# an empty string:
#
rename-command FLUSHDB "XOADB" //Thay FLUSHDB thành XOADB
rename-command FLUSHALL "XOAHET" //Thay FLUSHALL thành XOAHET
rename-command DEBUG "" //Nếu bạn không ghi gì mà để "" như thế này có nghĩa là vô hiệu hoá câu lệnh đó đi

2 việc trên yêu cầu khởi động lại Redis để áp dụng thay đổi:

server redis-server restart

Như vậy là mình đã hướng dẫn các bạn cài đặt Redis trên CentOS và Ubuntu để tăng tốc cho WordPress

Phần 2: Sử dụng Redis làm Session

Ngoài công dụng làm Cache, Redis còn dùng để làm nơi lưu session nữa, một cách tăng tốc cho PHP hiệu quả. Như các bạn đã biết, khi người dùng truy cập vào trang web thì PHP sẽ lưu lại các thông tin về lần truy cập đó, rồi nhiều thông tin khác như để phục vụ cache cho lần truy cập sau nhưng mặc định PHP lưu session trên ổ cứng do đó nếu ta chuyển được lên RAM thì tốc độ sẽ được cải thiện rất nhiều và Redis có thể làm việc đó một cách xuất sắc. Bên trên mình đã hướng dẫn các bạn cài đặt Redis làm Cache rồi, bây giờ sẽ sử dụng làm session cho PHP nữa, một công đôi việc phải không nào? Hãy nhớ là phần 2 này có thể áp dụng cho bất kì website nào dùng PHP nhé chứ không chỉ là WordPress.

Đầu tiên bạn chạy lệnh sudo ipconfig để kiểm tra Private IP của VPS, nó sẽ hiện ra các thông tin sau:

th0      Link encap:Ethernet  HWaddr 04:01:63:7e:a4:01  
              inet addr:188.166.77.33  Bcast:188.166.127.255  Mask:255.255.192.0
              inet6 addr: fe80::601:63ff:fe7e:a401/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:3497 errors:0 dropped:0 overruns:0 frame:0
              TX packets:3554 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:4895060 (4.8 MB)  TX bytes:619070 (619.0 KB)

    eth1      Link encap:Ethernet  HWaddr 04:01:63:7e:a4:02  
              inet addr:<span class="highlight">10.133.14.9</span>  Bcast:10.133.255.255  Mask:255.255.0.0
              inet6 addr: fe80::601:63ff:fe7e:a402/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:8 errors:0 dropped:0 overruns:0 frame:0
              TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:648 (648.0 B)  TX bytes:578 (578.0 B)

Bạn để ý ở phần eth1, dòng thứ 2 có chữ inet addr:10.133.14.9, đây chính là Private IP của VPS, copy nó, sở dĩ phải làm việc này là để cho Redis chấp nhận các kết ngoài bên ngoài localhost. Giờ bạn mở file /etc/redis/redis.conf ra và tìm đến dòng bind localhost và sửa lại như sau:

bind localhost 10.133.14.9

Thêm cái Private IP lúc này vào sau, nếu bạn tìm thấy dòng bind 127.0.0.1 mà không phải là bind localhost thì cũng chính là nó, chẳng qua cách viết khác nhau thôi, cứ thêm Private IP vào đằng sau.

Sau đó khởi động lại Redis:

service redis-server restart hoặc service redis restart

Bây giờ hãy gõ lệnh redis-cli -h 10.133.14.9, thay các số đằng sau bằng cái Private IP lúc trên, nếu không có lỗi gì là OK, ra như thế này: 

10.133.14.9:6379>

Bây giờ bạn hãy mở file php.ini ra, tuỳ OS mà nó ở mỗi nơi khác nhau, bạn gõ lệnh sau để biết chính xác nó nằm ở đâu:

php -i |grep 'Configuration File'

Sau đó mởi file php.ini lên và tìm đến dòng session.save_handler. Mặc định giá trị của nó là files, ban hãy sửa lại thành redis

session.save_handler = redis

Tiếp tục tìm đến dòng session.save_path và thay lại như thế này, sửa lại Private IP của bạn

 session.save_path = "10.133.14.9:6379"

Lưu lại và khởi động lại PHP. Như vậy là bạn cũng đã cài đặt thành công Redis làm session cho PHP rồi.

Chúc các bạn thành công, có gì khó khăn comment bên dưới cho mình biết nhé

Nếu bạn thấy có ích, hãy subcribe blog của tôi để nhận thêm nhiều tút hay qua email nữa nhé!