เรียกใช้งานงานเบื้องหลังของ ownCloud ได้อย่างน่าเชื่อถือด้วยตัวจับเวลา Systemd

หากหน้าผู้ดูแลระบบของ ownCloud รายงานว่างานเบื้องหลังไม่ได้ทำงาน การล้างข้อมูลที่จัดคิวไว้และงานที่กำหนดไว้ล่วงหน้าอื่นๆ อาจล่าช้าจนกว่าจะมีผู้เข้าเยี่ยมชมเว็บไซต์ บนเซิร์ฟเวอร์ Linux ที่จัดการโดย systemd ให้กำหนดค่าโหมดงานเบื้องหลังของ ownCloud เป็น Cron และใช้ตัวจับเวลาเพื่อเรียกใช้occ system:cronในนามบัญชีเว็บเซิร์ฟเวอร์ เอกสารประกอบของ ownCloud Server ในปัจจุบันแนะนำให้ใช้ cron ของระบบสำหรับงานเบื้องหลังทั่วไป และระบุอย่างชัดเจนว่าตัวจับเวลาของ systemd เป็นอีกวิธีหนึ่งในการกำหนดเวลาคำสั่ง

คู่มือนี้ใช้สำหรับ ownCloud Server Classic ที่ติดตั้งโดยตรงบนโฮสต์ Linux เท่านั้น ไม่สามารถใช้ได้กับ ownCloud Infinite Scale ซึ่งมีสถาปัตยกรรมที่แตกต่างกัน หรือกับอิมเมจ Docker อย่างเป็นทางการของ ownCloud ซึ่งมีการรัน cron ภายในอยู่แล้ว สำหรับ Docker ให้ปฏิบัติตามการตั้งค่าที่ระบุไว้ในเอกสารของอิมเมจแทนการสร้างตัวจับเวลาโฮสต์ตัวที่สอง ดูเอกสารงานพื้นหลังของ ownCloud Serverฉบับ ปัจจุบัน

ตรวจสอบคำสั่งก่อนทำการเปลี่ยนแปลงกำหนดการ

บริการ systemd จะกำหนดคำสั่งที่จะดำเนินการ โดยตัวจับเวลาจะเริ่มต้นบริการนั้นเป็นระยะ ก่อนอื่นให้ตรวจสอบเส้นทางการติดตั้ง ownCloud และบัญชีเซิร์ฟเวอร์ HTTP ตัวอย่างด้านล่างใช้/var/www/owncloudและwww-dataซึ่งพบได้ทั่วไปใน Debian และ Ubuntu ระบบปฏิบัติการ Linux อื่นๆ อาจใช้wwwrun, apacheหรือบัญชีอื่นๆ

เรียกใช้คำสั่ง ownCloud ด้วยตนเองโดยใช้บัญชีนั้น เพื่อแยกแยะความแตกต่างระหว่างคำสั่งที่เสียกับกำหนดการที่เสีย:

sudo -u www-data /usr/bin/php -f /var/www/owncloud/occ system:cron

เปลี่ยนไฟล์ปฏิบัติการ PHP และพาธให้occตรงกับเซิร์ฟเวอร์ของคุณ ownCloud แนะนำให้ใช้system:cronสำหรับงานเบื้องหลัง คู่มือเก่าๆ ที่ตั้งเวลาไว้cron.phpอาจอ้างอิงถึงพฤติกรรมแบบเดิม คำสั่งปัจจุบันอาจเสร็จสิ้นโดยไม่แสดงข้อความแสดงความสำเร็จ ดังนั้นให้ตรวจสอบสถานะการออกecho $?ทันทีหลังจากนั้น: 0หมายความว่าคำสั่งเสร็จสิ้นอย่างสำเร็จ หากแสดงข้อผิดพลาด ให้แก้ไขพาธ การติดตั้ง PHP CLI สิทธิ์ การเชื่อมต่อฐานข้อมูล หรือข้อผิดพลาดของ ownCloud ก่อน ตัวจับเวลาจะเรียกใช้คำสั่งที่ล้มเหลวเดิมซ้ำๆ หากคุณข้ามการตรวจสอบนี้

ตั้งค่า ownCloud เป็นโหมด Cron

ในการตั้งค่าผู้ดูแลระบบของ ownCloud ให้เปิดส่วนงานเบื้องหลังหรือ Cron แล้วเลือกCronนอกจากนี้ คุณยังสามารถตั้งค่าตัวกำหนดเวลาจากไดเร็กทอรีการติดตั้งได้โดยใช้คำสั่งต่อไปนี้:

cd /var/www/owncloud
sudo -E -u www-data php occ background:cron

คำสั่งนี้จะเลือกโหมด Cron; คำสั่งที่กำหนดไว้จะยังคงอยู่occ system:cronคู่มือ ownCloud ระบุว่าคำสั่งนี้เทียบเท่ากับการเลือก Cron ในหน้าผู้ดูแลระบบ Cron เหมาะสมกว่าสำหรับเซิร์ฟเวอร์ที่ต้องประมวลผลงานอย่างสม่ำเสมอ เนื่องจาก AJAX ขึ้นอยู่กับการเข้าชมหน้าเว็บและอาจทำให้งานค้างอยู่ระหว่างช่วงเวลาที่เงียบสงบ สำหรับการใช้งานส่วนตัวขนาดเล็ก AJAX อาจใช้งานง่ายกว่า แต่คาดเดาได้ยากกว่า

สร้างบริการ systemd และตัวจับเวลา

สร้าง/etc/systemd/system/owncloudcron.serviceโดยใช้บัญชี HTTP และเส้นทาง ownCloud จริงของคุณ:

[Unit]
Description=ownCloud background jobs

[Service]
Type=oneshot
User=www-data
WorkingDirectory=/var/www/owncloud
ExecStart=/usr/bin/php -f /var/www/owncloud/occ system:cron

Type=oneshotคำสั่งนี้จะบอก systemd ว่าคำสั่งทำงานจนเสร็จสมบูรณ์แล้วจึงออกจากโปรแกรม การระบุพาธ PHP แบบเต็มจะช่วยหลีกเลี่ยงการพึ่งพาPATHบริการระบบที่มีจำกัด ไดเร็กทอรีการทำงานจะช่วยให้ ownCloud สามารถระบุพาธสัมพัทธ์ได้ รักษาบัญชีบริการให้สอดคล้องกับเจ้าของไฟล์และสิทธิ์การเข้าถึงข้อมูลของ ownCloud อย่าเรียกใช้งานในฐานะ root

ขั้นตอนต่อไป ให้สร้าง/etc/systemd/system/owncloudcron.timer:

[Unit]
Description=Run ownCloud background jobs every 15 minutes

[Timer]
OnBootSec=5min
OnUnitActiveSec=15min
Unit=owncloudcron.service

[Install]
WantedBy=timers.target

คู่มือ ownCloud แนะนำให้ตั้งค่า cron ตัวอย่างมาตรฐานไว้ที่ 15 นาที และยอมรับตัวจับเวลา systemd เป็นตัวเลือกในการกำหนดเวลาแทน ตัวจับเวลานี้จะเริ่มทำงานห้านาทีหลังจากบูตเครื่อง และกำหนดเวลาให้ทำงานเพิ่มเติมอีก 15 นาทีหลังจากที่เปิดใช้งานบริการ หากปริมาณงานของคุณต้องการช่วงเวลาอื่น ให้เปลี่ยนOnUnitActiveSecอย่างรอบคอบและพิจารณาเวลาที่แต่ละครั้งต้องใช้ในการทำงานให้เสร็จสิ้น หลีกเลี่ยงการกำหนดค่ารายการ crontab อีกรายการสำหรับคำสั่งเดียวกัน เนื่องจากตัวกำหนดเวลาที่ซ้ำกันอาจเริ่มการทำงานที่ไม่จำเป็นและทำให้การแก้ไขปัญหาทำได้ยากขึ้น

สั่งให้ systemd โหลดคำจำกัดความหน่วยใหม่ จากนั้นเปิดใช้งานและเริ่มตัวจับเวลา:

sudo systemctl daemon-reload
sudo systemctl enable --now owncloudcron.timer

daemon-reloadจำเป็นต้องเปิดใช้งานหลังจากสร้างหรือแก้ไขไฟล์หน่วย การเปิดใช้งานตัวจับเวลาจะทำให้มันเริ่มต้นโดยอัตโนมัติหลังจากการบูตครั้งถัดไป หรือ--nowเริ่มต้นในเซสชันปัจจุบัน เปิดใช้งานหน่วยตัวจับเวลา ไม่ใช่แค่บริการ

ค้นหาสาเหตุที่การทำงานถูกข้ามหรือล้มเหลว

ตรวจสอบว่าตัวจับเวลาเปิดใช้งานอยู่หรือไม่ และจะทำงานครั้งต่อไปเมื่อใด:

systemctl is-enabled owncloudcron.timer
systemctl list-timers --all owncloudcron.timer
systemctl status owncloudcron.timer

ตัวจับเวลาที่เปิดใช้งานควรปรากฏในรายการตัวจับเวลาพร้อมกับการทำงานครั้งถัดไป หากไม่ปรากฏ ให้ตรวจสอบชื่อไฟล์ของหน่วย โหลด systemd ใหม่ และเปิดใช้งานตัวจับเวลาอีกครั้ง หากตัวจับเวลาแสดงว่าทำงานแล้ว แต่การทำงานของ ownCloud ยังคงล่าช้า ให้ตรวจสอบบริการและบันทึกของบริการนั้น:

systemctl status owncloudcron.service
sudo journalctl -u owncloudcron.service --since today

ตรวจสอบหาเส้นทางที่ไม่ถูกต้อง โฟลเดอร์ข้อมูลที่ไม่สามารถเข้าถึงได้ ส่วนขยาย PHP ที่หายไป หรือข้อผิดพลาดของฐานข้อมูล ทดสอบคำสั่งที่แน่นอนในไฟล์บริการด้วยตนเองเพื่อwww-dataให้ได้สภาพแวดล้อมที่ใกล้เคียงที่สุด นอกจากนี้ ตรวจสอบให้แน่ใจว่าคุณใช้คำสั่ง ownCloud occ system:cronแทนที่จะคัดลอกตัวอย่างจาก Nextcloud ที่เรียกใช้cron.php.

ตรวจสอบว่า ownCloud กำลังประมวลผลงานอยู่หรือไม่

หลังจากผ่านไปหนึ่งหรือสองช่วงเวลาของตัวจับเวลา ให้ตรวจสอบว่าบริการทำงานเสร็จสมบูรณ์แล้ว และตัวจับเวลาได้ตั้งเวลาให้ทำงานอีกครั้งในภายหลัง จากนั้นตรวจสอบสถานะงานเบื้องหลังในหน้าผู้ดูแลระบบ ownCloud เวลาที่ทำงานครั้งล่าสุดที่แสดงควรเลื่อนไปข้างหน้า และคำเตือน Cron ที่ค้างอยู่ควรหายไป หาก systemd รายงานว่าสำเร็จ แต่คำเตือนยังคงอยู่ ให้ตรวจสอบบันทึกแอปพลิเคชันของ ownCloud และตรวจสอบว่า UI บนเว็บเชื่อมต่อกับอินสแตนซ์และฐานข้อมูลเดียวกันกับที่ใช้ในการติดตั้งผ่านบรรทัดคำสั่งหรือไม่

สำหรับคอนเทนเนอร์ ownCloud อย่างเป็นทางการ ห้ามติดตั้งหน่วยโฮสต์เหล่านี้ เว้นแต่คุณจะปิดใช้งานตัวกำหนดเวลาภายในของคอนเทนเนอร์โดยเจตนา และเอกสารคอนเทนเนอร์ ownCloud ฉบับปัจจุบันรองรับการจัดเตรียมของคุณ การกำหนดค่าในที่นี้เป็นโซลูชันระดับโฮสต์สำหรับ ownCloud แบบคลาสสิกบน systemd ชื่อบริการ เส้นทาง เวอร์ชัน PHP และพฤติกรรมของคอนเทนเนอร์ขึ้นอยู่กับการใช้งานจริง

ฝากความเห็น

ลบเวอร์ชันไฟล์ ownCloud อย่างปลอดภัยด้วยคำสั่ง occ

ลบเวอร์ชันไฟล์ ownCloud อย่างปลอดภัยด้วยคำสั่ง occ

ลบไฟล์เวอร์ชัน ownCloud Server Classic ที่จัดเก็บไว้ทั้งหมดสำหรับบัญชีเดียวหรือผู้ใช้ทั้งหมด และแยกความแตกต่างระหว่างการลบแบบสมบูรณ์กับการหมดอายุตามระยะเวลาการเก็บรักษา

การเชื่อมต่อ ownCloud บนมือถือถูกปฏิเสธใช่หรือไม่? ตรวจสอบ URL และการเข้าถึง

การเชื่อมต่อ ownCloud บนมือถือถูกปฏิเสธใช่หรือไม่? ตรวจสอบ URL และการเข้าถึง

ตรวจสอบหาสาเหตุการปฏิเสธการเชื่อมต่อ ownCloud บนมือถือโดยตรวจสอบ URL ของเซิร์ฟเวอร์ เครือข่ายโทรศัพท์ จุดเชื่อมต่อ HTTPS และบันทึกของเซิร์ฟเวอร์ตามลำดับที่ถูกต้อง

เรียกใช้งานงานเบื้องหลังของ ownCloud ได้อย่างน่าเชื่อถือด้วยตัวจับเวลา Systemd

แทนที่การเรียกใช้งานงานตามความต้องการด้วยตัวจับเวลา systemd ที่เรียกใช้คำสั่ง occ system:cron ที่ ownCloud รองรับทุกๆ 15 นาที

กู้คืนการซิงค์ WebDAV ของ ownCloud โดยการค้นหาเส้นทางที่เสียหาย

ตรวจสอบการร้องขอ WebDAV ผ่าน Apache, Nginx หรือพร็อกซีแบบย้อนกลับ จากนั้นยืนยันว่าการซิงค์ ownCloud ทำงานได้โดยใช้การทดสอบ PROPFIND ที่มีการตรวจสอบสิทธิ์

ตั้งค่า URL สาธารณะของ Nextcloud เพื่อให้สามารถเข้าถึงได้ด้วยตัวเอง

แก้ไขข้อความเตือน "ที่อยู่ขาออกหายไป" ของ Nextcloud โดยการตั้งค่า URL หลัก และตรวจสอบ DNS, HTTPS และการกำหนดเส้นทางพร็อกซีแบบย้อนกลับจากตัวเซิร์ฟเวอร์เอง

ตั้งค่า Nextcloud Redis Caching บน Ubuntu 24.04

ตั้งค่า Nextcloud Redis Caching บน Ubuntu 24.04

ตั้งค่า APCu และ Redis ผ่านซ็อกเก็ต Unix ในเครื่องเพื่อใช้ในการแคชและล็อกไฟล์ของ Nextcloud โดยมีขั้นตอนสำหรับ Nextcloud เวอร์ชันปัจจุบันและเวอร์ชันเก่า

ตั้งค่าให้ Nextcloud Cron ทำงานโดยอัตโนมัติด้วย Systemd Timer

ตรวจสอบโหมด cron ของ Nextcloud ซ่อมแซมบริการ systemd และตัวจับเวลา และตรวจสอบว่างานเบื้องหลังทำงานหลังจากเริ่มต้นระบบและทุกๆ ห้านาที

ล้างคำเตือนการล็อกไฟล์ของ Nextcloud ด้วย Redis

เปิดใช้งานการล็อกไฟล์ที่เชื่อถือได้ของ Nextcloud เลือกแบ็กเอนด์ Redis หรือ Valkey ที่เหมาะสม และตรวจสอบว่าคำเตือนหายไปโดยไม่มีความเสี่ยงต่อการเปลี่ยนแปลงไฟล์พร้อมกัน

สิ่งที่ต้องทำเพื่อให้ได้คะแนนความปลอดภัยระดับ A+ บน Nextcloud

สิ่งที่ต้องทำเพื่อให้ได้คะแนนความปลอดภัยระดับ A+ บน Nextcloud

แก้ไขปัญหาที่พบได้ทั่วไปในการสแกน Nextcloud ด้วยการอัปเดตล่าสุด, HTTPS และ HSTS, การตั้งค่าความน่าเชื่อถือของพร็อกซีแบบย้อนกลับอย่างแม่นยำ และการตรวจสอบกับเซิร์ฟเวอร์สาธารณะ

เปิดใช้งานการเข้ารหัสฝั่งเซิร์ฟเวอร์ของ Nextcloud พร้อมวัดผลกระทบ

กำหนดค่า Nextcloud SSE สำหรับพื้นที่จัดเก็บข้อมูลที่ต้องการ ปกป้องคีย์การเข้ารหัส และวัดผลกระทบต่อการถ่ายโอนข้อมูลและ CPU ก่อนที่จะเข้ารหัสไฟล์ที่มีอยู่