คู่มือการดูแลระบบ Nextcloud ฉบับปัจจุบันยังคงกล่าวถึงส่วนขยาย PhpRedis สำหรับการแคช Redis และการล็อกไฟล์แบบธุรกรรม นอกจากนี้ยังกล่าวถึงแบ็กเอนด์ KeyValueCache รุ่นใหม่กว่าที่ไม่ต้องใช้ส่วนขยาย ซึ่งเพิ่มเข้ามาใน Nextcloud เวอร์ชัน 34.0.2 คู่มือนี้ใช้การกำหนดค่า PhpRedis ที่มีอยู่แล้ว เนื่องจาก Ubuntu 24.04 มีแพ็คเกจส่วนขยาย Redis สำหรับ PHP 8.3 แบ็กเอนด์รุ่นใหม่กว่าเป็นตัวเลือกหาก Nextcloud เวอร์ชันของคุณรองรับ แต่คีย์การกำหนดค่าจะแตกต่างกัน อย่าใช้ตัวอย่างทั้งสองแบบปะปนกัน
ผลลัพธ์ที่ได้คือบริการ Redis ในเครื่องที่ใช้งานได้เฉพาะกับโฮสต์ Nextcloud เท่านั้น ระบบแคชแบบกระจายที่ใช้ Redis และการล็อกไฟล์ รวมถึง APCu สำหรับแคชในเครื่องที่เร็วกว่า นี่คือการจัดเรียงแบบเซิร์ฟเวอร์เดียวที่พบได้ทั่วไป หากเว็บเซิร์ฟเวอร์และเซิร์ฟเวอร์ PHP ของคุณกระจายอยู่บนโฮสต์หลายตัว ให้ใช้เอนด์พอยต์ Redis ที่ใช้ร่วมกันพร้อมการควบคุมเครือข่ายที่เหมาะสมแทนการตั้งค่า localhost ด้านล่าง
Redis เปลี่ยนแปลงอะไรบ้างในการติดตั้ง Nextcloud
Redis ให้บริการแบบ key-value แก่ Nextcloud สำหรับรายการแคชแบบกระจายและการล็อกไฟล์แบบธุรกรรม การล็อกเหล่านี้ช่วยป้องกันการทำงานที่ขัดแย้งกันเมื่อมีการร้องขอหลายรายการทำงานกับไฟล์ Redis ไม่ได้มาแทนที่ฐานข้อมูล พื้นที่จัดเก็บไฟล์ PHP OPcache หรือแผนการสำรองข้อมูลของ Nextcloud โดยทั่วไปแล้ว บนเซิร์ฟเวอร์เดียว APCu จะเร็วกว่าสำหรับการแคชแบบ in-process ในเครื่อง ในขณะที่ Redis จัดการแคชและการล็อกแบบใช้ร่วมกัน Nextcloud ยังเตือนด้วยว่าไม่แนะนำให้ใช้ Redis เป็นแคชในเครื่อง โดยเฉพาะอย่างยิ่งกับเว็บเซิร์ฟเวอร์หลายเครื่อง
คู่มือล่าสุดของ Nextcloud ระบุว่า Redis เป็นแบ็กเอนด์ที่รองรับ และระบุ PhpRedis เวอร์ชัน 2.2.6 หรือใหม่กว่าสำหรับวิธีการแบบใช้ส่วนขยาย คลังแพ็กเกจของ Ubuntu 24.04 ประกอบด้วยphp8.3-redisและredis-serverการแก้ไขแพ็กเกจอาจเปลี่ยนแปลงได้เมื่อ Ubuntu เผยแพร่การอัปเดต ดังนั้นควรติดตั้งจากที่เก็บแพ็กเกจของ Ubuntu ที่กำหนดค่าไว้ แทนที่จะใช้เวอร์ชันที่คัดลอกมาจากคู่มือเก่า อ้างอิงที่ตรวจสอบเมื่อวันที่ 6 ตุลาคม 2026: เอกสารเกี่ยวกับการแคชหน่วยความจำของ Nextcloud , รายการแพ็กเกจ PhpRedis ของ Ubuntu 24.04และรายการแพ็กเกจเซิร์ฟเวอร์ Redis ของ Ubuntu 24.04
ก่อนที่คุณจะเริ่มต้น
- ตรวจสอบให้แน่ใจว่าได้เลือกไดเร็กทอรีการติดตั้ง Nextcloud และรันไทม์ PHP ที่เว็บไซต์ใช้งานอยู่ คำสั่งด้านล่างนี้สมมติว่าเป็นการติดตั้งแพ็กเกจ Ubuntu มาตรฐานที่มี PHP 8.3, Apache หรือ PHP-FPM และบัญชีบริการ
www-dataเว็บ
- สำรองข้อมูล
config/config.phpและจดบันทึกวิธีการกู้คืน เส้นทางที่แน่นอนอาจแตกต่างกันไป ตัวอย่างเช่น การติดตั้งแบบแพ็กเกจอาจใช้/var/www/nextcloud/config/config.phpในขณะที่การติดตั้งด้วยตนเองอาจอยู่ในที่อื่น
- ควรใช้ช่วงเวลาสำหรับการบำรุงรักษาหากเซิร์ฟเวอร์มีการจัดการการอัปโหลดไฟล์ที่ใช้งานอยู่ การรีสตาร์ท Apache หรือ PHP-FPM จะทำให้การร้องขอเว็บหยุดชะงักชั่วขณะ
1. ติดตั้ง Redis, PhpRedis และ APCu
อัปเดตข้อมูลเมตาของแพ็กเกจและติดตั้งเดมอนและส่วนขยาย PHP:
sudo apt update
sudo apt install redis-server php-redis php-apcu
แพ็กเกจ ของ Ubuntu php-redisจะเลือกส่วนขยายสำหรับเวอร์ชัน PHP ที่ติดตั้งไว้ หากคุณดูแล PHP หลายเวอร์ชันหรือใช้ที่เก็บ PHP ของบุคคลที่สาม โปรดตรวจสอบให้แน่ใจว่าได้ติดตั้งส่วนขยายสำหรับเวอร์ชัน PHP ที่ใช้งาน Nextcloud แล้ว การเปิดใช้งานโมดูลสำหรับรันไทม์ PHP แบบบรรทัดคำสั่งเพียงอย่างเดียวไม่ได้รับประกันว่า Apache หรือ PHP-FPM จะสามารถโหลดได้
เปิดใช้งาน Redis เมื่อบูตเครื่องและเริ่มต้นใช้งาน จากนั้นตรวจสอบสถานะการให้บริการ:
sudo systemctl enable --now redis-server
sudo systemctl status redis-server --no-pager
redis-cli ping
การตอบสนองของ Redis ในเครื่องต่อคำสั่งล่าสุดจะเป็นค่าปกติPONGหากบริการไม่ทำงาน โปรดตรวจสอบsudo journalctl -u redis-server -n 50 --no-pagerก่อนเปลี่ยนแปลงการตั้งค่าของ Nextcloud
2. เก็บ Listener ของ Redis ไว้ในเครื่องโลคัล
สำหรับการติดตั้งแบบโฮสต์เดียว Redis ไม่จำเป็นต้องรับฟังการเชื่อมต่อจากอินเทอร์เฟซสาธารณะ การกำหนดค่าที่มาพร้อมกับ Ubuntu โดยปกติแล้วจะออกแบบมาสำหรับการเข้าถึงภายในเครื่องและโหมดป้องกัน โปรดตรวจสอบ/etc/redis/redis.confก่อนทำการเปลี่ยนแปลง:
sudo grep -E '^(bind|protected-mode|port|unixsocket)' /etc/redis/redis.conf
ตั้งค่า Redis ให้ผูกกับพอร์ต loopback (โดยทั่วไปคือ127.0.0.1และ::1) และเปิดใช้งานโหมดป้องกันไว้ อย่าเปิดพอร์ต6379สู่ภายนอกหรือผูกกับ0.0.0.0สำหรับการตั้งค่าภายในเครื่องนี้ หลังจากเปลี่ยนแปลงการตั้งค่า Redis ใดๆ แล้ว ให้รีสตาร์ทบริการและทำซ้ำขั้นตอนredis-cli pingเดิม
คู่มือนี้ใช้ TCP บน localhost เพื่อลดการเปลี่ยนแปลงสิทธิ์การเข้าถึงซ็อกเก็ตให้น้อยที่สุด ซ็อกเก็ต Unix เป็นอีกทางเลือกหนึ่งที่รองรับและสามารถลดค่าใช้จ่ายในการเชื่อมต่อได้ แต่เส้นทางซ็อกเก็ต Redis การเป็นเจ้าของกลุ่ม สิทธิ์การเข้าถึง และการกำหนดค่า Nextcloud ต้องตรงกันทั้งหมด หากคุณเลือกใช้เส้นทางนั้นโดยเจตนา โปรดทำตามตัวอย่างซ็อกเก็ตในคู่มือ Nextcloud
3. ตรวจสอบว่า PHP สามารถโหลดส่วนขยายทั้งสองได้หรือไม่
ตรวจสอบโมดูล PHP ที่ใช้งานผ่านบรรทัดคำสั่ง:
php -m | grep -Ei '^(apcu|redis)$'
คุณควรเห็นชื่อทั้งสอง หากชื่อใดชื่อหนึ่งหายไป ให้ตรวจสอบไฟล์โมดูลที่เปิดใช้งานด้วยคำสั่งphp --ini`php -l` และติดตั้งแพ็กเกจที่ตรงกับเวอร์ชัน PHP ของคุณ จากนั้นรีสตาร์ท PHP handler ที่เว็บไซต์ใช้งานอยู่ เพื่อให้ worker โหลดโมดูลใหม่ สำหรับ Apache ที่ใช้ mod_php ให้รันคำสั่ง ` sudo systemctl restart apache2php -l` สำหรับการติดตั้ง PHP-FPM ที่ใช้ PHP 8.3 ให้รันคำสั่ง `php -l` จากนั้นsudo systemctl restart php8.3-fpmรีสตาร์ทหรือรีโหลดเว็บเซิร์ฟเวอร์ตามที่การใช้งานของคุณต้องการ
การตรวจสอบผ่าน CLI เป็นเพียงสัญญาณเบื้องต้นที่มีประโยชน์ แต่ไม่ใช่หลักฐานยืนยันการทำงานของเว็บอย่างสมบูรณ์ ในภายหลัง ให้ใช้การตั้งค่าการดูแลระบบของ Nextcloud และข้อมูลเซิร์ฟเวอร์ หรือมุมมองข้อมูล PHP เพื่อตรวจสอบว่ากระบวนการเว็บรู้จักโมดูลแคชหรือไม่
4. เพิ่มการตั้งค่าแคชลงใน Nextcloud
เปิดไฟล์ที่มีอยู่config/config.phpด้วยโปรแกรมแก้ไขข้อความ สำรองไฟล์ไว้ก่อน แล้วรวมรายการเหล่านี้เข้ากับอาร์เรย์ PHP ที่มีอยู่ก่อนปิดไฟล์);อย่าแทนที่ไฟล์ทั้งหมดหรือเพิ่มสำเนาคีย์ชุดที่สองที่1มีอยู่แล้ว
'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
'host' => '127.0.0.1',
'port' => 6379,
],
ที่อยู่ loopback ที่ระบุอย่างชัดเจนจะตรงกับบริการ Redis ในเครื่อง หากคุณใช้ซ็อกเก็ต Unix แทน ให้ใช้พาธของซ็อกเก็ตเป็นโฮสต์ Redis และกำหนดค่า daemon และสิทธิ์ให้ตรงกัน หาก Redis ต้องการการตรวจสอบสิทธิ์ ให้เพิ่มชื่อผู้ใช้และรหัสผ่าน ACL ของ Redis ที่ถูกต้องลงในredisอาร์เรย์และกำหนดค่า Redis ตามนั้น อย่าวางรหัสผ่านจริงลงในตัวอย่างที่แชร์หรือโพสต์สนับสนุนสาธารณะเด็ดขาด
คงการตั้งค่าที่มีอยู่เดิม เช่นinstanceidข้อมูลรับรองฐานข้อมูล โดเมนที่เชื่อถือได้ และไดเร็กทอรีข้อมูล ไวยากรณ์อาร์เรย์ของ PHP มีความสำคัญ: ควรคั่นรายการด้วยเครื่องหมายจุลภาค และตรวจสอบให้แน่ใจว่าการตั้งค่าแต่ละรายการปรากฏเพียงครั้งเดียวเท่านั้น
5. ตรวจสอบความถูกต้องของแคชและการล็อกไฟล์
เรียกใช้คำสั่งตรวจสอบสถานะของ Nextcloud จากบรรทัดคำสั่งในไดเร็กทอรีการติดตั้ง โดยใช้สิทธิ์ผู้ใช้เว็บเซอร์วิส หากการติดตั้งของคุณอยู่ในที่อื่น ให้แทนที่เส้นทางตัวอย่างด้วยเส้นทางที่ถูกต้อง:
cd /var/www/nextcloud
sudo -u www-data php occ status
ตรวจสอบส่วนติดต่อผู้ใช้บนเว็บภายใต้การตั้งค่าการดูแลระบบเพื่อดูคำเตือนในการตั้งค่า และยืนยันว่าโมดูล Redis และ APCu สามารถมองเห็นได้โดยรันไทม์ PHP บนเว็บ จากนั้นทดสอบการทำงานของไฟล์ตามปกติด้วยไฟล์ขนาดเล็กที่ไม่สำคัญ เช่น อัปโหลด เปลี่ยนชื่อ ดาวน์โหลด และลบไฟล์ หน้าผู้ดูแลระบบจะไม่รายงานว่าแคชหน่วยความจำหายไปอีกต่อไปเมื่อแคชในเครื่องได้รับการกำหนดค่าอย่างถูกต้อง
การทดสอบที่ประสบความสำเร็จPONGแสดงให้เห็นเพียงว่า Redis ตอบสนองต่อไคลเอ็นต์ CLI ในเครื่องเท่านั้น การตรวจสอบโดยผู้ดูแลระบบ Nextcloud และการดำเนินการไฟล์ตามปกติจะช่วยตรวจสอบส่วนขยาย PHP สิทธิ์ของเว็บเซิร์ฟเวอร์ การตั้งค่าการเชื่อมต่อ Redis และการกำหนดค่าแอปพลิเคชันไปพร้อมกัน อย่าถือว่าการโหลดหน้าเว็บที่เร็วขึ้นในการทดสอบครั้งเดียวเป็นหลักฐานของการปรับปรุงประสิทธิภาพที่วัดได้ เนื่องจากปริมาณงาน พื้นที่จัดเก็บ ฐานข้อมูล และความจุของ PHP ล้วนส่งผลต่อเวลาตอบสนอง
การแก้ไขปัญหาทั่วไป
หน้าผู้ดูแลระบบยังคงรายงานว่าไม่มีแคชหน่วยความจำ
ตรวจสอบหาคีย์แคชที่ซ้ำกันหรือสะกดผิด ยืนยันว่าmemcache.localชี้ไปยัง APCu และรีสตาร์ทบริการ Apache หรือ PHP-FPM ที่ถูกต้อง การติดตั้ง PHP แบบ CLI เท่านั้นอาจแตกต่างจากรันไทม์ PHP ที่เว็บไซต์ใช้งานอยู่
Redis ทำงานอยู่ แต่ Nextcloud แจ้งข้อผิดพลาดในการเชื่อมต่อ
เปรียบเทียบค่าในhostและกับตัวรับฟังใน. ยืนยันการเข้าถึงในพื้นที่ด้วยและตรวจสอบบันทึกของ Redis และเว็บเซิร์ฟเวอร์ หากคุณใช้ซ็อกเก็ตหรือรหัสผ่าน ให้ตรวจสอบว่าเส้นทางหรือข้อมูลประจำตัวตรงกันทั้งสองฝั่งportconfig.php/etc/redis/redis.confredis-cli -h 127.0.0.1 -p 6379 ping
การดำเนินการไฟล์ล้มเหลวหลังจากการเปลี่ยนแปลง
หากระบบใช้งานไม่ได้ ชั่วคราว ให้กู้คืนระบบที่สำรองไว้config.phpจากนั้นตรวจสอบบันทึกของ PHP และเว็บเซิร์ฟเวอร์ ตรวจสอบเครื่องหมายวรรคตอนในอาร์เรย์ ยืนยันว่าบริการ Redis ทำงานอยู่ และตรวจสอบว่าไม่มีไฟร์วอลล์หรือ ACL ของ Redis ที่กำหนดเองปิดกั้นกระบวนการเว็บ หลีกเลี่ยงการล้างข้อมูล Redis เป็นขั้นตอนแรกในการแก้ไขปัญหา ตรวจสอบการเชื่อมต่อและการกำหนดค่าก่อนที่จะลบแคชหรือรายการล็อก
สิ่งที่การตั้งค่านี้ไม่ครอบคลุม
นี่คือการกำหนดค่าเซิร์ฟเวอร์เดี่ยว ไม่ใช่การออกแบบ Redis ที่มีความพร้อมใช้งานสูง การกำหนดค่านี้ไม่ได้ตั้งค่าการจำลองแบบ Redis, Sentinel, TLS, โฮสต์แคชระยะไกล, ที่เก็บข้อมูลเซสชัน หรือการปรับใช้ Nextcloud แบบคลัสเตอร์ โหนด Nextcloud แบบหลายเซิร์ฟเวอร์ต้องใช้แคชแบบกระจายและแบ็กเอนด์การล็อกเดียวกัน การใช้ localhost บนแต่ละโหนดจะสร้างอินสแตนซ์ Redis แยกต่างหากและทำให้ข้อกำหนดนั้นไม่เป็นไปตามที่ต้องการ สำหรับโทโพโลยีระยะไกลหรือแบบคลัสเตอร์ ให้ทำตามส่วนการกำหนดค่า Nextcloud ที่เกี่ยวข้องและรักษาความปลอดภัยการสื่อสาร Redis สำหรับสภาพแวดล้อมนั้น
หลังจากตั้งค่าระบบเสถียรแล้ว ให้ตรวจสอบการใช้งานหน่วยความจำของ Redis และภาพรวมการดูแลระบบของ Nextcloud จัดสรรหน่วยความจำให้เพียงพอสำหรับแคชและกิจกรรมการล็อก หลีกเลี่ยงนโยบายการลบข้อมูลที่ไม่ได้รับการตรวจสอบซึ่งอาจทำให้ข้อมูลการล็อกหายไป และสำรองข้อมูลฐานข้อมูลและไฟล์เป็นประจำ การแคชของ Redis สามารถลดภาระของแคชและการล็อกได้ แต่เป็นเพียงส่วนหนึ่งของการติดตั้ง Nextcloud ที่มีประสิทธิภาพ ไม่ใช่สิ่งทดแทนการวางแผนความจุทั้งหมด