Tuesday, 30 November 2021

Server Redis ติดตั้งเพื่อทำ cache ให้ WordPress

Server Redis

Server Redis แนะนำการติดตั้ง Cache สำหรับ WordPress โดยในการแนะนำการติดตั้งทางอินดี้ได้ใช้ web control panel ที่ชื่อว่า HestiaCP และ WordPress เป็นการใช้งาน Cache ให้กับ website ของเรา เพื่อให้เว็บไม่อืด โดยรายละเอียดของการติดตั้ง Redis จะอธิบายให้ในรายละเอียดของบทความนี้ ซึ่งเป็นการติดตั้งง่ายๆแบบไม่ต้องปรับแต่งอะไรมากมาย ใช้ความรู้ด้าน linux นิดหน่อยก็สามารถใช้งาน Redis ได้แล้ว

Server Redis คืออะไร

Redis เป็น in-memory data structure store หรือ  ระบบเก็บข้อมูลแบบกึ่งมีโครงสร้าง ที่ทำงานบน Ram หรือจะมองอีกมุมมันคือ NoSQL ก็ว่าได้ การเก็บข้อมูลของมันคืออธิบายง่ายๆคือ จะเก็บข้อมูลมาไว้บน RAM ทำให้ข้อมูลหน้าเว็บที่ใช้งานบ่อยๆ ก็จะถูกดึงออกมาจาก RAM เลย ทำให้ไม่ต้องไป query ที่ database บ่อยๆ แน่นอนความเร็วในการเข้าถึงก็มีดีอยู่แล้ว และที่สำคัญเป็นการเก็บ cache แบบลบได้ หายได้ ในช่วงเวลาหนึ่งๆ

ด้วยเหตุเบื่องต้นที่ว่า มันเก็บของอยู่ใน RAM จึงทำให้มันได้เปรียบเรื่องความเร็ว ทั้ง Read, Write, Update หรือ Delete โดยส่วนมากจะนิยมใช้ Redis ในการเก็บข้อมูล ที่ไม่ใช่ core หลักของการเก็บข้อมูล หรือ ทำพวก temp หรือ cashing ต่าง ๆ ให้เข้าถึงไว ๆ

จากข้อดีที่กล่าวมาทั้งหมดทำให้ทางอินดี้สนใจที่จะเอา Redis มาใช้งานเป็น cache ให้กับ WordPress และ ได้ใช้งานจริงมาซักพักแล้ว ประมาณ 6 เดือน พบว่ามีประสิทธิภาพดีมากกับการใช้งาน VPS ที่ RAM 1G ขึ้นไป

Server Redis ข้อดี 

  • ใช้งานง่าย
  • โครตไว
  • ใช้งานได้หลากหลาย

Server Redis ข้อเสีย

  • ข้อมูลอาจหายง่ายๆ ถ้าทำอะไรพลาด
  • ถ้าทำระบบซับซ้อนมากๆ อาจจะทำให้สับสนได้

ขั้นตอนการติดตั้ง Redis

โดยการติดตั้ง Redis ของทางอินดี้มีดังนี้ Linux Server เป็น Debian 10 และ ใช้ Web control panel เป็น hestiacp โดยเรื่อง HestiaCP ทางอินดี้ได้เขียนบทความทั้งหมดเอาไว้แล้ว สามารถไปอ่านย้อนหลังบทความได้ที่ HestiaCP โดย VPS ที่ใช้ทดสอบการติดตั้ง และ ใช้งานจริงมาคือ VPS RAM 1G ของทาง Digital Ocean โดยอธิบายขั้นตอนการติดตั้งดังนี้

  • การติดตั้ง Redis
sudo apt install redis-server
  • หลังจากรัน SSH ดำเนินการติดตั้งตาม Step ที่เห็นในหน้าจอติดตั้ง อันนี้ง่ายๆมาก
  • ทำการติดตั้ง redis php extension
Sudo apt install php-redis
  • ดำเนินการ Restart Service ยกตัวอย่าง Hestia ของอินดี้ใช้ PHP 7.4 ก็จะใช้ SSH ดั้งนี้
sudo systemctl restart redis.service php7.3-fpm.service
  • ขั้นตอนการปรับแต่งเพื่อป้องกัน Hacker เจาะ Redis
[[ -z $REDISPWD ]] &&
REDISPWD=$(openssl rand --base64 24)
sed 's ^port.* port 0 ’ -i /etc/redis/redis.conf
sed 's ^# unixsocket .* unixsocket /var/run/redis/redis.sock ’ -i /etc/redis/redis.conf
sed 's ^# unixsocketperm .* unixsocketperm 770 ’ -i /etc/redis/redis.conf
sed "s ^# requirepass .* requirepass $REDISPWD " -i /etc/redis/redis.conf
for hUSER in $(grep hestia /etc/group cut -d: -f4 sed ‘s/,/ /g’); do
usermod -aG redis $hUSER; done
systemctl restart redis
  • ข้อมูลอ้างอิงการติดตั้ง สามารถอ่านเพื่อเติมได้ที่ Forum ของ HestiaCP ในเรื่องของการติดตั้ง Redis Memcached / redis
  • ขั้นตอนการทดสอบว่า Redis ที่ติดตั้งสามารถใช้งานได้หรือไม่ ให้ Run Shell : redis-cli ping แล้ว output จะได้ PONG เท่านี้ก็พร้อมใช้งานแล้ว
redis-cli ping
OutPut: PONG

การติดตั้ง Redis ให้กับ WordPress

โดยอธิบายขั้นตอนการติดตั้ง Redis ให้กับ WordPress ดังนี้

  • Download WordPress Pligins Redis Object Cache ทำการติดตั้ง Plugins และ Active ให้เรียบร้อย
  • หาโปรแกรมที่สามารถเข้าไปแก้ไขไฟล์ wp-config.php หรือ ถ้าใช้ HestiaCP ก็สามารถเข้าไปที่ File manager จัดการ Config ผ่านหน้าเว็บได้เลย
define('WP_CACHE', true);
define('WP_CACHE_KEY_SALT', 'indydiary.com');
define( 'WP_REDIS_HOST', '127.0.0.1');
define( 'WP_REDIS_PORT', 6379);
define( 'WP_REDIS_DATABASE', 0);
  • define(‘WP_CACHE_KEY_SALT’, ‘indydiary.com’); ตรงนี้แก้เป็นชื่อเว็บของเราได้เลย
  • define( ‘WP_REDIS_PORT’, 6379); เป็น Port ที่ใช้ กรณี 1 VPS มีหลายเว็บๆ แนะนำขั้นตอนการการติดตั้งหัวข้อต่อไป แต่ถ้าแนะนำ 1 VPS ให้ติดตั้ง Redis กับ 1 เว็บ จะดีกว่าเพราะไม่วุ่นวายเรื่อง Code มากมาย
  • ไปที่เมนู WordPress Setting > Redis
redis คือ
  • จากรูปผลการ setup ถ้า status เป็น Connected เราก็จะใช้งาน Cache Redis ได้แล้ว
  • กรณีต้องการลบ Cache ออก ก็สามารถกดปุ่ม Flush Cache ได้เลย

การปรับแต่งกรณี 1 VPS มีหลายเว็บ

การปรับแต่งกรณีที่ 1 VPS Server มีหลาย Domain หรือ หลายๆเว็บ โดยการปรับแต่งมีคำแนะนำต่อไปนี้

  • การติดตั้ง Redis ให้กับหลายๆ Server หรือ หลายๆเว็บ ให้ทำตามดังนี้ SETTING UP MULTIPLE SERVER INSTANCES ON A LINUX HOST หรือ ที่บทความนี้ How to run multiple Redis instances on Ubuntu
  • ตัว WordPress Database Frefix ปกติเราจะติดตั้งโดยใช้ Default เป็น “WP_” แนะนำให้แก้เป็นชื่ออื่นเพราะเวลารัน Redis แล้วหน้าเว็บจะ cache มั่วไปหมด
  • ทางอินดี้แนะนำให้ติดตั้งแยก VPS ไปเลยดีกว่าครับ 1 เว็บ 1 Redis อันนี้ Config ง่ายสุดแล้วไม่ต้องไปยุ่งกับ Shell ของ Linux มาก และ ตอนใช้งานจริงไม่ปวดหัวมาก