แทนที่ค่าคอนฟิก php-fpm pool ด้วยไฟล์อื่น


12

ต้องปรับแต่งการกำหนดค่าพูล php-fpm ของเซิร์ฟเวอร์ใหม่ฉันสงสัยว่ามันเป็นไปได้ / อนุญาต / แนะนำให้มีไฟล์พูลใหม่ซึ่งชื่อจะเรียงตามตัวอักษรหลังจากเดิมซึ่งมีเฉพาะค่าที่แทนที่การตั้งค่าเริ่มต้น

การกำหนดค่าเดิมในชื่อ/etc/php/7.0/fpm/pool.dwww.conf

ดูเหมือนว่าตามหน้าเว็บที่เกี่ยวข้องกับการติดตั้งวิศวกรจะปรับเปลี่ยนต้นฉบับโดยตรง (บันทึกสำเนาของค่าเริ่มต้น) เช่น

[www]
...
user www-data
group www-data
pm.max_children 2

ให้หลังจากการดัดแปลง

[www]
...
user myapp         ; was www-data
group myapp        ; was www-data
pm.max_children 8  ; was 2

แต่ดูเหมือนว่าจะเป็นงานที่ต้องทำซ้ำหลังจากการอัพเกรด php-fpm ครั้งถัดไป (นอกจากนี้การกำหนดค่าอยู่ใน7.0เส้นทางที่กังวล)

แทนที่จะแก้ไขไฟล์ต้นฉบับฉันต้องการเก็บไว้ไม่เปลี่ยนแปลงและเพิ่มอีกไฟล์หนึ่งบอกwwwmyapp.confว่าจะประกาศพูลเดียวกันและมีเฉพาะค่าที่เปลี่ยนไป

ใน wwwmyapp.conf

[www]        ; same pool!
user myapp
group myapp
pm.max_children 8

ในpool.dรายการไฟล์

www.conf
wwwmyapp.conf

เนื่องจากphp-fpm.confมีการโหลดไฟล์พูล conf ทั้งหมดค่าของwwwmyappจะถูกอ่านหลังค่าwww(ในwwwพูลเดียวกัน) และควรแทนที่ค่าแรก

  • ดูเหมือนว่าจะทำงานในการทดสอบบางอย่างและไม่มีการรายงานข้อผิดพลาด แต่มันจะทำงานตลอดเวลาและสำหรับค่าทั้งหมดหรือไม่
  • เราควรเขียนทับไฟล์กำหนดค่าโดยตรงแทนหรือไม่

ไม่พบคำตอบในเอกสารใด ๆ แม้แต่ใน php.net


อย่างน้อยที่สุดในการแจกแจงแบบอิง Debian / Ubuntu กระบวนการอัพเกรดจะถามว่าควรเก็บไฟล์การกำหนดค่าเก่าหรือติดตั้งชุดอัพเกรดจากแพ็คเกจหรือไม่ มันจะติดตั้งไฟล์กำหนดค่าใหม่ด้วยคำต่อท้ายเพื่อให้หนึ่งสามารถตรวจสอบการเปลี่ยนแปลงในวิธีที่ ฉันถือว่าผู้จัดการแพ็คเกจคนอื่นมีคุณสมบัติคล้ายกัน ดังนั้นฉันคิดว่ามันเป็นเรื่องของความเห็น อย่างไรก็ตามการมีคำจำกัดความของสระว่ายน้ำที่มีชื่อเดียวกันมากเกินไปนั้นไม่น่าจะเป็นไปได้ในอนาคต
Tero Kilkanen

คำตอบ:


15

ไม่พบการยืนยัน "เป็นทางการ" จากแหล่งอื่น แต่นี่คือผลลัพธ์บางส่วนหลังจากทำการวิจัยบางอย่าง:

การวิเคราะห์รหัสที่มาของphp7.0-fpmและโดยเฉพาะอย่างยิ่งfpm-conf.cปรากฏว่า

  • ไฟล์การกำหนดค่าหลักphp-fpm.confถูกอ่านก่อน [ fpm_conf_load_ini_file ()],
  • ทุกincludeคำสั่งจะอ่านเพื่อให้รายชื่อของไฟล์ต้องขอบคุณglob () ,
  • แต่ละไฟล์แยกวิเคราะห์โดยfpm_conf_load_ini_fileเดียวกัน()
  • รายการในไฟล์จะเขียนทับค่าที่ตั้งไว้ก่อนหน้านี้
  • ใหม่includeจะมีการเรียกซ้ำเพื่อฟังก์ชั่นการประมวลผลรวมและ
  • glob () ฟังก์ชันเรียงลำดับชื่อตามค่าเริ่มต้น (ไม่มีGLOB_NOSORTตัวเลือก)

ดังนั้นเราจึงสามารถสันนิษฐานได้ว่า - อย่างน้อยในรุ่นนี้ แต่ไม่น่าจะเปลี่ยนแปลงเร็ว ๆ นี้เมื่อพิจารณารหัสปัจจุบัน - มันปลอดภัยที่จะจัดเรียงpool.dไฟล์การกำหนดค่าไดเรกทอรีตามลำดับตัวอักษร; ค่าที่บันทึกไว้ก่อนหน้านี้ใด ๆ จะถูกเขียนทับโดยรายการที่มีชื่อเดียวกันอ่านหลังจาก

เรามีวิธีที่สะอาดในการจัดการไฟล์การตั้งค่าphp-fpmรักษาการแจกจ่ายไม่ถูกแตะต้องและเพิ่มไฟล์ที่กำหนดเองที่มีชื่อตามตัวอักษรมากกว่าไฟล์ที่บรรจุซึ่งมีตัวเลือกไม่กี่ตัวที่ต้องเปลี่ยน


+1 สำหรับการไม่เปลี่ยนการกำหนดค่าเริ่มต้น ฉันมักจะมีปัญหาเมื่อฉันใช้อันนั้นสำหรับสภาพแวดล้อมการผลิตเพราะมันจะถูกเปลี่ยนกลับเป็นค่าเริ่มต้นในขณะที่อัพเกรด
Federico Galli

การแทนที่ FPM ทั่วโลกภายใต้ pool.d นั้นเป็นไปได้ที่จะใช้[global]ส่วน emergency_restart_thresholdเช่น ทดสอบกับ php7.1-fpm ubuntu (เซิร์ฟเวอร์ 18)
hrvoj3e

นอกจากนี้เนื่องจากชื่อสระว่ายน้ำเริ่มต้นเป็นwwwวิธีเดียวที่จะแทนที่คือการใช้ชื่อไฟล์ pool.d เหมือนwwwsomethingหรือเริ่มต้นด้วยx, หรือy z
hrvoj3e

ขอบคุณ! ฉันตั้งชื่อไฟล์ของฉันแล้วz-www-overrides.confมันเป็น[www]ตัวเลือกที่ถูกแทนที่ด้วยพูล!
IStranger

2

ในกรณีที่คุณมีไฟล์เช่น php-overrides.ini คุณควรคัดลอกไปที่

/etc/php/7.0/fpm/conf.d/99-overrides.ini

คำนำหน้า 99 เนื่องจากคำสั่งของการดำเนินการ


conf.dการแทนที่ไม่สามารถแทนที่php-fpm.confตัวแปร (เฉพาะในpool.d/ภายใต้[global]) (หมายเหตุถึงตนเองในอนาคต)
hrvoj3e
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.