คุณทำการอัปเดต Nextcloud เสร็จแล้ว แต่ทุกคนยังคงเห็นหน้าการบำรุงรักษา หรือการอัปเกรดถูกขัดจังหวะและเว็บไซต์ไม่กลับมาใช้งานได้อีกเลย คำสั่ง OCC สำหรับปิดใช้งานโหมดบำรุงรักษานั้นสั้น แต่การเรียกใช้คำสั่งนี้ก่อนตรวจสอบสถานะการอัปเกรดอาจทำให้พบการติดตั้งที่ยังไม่เสร็จสมบูรณ์ เริ่มต้นด้วยการตรวจสอบว่าคุณกำลังดูแล Nextcloud อินสแตนซ์ใด และยังจำเป็นต้องอัปเกรดฐานข้อมูลอยู่หรือไม่
ตัวอย่างประกอบ:ลองนึกภาพสำนักงานขนาดเล็กแห่งหนึ่งที่ใช้งาน Nextcloud บน Ubuntu การอัปเดตตามกำหนดการถูกขัดจังหวะหลังจากมีการติดตั้งไฟล์โค้ดใหม่ และหน้าเว็บยังคงแสดงว่าเซิร์ฟเวอร์อยู่ในโหมดบำรุงรักษา ตัวอย่างนี้เป็นเพียงสมมติฐาน เป็นแนวทางสำหรับการตรวจสอบตามที่ระบุไว้ด้านล่าง ไม่ใช่รายงานเหตุการณ์หรือการทดสอบจริง
โหมดบำรุงรักษาหมายถึงอะไร
โหมดบำรุงรักษาของ Nextcloud จะปิดกั้นการเข้าถึงของผู้ใช้ตามปกติในขณะที่ผู้ดูแลระบบดำเนินการต่างๆ เช่น การอัปเกรดหรือการสำรองข้อมูล สถานะนี้มีผลกับทั้งเซิร์ฟเวอร์ ดังนั้นผู้ใช้อาจเห็นข้อความแจ้งเตือนการบำรุงรักษาแม้ว่าเว็บเซิร์ฟเวอร์จะทำงานอยู่ก็ตาม คู่มือการดูแลระบบฉบับปัจจุบันของ Nextcloud ได้ระบุคำสั่ง OCC สำหรับการเปิดหรือปิดโหมดนี้ และระบุว่าผู้ใช้อาจต้องรีเฟรชเบราว์เซอร์หลังจากปิดโหมดนี้แล้ว
สำหรับสำนักงานตัวอย่างนี้ หน้าการบำรุงรักษาเพียงอย่างเดียวไม่สามารถบอกผู้ดูแลระบบได้ว่าการอัปเกรดเสร็จสมบูรณ์แล้วหรือไม่ พวกเขาจำเป็นต้องตรวจสอบกับ Nextcloud เองก่อนที่จะเปลี่ยนโหมด
ขั้นตอนที่ 1: ยืนยันประเภทการติดตั้งและเส้นทาง OCC
ตัวอย่างคำสั่งในที่นี้ใช้สำหรับการติดตั้ง Nextcloud แบบใช้ไฟล์เก็บถาวรทั่วไปบน Ubuntu โดยมีโค้ดอยู่ใน/var/www/nextcloudและบัญชีเว็บเซิร์ฟเวอร์ชื่อwww-data.Nextcloud ระบุว่าไฟล์นี้occอยู่ในไดเร็กทอรีการติดตั้ง และต้องเรียกใช้งานในฐานะผู้ใช้ HTTP ซึ่งโดยปกติแล้วผู้ใช้ดังกล่าวคือ บน Debian และwww-dataUbuntu
สำหรับรูปแบบมาตรฐานนี้ ให้ป้อนไดเร็กทอรีการติดตั้ง:
cd /var/www/nextcloud
หากไฟล์ Nextcloud ของคุณอยู่ที่อื่น ให้ใช้เส้นทางจริงนั้น Snap, Docker, appliances และ managed hosting ใช้คำสั่งหรือโครงสร้างไฟล์ที่แตกต่างกัน อย่าใช้คำสั่ง host กับการติดตั้งแบบคอนเทนเนอร์ หรือสันนิษฐานว่าเส้นทางเก็บถาวรใช้ได้กับการติดตั้งเหล่านั้น ปฏิบัติตามคำแนะนำในการอัปเดตสำหรับวิธีการติดตั้งของคุณ ตามที่อธิบายไว้ในคู่มือการอัปเกรด Nextcloud อย่างเป็นทางการ
ในตัวอย่างในสำนักงาน ผู้ดูแลระบบจะตรวจสอบบันทึกการติดตั้งและยืนยันว่าเป็นการติดตั้งแบบเก็บถาวรก่อนที่จะเรียกใช้ OCC
ขั้นตอนที่ 2: ตรวจสอบสถานะของ Nextcloud ก่อนปิดใช้งานโหมดบำรุงรักษา
เรียกใช้ OCC โดยใช้บัญชีเว็บเซิร์ฟเวอร์ เพื่อให้ไฟล์และการกำหนดค่าคงความเป็นเจ้าของตามที่คาดไว้:
sudo -E -u www-data php occ status
ดูที่ช่องmaintenanceและneedsDbUpgradeฟิลด์ต่างๆ เวอร์ชันปัจจุบันยังรองรับรหัสสถานะการออกด้วย:
sudo -E -u www-data php occ status -e
echo $?
รหัสการออกจากโปรแกรมที่ระบุไว้จะมีประโยชน์เมื่อสคริปต์ตรวจสอบผลลัพธ์: 0บ่งชี้การทำงานปกติ1หมายถึงเปิดใช้งานโหมดบำรุงรักษา และ2หมายถึงocc upgradeจำเป็นต้องดำเนินการ ควรตรวจสอบผลลัพธ์สถานะแบบธรรมดาด้วย อย่าใช้รหัสการออกจากโปรแกรมเพียงอย่างเดียวในการตัดสินใจว่าจะเปิดเว็บไซต์อีกครั้งหรือไม่
สำหรับเซิร์ฟเวอร์สำนักงานสมมติ หากneedsDbUpgradeเงื่อนไขเป็นจริงหรือstatus -eส่งค่ากลับมาเป็น2เท็จ ขั้นตอนต่อไปที่ถูกต้องคือการดำเนินการอัปเกรดให้เสร็จสมบูรณ์ ไม่ใช่เพียงแค่ปิดโหมดบำรุงรักษา
ขั้นตอนที่ 3: ทำการอัปเกรดที่ยังไม่เสร็จสมบูรณ์ให้เสร็จก่อน
หากมีการติดตั้งการอัปเกรดโค้ด Nextcloud โดยเจตนา และ OCC รายงานว่าจำเป็นต้องอัปเกรดฐานข้อมูล ให้ทำการสำรองข้อมูล การกำหนดค่า และข้อมูลปัจจุบัน หรือตรวจสอบความถูกต้องก่อนดำเนินการต่อ จากนั้นเรียกใช้คำสั่งที่ระบุไว้ในเอกสารจากไดเร็กทอรีการติดตั้ง:
sudo -E -u www-data php occ upgrade
อ่านผลลัพธ์ของคำสั่งและรอจนกว่าจะเสร็จสิ้น อย่าขัดจังหวะเนื่องจากหน้าเว็บจะแสดงผลเหมือนเดิมในขณะที่การย้ายข้อมูลกำลังทำงานอยู่ ตัวอัปเดตในตัวอาจเปิดใช้งานโหมดบำรุงรักษาไว้เมื่อการแทนที่โค้ดocc upgradeล้มเหลว หากตัวอัปเดตเองไม่สามารถแทนที่โค้ดได้เสร็จสิ้น ให้ทำตามบันทึกและดำเนินการตามกระบวนการอัปเดตที่เหมาะสมสำหรับการติดตั้งของคุณแทนที่จะข้ามไปยังขั้นตอนถัดไปโดยตรงคำแนะนำของตัวอัปเดตในตัวmaintenance:mode --offของ Nextcloud จะอธิบายขั้นตอนการอัปเดตและระบุบันทึกของตัวอัปเดตเป็นแหล่งข้อมูลสำหรับการวินิจฉัย
ในตัวอย่างนี้ ผู้ดูแลระบบสำนักงานจะเรียกใช้คำสั่งก็ต่อocc upgradeเมื่อสถานะระบุว่าการย้ายฐานข้อมูลยังอยู่ในสถานะรอการดำเนินการ และโค้ดใหม่ที่คาดไว้ได้ถูกติดตั้งเรียบร้อยแล้ว หากคำสั่งรายงานข้อผิดพลาด พวกเขาจะปิดเซิร์ฟเวอร์ไว้และตรวจสอบข้อผิดพลาดนั้นก่อน
ขั้นตอนที่ 4: ปิดโหมดบำรุงรักษาด้วย OCC
เมื่อการอัปเกรดเสร็จสมบูรณ์และสถานะไม่ระบุว่าจำเป็นต้องอัปเกรดฐานข้อมูลอีกต่อไป ให้ปิดใช้งานโหมดบำรุงรักษาโดยใช้คำสั่งในตัวของ Nextcloud:
sudo -E -u www-data php occ maintenance:mode --off
คำสั่งที่สำเร็จจะรายงานว่าโหมดบำรุงรักษาถูกปิดใช้งานแล้ว นี่เป็นวิธีการที่ได้รับการสนับสนุนในการเปลี่ยนโหมดสำหรับการติดตั้งแบบมาตรฐาน และการเปลี่ยนแปลงสถานะนี้จะคงอยู่ภายในอินเทอร์เฟซคำสั่งของ Nextcloud เอง แทนที่จะต้องแก้ไขด้วยconfig.phpตนเอง
ตัวอย่างนี้คือ ผู้ดูแลระบบสำนักงานจะเรียกใช้คำสั่งนี้หลังจากที่การย้ายข้อมูลเสร็จสมบูรณ์แล้วเท่านั้น หากไม่มีการอัปเกรดใด ๆ ที่กำลังดำเนินการอยู่ และสถานะแสดงว่าการติดตั้งพร้อมใช้งานแล้ว คำสั่งเดียวกันนี้สามารถล้างสถานะการบำรุงรักษาที่ยังคงเปิดอยู่หลังจากการบำรุงรักษาตามแผนได้
ขั้นตอนที่ 5: ตรวจสอบสถานะและอินเทอร์เฟซเว็บ
ตรวจสอบสถานะอีกครั้ง:
sudo -E -u www-data php occ status
sudo -E -u www-data php occ status -e
สำหรับการติดตั้งที่พร้อมใช้งาน ให้คาดหวังmaintenance: false, needsDbUpgrade: false, และรหัสการออกปกติคือ จาก0นั้นเปิดเว็บไซต์จากหน้าต่างเบราว์เซอร์ส่วนตัวใหม่ และลงชื่อเข้าใช้ด้วยบัญชีผู้ดูแลระบบ ขอให้ผู้ใช้ทั่วไปคนใดคนหนึ่งรีเฟรชเบราว์เซอร์ของตนก่อนที่จะสรุปว่าเซสชันของพวกเขายังคงถูกบล็อกอยู่
ในสถานการณ์จำลองนี้ ความสำเร็จหมายความว่าทั้งสถานะ OCC และหน้าเว็บต่างเห็นพ้องกันว่าอินสแตนซ์กลับมาออนไลน์แล้ว ตัวอย่างสมมตินี้ไม่ได้กล่าวอ้างว่ามีการเรียกใช้คำสั่งใดๆ หรือว่าเซิร์ฟเวอร์จริงได้รับการซ่อมแซมแต่อย่างใด
หากหน้าการบำรุงรักษายังคงแสดงอยู่
OCC กล่าวว่าการบำรุงรักษาเป็นเรื่องเท็จ
ตรวจสอบให้แน่ใจว่าคุณได้เรียกใช้ OCC กับการติดตั้งเดียวกันกับที่ให้บริการ URL นั้น สิ่งนี้สำคัญมากในการใช้งานแบบโหลดบาลานซ์ โฮสต์ Docker ที่มีคอนเทนเนอร์หลายตัว หรือเซิร์ฟเวอร์ที่มีไดเร็กทอรี Nextcloud เก่าและใหม่ตั้งอยู่เคียงข้างกัน ตรวจสอบไดเร็กทอรีรูทเอกสารหรือพาธคอนเทนเนอร์จริง และสอบถามอินสแตนซ์ที่อยู่เบื้องหลัง URL ที่ได้รับผลกระทบ หากแต่ละโหนดเว็บมีการกำหนดค่าของตนเอง ตรวจสอบให้แน่ใจว่าโหนดทั้งหมดใช้การกำหนดค่าและฐานข้อมูลที่ต้องการร่วมกัน
หากอินสแตนซ์ที่ถูกต้องรายงานว่าปิดใช้งานโหมดบำรุงรักษา ให้เปรียบเทียบหน้าเว็บจากต้นทางของเซิร์ฟเวอร์กับ URL สาธารณะ พร็อกซีแบบย้อนกลับหรือแคชอาจแสดงการตอบสนองที่ล้าสมัย ล้างหรือข้ามแคชนั้นหลังจากตรวจสอบแล้วว่าเลเยอร์ใดแสดงหน้าเว็บโหมดบำรุงรักษา
OCC ไม่สามารถทำงานได้หรือแสดงข้อผิดพลาด PHP
ตรวจสอบให้แน่ใจว่าคำสั่งนั้นใช้เวอร์ชัน PHP CLI และส่วนขยายที่จำเป็นซึ่งเข้ากันได้กับการติดตั้งบนเว็บ Nextcloud ระบุว่า APCu ถูกปิดใช้งานโดยค่าเริ่มต้นสำหรับ PHP CLI และอาจทำให้เกิดข้อผิดพลาด OCC เมื่อ APCu ถูกกำหนดค่าเป็นแคชภายในเครื่อง คู่มือของ Nextcloud ระบุถึงการเปิดใช้งานapc.enable_cliในการกำหนดค่า PHP CLI หรือการเพิ่มลง--define apc.enable_cli=1ในคำสั่ง PHP เมื่อเหมาะสม:
sudo -E -u www-data php --define apc.enable_cli=1 occ status
ใช้เฉพาะเมื่อข้อผิดพลาดบ่งชี้ถึงปัญหาของ APCu CLI เท่านั้น ไม่ใช่วิธีแก้ไขทั่วไปสำหรับข้อผิดพลาด PHP ทั้งหมด โปรดตรวจสอบด้วยว่าคำสั่งทำงานโดยใช้ผู้ใช้เว็บที่ถูกต้องและจากไดเร็กทอรีการติดตั้งที่ถูกต้อง
การอัปเกรดฐานข้อมูลยังคงจำเป็นอยู่
อย่าบังคับปิดแฟล็กการบำรุงรักษาเพื่อซ่อนสถานะนี้ ตรวจสอบผลลัพธ์และบันทึกการอัปเดตอีกครั้ง ตรวจสอบว่าได้ติดตั้งเวอร์ชันโค้ด Nextcloud ที่ถูกต้องแล้ว และดำเนินการตามขั้นตอนการอัปเกรดที่รองรับสำหรับประเภทการติดตั้งของคุณเอกสารอ้างอิงระบบ OCC และคำสั่งการบำรุงรักษาmaintenance:mode อย่างเป็นทางการ , status, และการอัปเกรดผ่านบรรทัดคำสั่ง
ควบคุมช่วงเวลาการบำรุงรักษาให้เหมาะสม
การปิดใช้งานโหมดบำรุงรักษาจะช่วยให้ผู้ใช้กลับเข้าสู่ระบบได้ ดังนั้นโปรดตรวจสอบให้แน่ใจว่าการอัปเกรดฐานข้อมูลและการแทนที่โค้ดที่จำเป็นเสร็จสมบูรณ์แล้วก่อน หลีกเลี่ยงการลบไฟล์อัปเดตด้วยตนเองหรือแก้ไขการตั้งค่าการบำรุงรักษาในไฟล์การกำหนดค่าเป็นการตอบสนองเบื้องต้น เพราะการทำเช่นนั้นอาจซ่อนอาการโดยที่ยังไม่ได้ดำเนินการแก้ไขที่ทำให้เกิดโหมดดังกล่าว
สำหรับสำนักงานสมมติ การตัดสินใจที่ปลอดภัยนั้นตรงไปตรงมา: ตรวจสอบการติดตั้งที่ถูกต้อง ตรวจสอบสถานะ ดำเนินการอัปเกรดที่จำเป็นให้เสร็จสมบูรณ์ จากนั้นเรียกใช้maintenance:mode --offและตรวจสอบทั้ง OCC และเบราว์เซอร์ หากการอัปเกรดไม่สามารถดำเนินการได้อย่างราบรื่น ให้เปิดโหมดบำรุงรักษาไว้และแก้ไขปัญหาจากบันทึกการอัปเดตหรือขั้นตอนการกู้คืนเฉพาะการติดตั้ง