ตั้งค่าให้ Nextcloud Cron ทำงานโดยอัตโนมัติด้วย Systemd Timer
ตรวจสอบโหมด cron ของ Nextcloud ซ่อมแซมบริการ systemd และตัวจับเวลา และตรวจสอบว่างานเบื้องหลังทำงานหลังจากเริ่มต้นระบบและทุกๆ ห้านาที
เมื่อหน้าผู้ดูแลระบบของ Nextcloud แจ้งว่างานเบื้องหลังไม่ได้ทำงานมานานแล้ว การล้างข้อมูล การแจ้งเตือน และงานที่กำหนดไว้ล่วงหน้าอื่นๆ อาจล่าช้า บนเซิร์ฟเวอร์ systemd วิธีแก้ไขโดยทั่วไปคือการเรียกใช้ Nextcloud cron.phpโดยใช้บัญชีเว็บเซิร์ฟเวอร์จากบริการ systemd จากนั้นกำหนดเวลาการทำงานของบริการนั้นด้วยตัวจับเวลาที่เปิดใช้งาน คู่มือการดูแลระบบปัจจุบันของ Nextcloud มีตัวอย่างสองหน่วย เส้นทางและบัญชีบริการต้องตรงกับการติดตั้งของคุณ
งานเบื้องหลังของ Nextcloud จะทำงานเมื่อ มีการเรียกใช้ บริการcron.php systemd จะกำหนดคำสั่งที่จะเรียกใช้ และตัวจับเวลาจะเริ่มต้นบริการนั้นตามกำหนดเวลา หากบริการทำงานด้วยตนเอง แต่ตัวจับเวลาไม่ทำงาน ให้ตรวจสอบการทำงานของตัวจับเวลา หากตัวจับเวลาทำงาน แต่บริการล้มเหลว ให้ตรวจสอบคำสั่ง สภาพแวดล้อม PHP และสิทธิ์การเข้าถึง
ตรวจสอบให้แน่ใจว่าไดเร็กทอรี Nextcloud และผู้ใช้ HTTP ถูกต้องก่อนทำการแก้ไขใดๆ ตัวอย่างนี้สมมติว่าใช้/var/www/nextcloudและwww-dataซึ่งเป็นเรื่องปกติใน Debian และ Ubuntu บัญชีอาจเป็นwwwrun, apacheหรือผู้ใช้อื่นในระบบต่างๆ Nextcloud ต้องการให้เรียกใช้คำสั่งบรรทัดคำสั่งในฐานะผู้ใช้ HTTP เพื่อให้การเป็นเจ้าของไฟล์สอดคล้องกัน ดูเอกสารประกอบ Nextcloud occเพิ่มเติม
ทดสอบไฟล์ปฏิบัติการ PHP และสคริปต์ cron เดียวกันกับที่คุณต้องการให้ systemd ใช้:
sudo -u www-data /usr/bin/php -f /var/www/nextcloud/cron.php
แทนที่ชื่อบัญชี เส้นทาง PHP และเส้นทาง Nextcloud ให้ตรงกับโฮสต์ของคุณ หากคำสั่งรายงานข้อผิดพลาด PHP ส่วนขยายหายไป ปัญหาด้านสิทธิ์ โหมดบำรุงรักษา หรือการเชื่อมต่อฐานข้อมูลล้มเหลว ให้แก้ไขปัญหานั้นก่อน ตัวจับเวลาไม่สามารถแก้ไขคำสั่งที่ล้มเหลวได้
เปิดการตั้งค่าการดูแลระบบ → การตั้งค่าพื้นฐาน → งานเบื้องหลังและเลือกCronหากยังไม่ได้เลือกไว้ คุณยังสามารถเรียกใช้คำสั่งนี้จากไดเร็กทอรี Nextcloud ได้อีกด้วย:
cd /var/www/nextcloud
sudo -E -u www-data php occ background:cron
Nextcloud ระบุว่า การเลือก Cron ในการตั้งค่าผู้ดูแลระบบนั้นไม่จำเป็นอย่างยิ่งหากcron.phpเรียกใช้จากบรรทัดคำสั่ง เนื่องจากสคริปต์จะตั้งค่าโหมดโดยอัตโนมัติ การตั้งค่าอย่างชัดเจนจะทำให้โหมดการใช้งานจริงที่ต้องการนั้นชัดเจนยิ่งขึ้น Nextcloud แนะนำให้ใช้ cron ของระบบสำหรับการใช้งานจริงเอกสารเกี่ยวกับงานเบื้องหลัง ของ Nextcloud ยังระบุถึงตัวจับเวลา systemd เป็นตัวเลือกในการกำหนด เวลาอีกด้วย
สร้างหรืออัปเดต ด้วยเนื้อหาต่อไปนี้ ใช้เส้นทางแบบเต็มไปยัง PHP เพื่อให้ systemd /etc/systemd/system/nextcloudcron.serviceไม่ขึ้นอยู่กับเชลล์แบบโต้ตอบPATH
[Unit]
Description=Nextcloud cron.php job
[Service]
User=www-data
ExecCondition=/usr/bin/php -f /var/www/nextcloud/occ status -e
ExecStart=/usr/bin/php -f /var/www/nextcloud/cron.php
KillMode=process
เปลี่ยนUserไปใช้บัญชีเว็บเซิร์ฟเวอร์และเส้นทางที่ตรงกันไปยังตำแหน่ง PHP และ Nextcloud ทั้งสองเส้นทาง เงื่อนไขนี้จะตรวจสอบว่าอินสแตนซ์ทำงานตามปกติก่อนที่จะเรียกใช้งาน หากเงื่อนไขไม่ผ่าน systemd อาจข้ามบริการ ตรวจสอบว่า Nextcloud อยู่ในโหมดบำรุงรักษาหรือไม่ และตรวจสอบบันทึกก่อนที่จะลบหรือเปลี่ยนแปลงเงื่อนไข คงไว้ซึ่งKillMode=processเนื่องจากตัวอย่างของ Nextcloud ใช้เพื่อให้โปรแกรมภายนอกที่เริ่มต้นโดย cron สามารถทำงานต่อได้หลังจากกระบวนการ cron สิ้นสุดลง หน่วยบริการไม่จำเป็นต้องมีส่วนใด[Install]ส่วนหนึ่ง
สร้าง/etc/systemd/system/nextcloudcron.timerกำหนดการนี้ โดยจะเริ่มทำงานห้านาทีหลังจากบูตเครื่อง และจะรออีกห้านาทีหลังจากเปิดใช้งานบริการแต่ละครั้ง:
[Unit]
Description=Run Nextcloud cron.php every 5 minutes
[Timer]
OnBootSec=5 min
OnUnitActiveSec=5 min
Unit=nextcloudcron.service
[Install]
WantedBy=timers.target
รีโหลด systemd เพื่อให้มันอ่านไฟล์หน่วย จากนั้นเปิดใช้งานและเริ่มตัวจับเวลาด้วยคำสั่งเดียว:
sudo systemctl daemon-reload
sudo systemctl enable --now nextcloudcron.timer
การเปิดใช้งานจะทำให้ตัวจับเวลาเริ่มทำงานในการบูตครั้งต่อๆ ไป โดย--nowจะเริ่มทำงานทันที อย่าเปิดใช้งานบริการเองราวกับว่าเป็นตัวจับเวลาแบบวนซ้ำ ตัวจับเวลาเป็นหน่วยที่อยู่ภายใต้timers.targetคู่มือปัจจุบันของ Nextcloud อธิบายการตั้งค่าช่วงเวลาเหล่านี้และคำสั่งการเปิดใช้งานที่จำเป็น คู่มือเวอร์ชันเก่ามีส่วนการติดตั้งบริการที่ล้าสมัย ดังนั้นให้ปฏิบัติตามตัวอย่างหน่วยปัจจุบันแทน
ตรวจสอบสถานะของตัวจับเวลาและการทำงานครั้งถัดไปที่กำหนดไว้:
systemctl status nextcloudcron.timer
systemctl list-timers nextcloudcron.timer
ตัวจับเวลาควรแสดงสถานะเป็นรอหรือทำงานอยู่ และรายการควรแสดงเวลาการเปิดใช้งานครั้งถัดไป จากนั้นตรวจสอบการทำงานล่าสุดของบริการ:
systemctl status nextcloudcron.service
journalctl -u nextcloudcron.service --since today
ตัวจับเวลาอาจทำงานอยู่แม้ว่าการทำงานของบริการแต่ละครั้งจะล้มเหลว ดังนั้นให้ตรวจสอบทั้งสองส่วน หากบริการหายไปหรือ systemd ปฏิเสธไฟล์ ให้เรียกใช้คำสั่ง `git log` systemd-analyze verify /etc/systemd/system/nextcloudcron.service /etc/systemd/system/nextcloudcron.timerเพื่อแก้ไขไวยากรณ์หรือปัญหาเส้นทางที่รายงาน จากนั้นโหลด systemd ใหม่ หากบริการออกจากระบบไม่สำเร็จ เอาต์พุตของบันทึกมักจะระบุเส้นทาง PHP ที่ไม่ถูกต้อง ผู้ใช้ผิด เงื่อนไขล้มเหลว หรือข้อผิดพลาดรันไทม์ของ Nextcloud หากตัวจับเวลาไม่มีการทำงานครั้งถัดไป ให้ตรวจสอบชื่อไฟล์ตัวจับเวลาที่แน่นอน เรียกใช้คำสั่ง `git log` daemon-reloadและยืนยันว่าได้เปิดใช้งานแล้วด้วยsystemctl is-enabled nextcloudcron.timerคำ สั่ง `git log`
หลังจากเปิดใช้งานตัวจับเวลาครั้งถัดไป ให้ตรวจสอบสถานะงานเบื้องหลังของ Nextcloud อีกครั้ง ควรแสดงเวลาการทำงานล่าสุดแทนที่จะเป็นคำเตือนที่ล้าสมัย หากทั้งตัวจับเวลาและบริการรายงานว่าทำงานสำเร็จ แต่หน้าผู้ดูแลระบบยังคงดูเก่า ให้ตรวจสอบบันทึกของอินสแตนซ์และเวอร์ชัน PHP ที่ใช้โดยเว็บเซิร์ฟเวอร์ PHP เวอร์ชันบรรทัดคำสั่งอาจแตกต่างจากเวอร์ชันรันไทม์บนเว็บ การตั้งค่านี้จัดการกับการกำหนดเวลาของ systemd บนโฮสต์ Linux ทั่วไป การติดตั้งแบบคอนเทนเนอร์และแบบอุปกรณ์อาจจัดการ cron ผ่านตัวควบคุมบริการของตนเอง ดังนั้นให้ใช้วิธีการที่รองรับของแพลตฟอร์มนั้นแทนการเพิ่มหน่วยโฮสต์ที่ไม่สามารถเข้าถึงไฟล์ของคอนเทนเนอร์ได้
ตรวจสอบโหมด cron ของ Nextcloud ซ่อมแซมบริการ systemd และตัวจับเวลา และตรวจสอบว่างานเบื้องหลังทำงานหลังจากเริ่มต้นระบบและทุกๆ ห้านาที
เปิดใช้งานการล็อกไฟล์ที่เชื่อถือได้ของ Nextcloud เลือกแบ็กเอนด์ Redis หรือ Valkey ที่เหมาะสม และตรวจสอบว่าคำเตือนหายไปโดยไม่มีความเสี่ยงต่อการเปลี่ยนแปลงไฟล์พร้อมกัน
แก้ไขปัญหาที่พบได้ทั่วไปในการสแกน Nextcloud ด้วยการอัปเดตล่าสุด, HTTPS และ HSTS, การตั้งค่าความน่าเชื่อถือของพร็อกซีแบบย้อนกลับอย่างแม่นยำ และการตรวจสอบกับเซิร์ฟเวอร์สาธารณะ
กำหนดค่า Nextcloud SSE สำหรับพื้นที่จัดเก็บข้อมูลที่ต้องการ ปกป้องคีย์การเข้ารหัส และวัดผลกระทบต่อการถ่ายโอนข้อมูลและ CPU ก่อนที่จะเข้ารหัสไฟล์ที่มีอยู่
เชื่อมต่อระบบค้นหาไฟล์ของ Nextcloud กับ Elasticsearch จัดทำดัชนีเนื้อหาเอกสาร และเลือกการตั้งค่าที่เหมาะสมกับเซิร์ฟเวอร์และความต้องการด้านความปลอดภัยของคุณ
ตั้งค่า Nextcloud ให้ลบไฟล์ที่ถูกลบหลังจากระยะเวลาการเก็บรักษาที่กำหนดไว้ กำหนดเวลาการทำงานเบื้องหลังอย่างน่าเชื่อถือ และหลีกเลี่ยงคำสั่งที่ล้างถังขยะของผู้ใช้ทุกคน
เรียกใช้ฟังก์ชันซ่อมแซม OCC ของ Nextcloud อย่างปลอดภัย ดูตัวอย่างการเปลี่ยนแปลงฐานข้อมูล และตรวจสอบว่าเหตุใดคำเตือนจึงยังคงปรากฏอยู่
อนุญาตให้ Nextcloud อัปโหลดไฟล์ขนาดใหญ่ขึ้นได้โดยการปรับการตั้งค่า PHP, Nginx หรือ Apache, พื้นที่จัดเก็บชั่วคราว และระยะเวลาหมดเวลาให้ตรงกัน และตรวจสอบว่าข้อจำกัดใดที่กำลังบล็อกไฟล์อยู่
ตั้งค่าขีดจำกัดหน่วยความจำ PHP ที่ Nextcloud ใช้จริง รีสตาร์ทบริการที่ถูกต้อง และยืนยันการตั้งค่า 512 MB ในภาพรวมผู้ดูแลระบบ
เชื่อมต่อบัคเก็ตจัดเก็บข้อมูลแบบอ็อบเจ็กต์ที่เข้ากันได้ใน Nextcloud โดยใช้แบ็กเอนด์ S3 พร้อมด้วยเอนด์พอยต์ ข้อมูลรับรอง ขอบเขตการเข้าถึง และขั้นตอนการตรวจสอบที่ถูกต้อง