เริ่มจากบันทึกข้อผิดพลาด ไม่ใช่ดัชนีการค้นหาบนเซิร์ฟเวอร์ Kopano Core แบบคลาสสิก เครื่องมือค้นหาคือkopano-searchบริการ แพ็กเกจซอร์สโค้ดของ Debian อธิบายว่ารุ่นนี้เป็นตัวสร้างดัชนีแบบใช้กระบวนการซึ่งสร้างขึ้นบน python-kopano มันเชื่อมต่อกับkopano-serverเซิร์ฟเวอร์ รักษาดัชนีการค้นหาต่อร้านค้า และสามารถเรียกใช้เครื่องมือแยกวิเคราะห์ไฟล์แนบได้ โปรดตรวจสอบแพ็กเกจซอร์สโค้ดของ Kopano Searchโมดูล Python ที่หายไป ความไม่ตรงกันของซ็อกเก็ตเซิร์ฟเวอร์ ปัญหาด้านสิทธิ์หรือพื้นที่ดิสก์ หรือตัวแยกวิเคราะห์ไฟล์แนบที่ล้มเหลว อาจทำให้เกิดอาการที่แตกต่างกัน การรีสตาร์ทหรือลบดัชนีทั้งหมดก่อนที่จะระบุความล้มเหลวอาจซ่อนหลักฐานที่เป็นประโยชน์และสร้างงานเพิ่มขึ้น
คู่มือนี้ครอบคลุมการติดตั้งที่ใช้งานkopano-searchดีมอนแบบคลาสสิก รวมถึงแพ็กเกจ Kopano Core รุ่นเก่า เอกสาร Kopano ที่มีอยู่ในปัจจุบันสำหรับบริการนี้เป็นเวอร์ชันของ Kopano Core 8.0 ในขณะที่หน้าคู่มือที่เก็บถาวรของ Ubuntu ครอบคลุมเวอร์ชันแพ็กเกจที่เก่ากว่า เช่น 8.7 โปรดตรวจสอบเวอร์ชัน Kopano ที่ติดตั้งและคู่มือในเครื่องของคุณก่อนที่จะใช้คำสั่งเฉพาะเวอร์ชัน การใช้งาน Kopano Cloud หรือคอนเทนเนอร์อาจใช้ชื่อบริการและขั้นตอนการจัดการที่แตกต่างกัน
คุณควรตรวจสอบอะไรบ้างก่อนที่จะเปลี่ยนแปลงสิ่งใดๆ?
คุณต้องมีสิทธิ์เข้าถึงเชลล์เพื่ออ่านบันทึกและไฟล์การกำหนดค่าของ Kopano ก่อนที่จะแก้ไขการกำหนดค่าหรือแตะต้องไฟล์ดัชนี โปรดจดบันทึกเวอร์ชันของแพ็กเกจและสำรองข้อมูลการกำหนดค่าที่เกี่ยวข้อง อย่าคัดลอกเส้นทางดัชนีจากเซิร์ฟเวอร์อื่น: เส้นทางเริ่มต้นและเส้นทางที่กำหนดค่าไว้จะแตกต่างกันไปตามเวอร์ชันของแพ็กเกจ คู่มือผู้ดูแลระบบ Kopano อธิบายเกี่ยวกับ/etc/kopano/search.cfgไฟล์ดัชนีต่อร้านค้า ซ็อกเก็ตบริการ และการแยกวิเคราะห์ไฟล์แนบ นอกจากนี้ยังเตือนไม่ให้เปลี่ยนแปลงไฟล์ดัชนีในขณะที่บริการกำลังทำงานส่วนการกำหนดค่าการค้นหาของ Kopanoเป็นแหล่งอ้างอิงหลักสำหรับการตั้งค่าเหล่านั้น
1. ยืนยันว่า kopano-search เกิดข้อผิดพลาดจริง
บนระบบที่ใช้ systemd ให้ตรวจสอบหน่วยและรายการบันทึกข้อมูลล่าสุด:
sudo systemctl status kopano-search --no-pager
sudo journalctl -u kopano-search -b -n 100 --no-pager
มองหาความพยายามเริ่มต้นซ้ำๆ รหัสการออก การติดตามข้อผิดพลาดของ Python หรือข้อยกเว้นสุดท้ายที่เฉพาะเจาะจง บรรทัดสุดท้ายของการติดตามข้อผิดพลาดมักมีประโยชน์มากกว่าบรรทัดแรก เพราะระบุชื่อข้อผิดพลาดที่ทำให้กระบวนการหยุดลง หากการติดตั้งของคุณใช้สคริปต์ SysV init รุ่นเก่า ให้ตรวจสอบsudo service kopano-search statusและตรวจสอบไฟล์บันทึกที่กำหนดค่าไว้หรือบันทึกระบบแทน บริการอาจบันทึกไปยังไฟล์หรือ syslog ขึ้นอยู่กับsearch.cfgดังนั้นบันทึกที่ว่างเปล่าไม่ได้พิสูจน์ว่าไม่มีข้อผิดพลาดเกิดขึ้น
ตรวจสอบสถานะของบริการ Kopano Search ก่อน สถานะที่ล้มเหลวในตัวอย่างนี้เป็นเพียงตัวอย่างเท่านั้น โปรดเปรียบเทียบกับผลลัพธ์ของเซิร์ฟเวอร์ของคุณเอง
บันทึกบรรทัดบันทึกที่เกี่ยวข้องก่อนรีสตาร์ท หากบริการหยุดทำงานและ systemd เริ่มทำงานอีกครั้ง คุณต้องการทราบว่าทุกครั้งที่พยายามล้มเหลวในขั้นตอนเดียวกันหรือไม่ หรือมีเหตุการณ์ใดเหตุการณ์หนึ่งที่ทำให้เกิดการขัดข้อง
2. ตรวจสอบว่าบริการค้นหาสามารถเชื่อมต่อกับเซิร์ฟเวอร์ Kopano ได้หรือไม่
โปรแกรมค้นหาต้องเชื่อมต่อกับซ็อกเก็ตของ Kopano Server ที่ถูกต้อง ตรวจสอบทั้งสองบริการและเปรียบเทียบค่าซ็อกเก็ตที่กำหนดค่าไว้:
sudo systemctl status kopano-server --no-pager
sudo grep -E '^(server_socket|search_socket|search_enabled)[[:space:]]*=' /etc/kopano/server.cfg /etc/kopano/search.cfg
ชุดคีย์ที่ใช้อาจแตกต่างกันไปในแต่ละเวอร์ชัน ในการกำหนดค่า Core แบบคลาสสิก คีย์นี้search_enabled = yesจะเปิดใช้งานการค้นหาแบบเต็มข้อความในserver.cfg; search_socketและบอกเซิร์ฟเวอร์ว่าจะติดต่อบริการค้นหาจากที่ใด การตั้งค่าของบริการค้นหาserver_socketจะชี้กลับไปยังเซิร์ฟเวอร์ Kopano การไม่ตรงกัน ซ็อกเก็ตที่หายไป หรือเซิร์ฟเวอร์ที่หยุดทำงาน อาจทำให้เกิดข้อผิดพลาดในการเชื่อมต่อที่ดูเหมือนว่าการค้นหาจะล้มเหลว เซิร์ฟเวอร์สามารถเปลี่ยนไปใช้การค้นหาฐานข้อมูลโดยตรงในขณะที่ซ็อกเก็ตการค้นหาไม่พร้อมใช้งาน แต่การจัดทำดัชนีแบบเต็มข้อความจะไม่กลับมาทำงานจนกว่าบริการค้นหาจะกลับมาทำงานได้ตามปกติ
ใช้บันทึกการบริการเพื่อระบุประเภทของความล้มเหลว คำสั่งและข้อความเตือนแสดงไว้เพื่อเป็นแนวทางเท่านั้น ผลลัพธ์จะขึ้นอยู่กับการกำหนดค่าการบันทึกของคุณ
3. จับคู่แพ็กเกจ Python กับการสร้าง Kopano
kopano-searchใช้การเชื่อมต่อ Python ของ Kopano และส่วนประกอบ MAPI ดั้งเดิมImportErrorข้อผิดพลาด เช่น ขาดไลบรารีที่ใช้ร่วมกัน หรือข้อผิดพลาดในการโหลดโมดูล อาจปรากฏขึ้นหลังจากการอัปเกรดบางส่วน การเปลี่ยนแปลงที่เก็บ หรือการติดตั้งแพ็กเกจ Python ด้วยตนเอง บันทึกแพ็กเกจที่ติดตั้งและตัวแปลภาษาที่ใช้โดยไฟล์ปฏิบัติการที่บรรจุไว้:
dpkg-query -W 'kopano-search' 'python*kopano*' 'python*mapi*' 2>/dev/null
p=$(command -v kopano-search) && head -n 1 "$p"
คำสั่งที่สองจะมีประโยชน์ก็ต่อเมื่อkopano-searchพบอยู่ในพาธของเชลล์ปัจจุบันเท่านั้น เปรียบเทียบรายละเอียดเหล่านี้กับที่เก็บและคำแนะนำในการติดตั้งสำหรับชุดแพ็กเกจ Kopano ที่คุณใช้งานจริง หากเซิร์ฟเวอร์ได้รับการจัดการด้วย RPM, คอนเทนเนอร์ หรืออุปกรณ์ของผู้จำหน่าย ให้ใช้เครื่องมือแพ็กเกจของแพลตฟอร์มนั้นแทนคำสั่ง Debian ข้างต้น
อย่าซ่อมแซมเซิร์ฟเวอร์ Kopano ที่ติดตั้งไว้แล้วโดยการใช้sudo pip installPython ของระบบ Python-MAPI มีส่วนประกอบพื้นฐาน และการผสมผสานส่วนประกอบเหล่านี้กับแพ็กเกจ Python ที่ไม่เกี่ยวข้องอาจทำให้ตัวแปลภาษาพบโมดูลที่ไม่เข้ากัน ให้กู้คืนหรือติดตั้งแพ็กเกจ Kopano ที่ตรงกันจากที่เก็บที่เชื่อถือได้เดียวกัน จากนั้นรีสตาร์ทบริการและตรวจสอบบันทึกอีกครั้ง หากเครื่องได้รับการอัปเกรดข้ามเวอร์ชันระบบปฏิบัติการ ให้ตรวจสอบว่าที่เก็บ Kopano รองรับระบบปฏิบัติการ/Python นั้นๆ ก่อนที่จะพยายามติดตั้งแพ็กเกจใหม่
4. ตรวจสอบสิทธิ์การเข้าถึง พื้นที่ว่าง และการประมวลผลไฟล์แนบ
อ่าน การตั้งค่า index_path, log_file, tmp_path, และ attachment-parser ที่กำหนดค่าไว้ใน/etc/kopano/search.cfgไฟล์ . ตรวจสอบให้แน่ใจว่าระบบไฟล์มีพื้นที่ว่าง และบัญชีบริการสามารถเขียนไปยังตำแหน่งที่การกำหนดค่ากำหนดไว้ได้ ตัวอย่างเช่น:
df -h /var/lib/kopano /var/log
sudo namei -l /var/lib/kopano/search
แทนที่ไดเร็กทอรีดัชนีตัวอย่างด้วยค่าในไฟล์การกำหนดค่าของคุณเอง ข้อผิดพลาดเช่น “ปฏิเสธการเข้าถึง” “พื้นที่ไม่เพียงพอ” หรือการสร้างไฟล์ชั่วคราวล้มเหลว บ่งชี้ถึงการเข้าถึงพื้นที่จัดเก็บข้อมูลมากกว่าการทำงานผิดพลาดทั่วไปของ Python คืนค่าเจ้าของและสิทธิ์ที่ต้องการโดยใช้ค่าเริ่มต้นของแพ็กเกจที่ระบุไว้ในเอกสารของเซิร์ฟเวอร์ของคุณ อย่าเปลี่ยนความเป็นเจ้าของแบบวนซ้ำในทุกพื้นที่/var/lib/kopanoโดยไม่ตรวจสอบว่าบริการอื่นใดใช้พื้นที่นั้นบ้าง
หากการติดตามข้อผิดพลาดหรือช่วงเวลาบ่งชี้ว่าเกี่ยวข้องกับการแยกไฟล์แนบ ให้ตรวจสอบว่ามีการเรียกใช้ฟังก์ชันดังกล่าวหรือไม่index_attachments = yesรวมindex_attachment_parserถึงฐานข้อมูลตัวแยกวิเคราะห์และยูทิลิตี้ภายนอกที่เรียกใช้ คู่มือ Kopano อธิบายว่าเนื้อหาของไฟล์แนบจะถูกแปลงเป็นข้อความโดยสคริปต์ที่กำหนดค่าไว้ และสามารถตั้งค่าขนาดไฟล์แนบ หน่วยความจำ และข้อจำกัดของ CPU ได้ ในการวินิจฉัย คุณสามารถตั้งค่าชั่วคราวindex_attachments = noรีสตาร์ทบริการ และดูว่าข้อผิดพลาดหยุดลงหรือไม่ การดำเนินการนี้จะปิดใช้งานการค้นหาภายในเนื้อหาของไฟล์แนบ แต่จะไม่ปิดใช้งานการจัดทำดัชนีเนื้อหาข้อความ หากข้อผิดพลาดหายไป ให้ซ่อมแซมตัวแยกวิเคราะห์หรือส่วนประกอบที่เกี่ยวข้องก่อนที่จะเปิดใช้งานการจัดทำดัชนีไฟล์แนบอีกครั้ง
ตัวอย่างการกำหนดค่าแสดงการตั้งค่า index path และ attachment โปรดตรวจสอบคู่มือการติดตั้งและไฟล์ปัจจุบันของคุณก่อนเปลี่ยนแปลงค่าใดๆ
5. สร้างดัชนีร้านค้าที่ได้รับผลกระทบขึ้นใหม่เฉพาะเมื่อบันทึกชี้ให้เห็นถึงความเสียหายของดัชนีเท่านั้น
การสร้างดัชนีใหม่เหมาะสมเมื่อบริการเริ่มต้นทำงานได้อย่างถูกต้อง แต่ล้มเหลวซ้ำ ๆ ขณะเปิดหรืออัปเดตดัชนีของที่เก็บข้อมูลใดที่หนึ่ง หรือเมื่อบันทึกของ Kopano ระบุว่าดัชนีนั้นเสียหาย นี่ไม่ใช่วิธีแก้ไขแรกสำหรับข้อผิดพลาดในการนำเข้า Python ข้อผิดพลาดการไม่ตรงกันของซ็อกเก็ต หรือดิสก์เต็ม
คู่มือผู้ดูแลระบบของ Kopano ระบุว่าให้หยุดkopano-searchก่อนที่จะลบไฟล์ดัชนีของร้านค้าแต่ละแห่ง นอกจากนี้ยังอธิบายถึงไฟล์สถานะในไดเร็กทอรีดัชนี ดังนั้นอย่าลบไดเร็กทอรีทั้งหมดหรือดัชนีของผู้ใช้ทั้งหมดเป็นการซ่อมแซมตามปกติ ก่อนอื่นให้สำรองไฟล์ดัชนีที่เกี่ยวข้องและยืนยันตัวตนและเส้นทางของผู้ใช้หรือร้านค้า หากman kopano-searchเอกสาร ในเครื่องของคุณ --reindexระบุตัวเลือกนี้ ให้เลือกใช้ไวยากรณ์ที่รองรับโดยแพ็กเกจสำหรับการสร้างร้านค้าใหม่หนึ่งแห่ง รูปแบบของตัวเลือกจะแตกต่างกันไปในแต่ละเวอร์ชันที่เก็บถาวร ตัวอย่างเช่น คู่มือ Ubuntu Focal ระบุตัวเลือกการสร้างดัชนีใหม่แบบกำหนดเป้าหมายและระบุว่าต้องเปิดใช้งาน daemon อยู่แล้ว
การสร้างระบบใหม่ครั้งใหญ่สามารถใช้พื้นที่ดิสก์และ CPU มาก และผลการค้นหาอาจไม่สมบูรณ์ในขณะที่การจัดทำดัชนีกำลังดำเนินการอยู่ หากคุณไม่แน่ใจว่าไฟล์จัดเก็บข้อมูลใดได้รับผลกระทบ ให้หยุดก่อนที่จะลบสิ่งใดๆ และรวบรวมบันทึกการบริการ เวอร์ชันแพ็กเกจ และการกำหนดค่าindex_pathเพื่อติดต่อผู้ดูแลระบบ Kopano หรือช่องทางการสนับสนุน
ไวยากรณ์การสร้างดัชนีใหม่ขึ้นอยู่กับเวอร์ชันของ Kopano ที่ติดตั้งไว้ ให้ใช้คู่มือในเครื่องและกำหนดเป้าหมายไปยังร้านค้าที่ได้รับการยืนยันแล้วหนึ่งแห่ง แทนที่จะลบไดเร็กทอรีดัชนีทั้งหมด
6. เริ่มการทำงานใหม่และตรวจสอบผลลัพธ์
เมื่อคุณแก้ไขสาเหตุแล้ว ให้รีสตาร์ทเฉพาะบริการค้นหาเท่านั้น:
sudo systemctl restart kopano-search
sudo systemctl status kopano-search --no-pager
sudo journalctl -u kopano-search -b -n 50 --no-pager
สำหรับการติดตั้งบน SysV ให้ใช้คำสั่งบริการที่ระบุไว้ในเอกสารของแพ็กเกจนั้น ตรวจสอบให้แน่ใจว่ากระบวนการยังคงทำงานอยู่ ข้อผิดพลาดเดิมไม่ปรากฏซ้ำอีก และซ็อกเก็ตการค้นหาปรากฏขึ้นหลังจากสร้างดัชนีเริ่มต้นแล้ว Kopano ระบุว่าซ็อกเก็ตอาจไม่ถูกสร้างขึ้นจนกว่าดัชนีเริ่มต้นจะถูกสร้างเสร็จ ทดสอบการค้นหาอีเมลตามปกติ และหากเปิดใช้งานการจัดทำดัชนีไฟล์แนบ ให้ทดสอบไฟล์แนบที่รู้จักหลังจากที่ตัวแยกวิเคราะห์ได้รับการแก้ไขแล้วเท่านั้น
คู่มือการวินิจฉัยอย่างรวดเร็ว
| บันทึกอาการ | ตรวจสอบครั้งแรก |
|---|
Python ImportErrorหรือโมดูลที่หายไป | เวอร์ชันของแพ็กเกจและการผูก Python; ยกเลิกการใช้แหล่งที่มาของแพ็กเกจที่ผสมกัน |
| การเชื่อมต่อถูกปฏิเสธหรือซ็อกเก็ตหายไป | kopano-serverสถานะและการกำหนดค่าซ็อกเก็ตที่ตรงกัน |
| สิทธิ์การเข้าถึงหรือข้อผิดพลาดของดิสก์ | กำหนดค่าเส้นทางไฟล์บันทึก ไฟล์ชั่วคราว และไฟล์ดัชนี พื้นที่ว่าง และสิทธิ์การเข้าถึงของผู้ใช้บริการ |
| เกิดข้อผิดพลาดขณะติดตั้งอุปกรณ์ยึดตัวหนึ่ง | คำสั่งการแยกวิเคราะห์ไฟล์แนบ, การพึ่งพาของตัวแยกวิเคราะห์ และข้อจำกัดด้านขนาด |
| การเปิดดัชนีร้านค้าล้มเหลวซ้ำๆ | สำรองข้อมูลและจัดทำดัชนีใหม่เฉพาะร้านค้าที่ได้รับการยืนยันแล้วโดยใช้ไวยากรณ์เวอร์ชันท้องถิ่น |
วิธีแก้ไขที่น่าเชื่อถือที่สุดคือการแก้ไขข้อผิดพลาดในบันทึก: ซ่อมแซมสภาพแวดล้อมของแพ็กเกจสำหรับความล้มเหลวในการนำเข้า Python กู้คืนซ็อกเก็ตที่ถูกต้องสำหรับความล้มเหลวในการเชื่อมต่อ แก้ไขเส้นทางหรือตัวแยกวิเคราะห์เฉพาะสำหรับข้อผิดพลาดในการเข้าถึงและการดึงข้อมูล และทำการจัดทำดัชนีใหม่เฉพาะเมื่อมีหลักฐานชี้ไปที่ข้อมูลดัชนีที่เสียหาย คู่มือ Kopano ที่มีอยู่ครอบคลุมเวอร์ชัน Core เก่ากว่า ดังนั้นควรใช้คู่มือเหล่านั้นควบคู่ไปกับคู่มือของแพ็กเกจเอง แทนที่จะสันนิษฐานว่าการใช้งานในปัจจุบันทั้งหมดใช้ตัวจัดการบริการหรือไวยากรณ์ตัวเลือกเดียวกัน