Ghi đè giá trị cấu hình nhóm php-fpm bằng tệp khác


11

Phải tùy chỉnh cấu hình nhóm php-fpm của một máy chủ mới, tôi tự hỏi liệu có thể có / cho phép / có một tệp nhóm mới hay không, có tên theo thứ tự chữ cái sau tên gốc, chỉ có các giá trị ghi đè lên cấu hình ban đầu.

Các cấu hình ban đầu được /etc/php/7.0/fpm/pool.dđặt tên www.conf.

Dường như, theo các trang liên quan đến việc cài đặt, các kỹ sư sửa đổi trực tiếp bản gốc (lưu một bản sao của các giá trị ban đầu). Ví dụ

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

đưa ra sau khi sửa đổi

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

Nhưng dường như đó có thể là một nhiệm vụ được lặp lại sau lần nâng cấp tiếp theo của php-fpm (hơn nữa cấu hình nằm trong một 7.0đường dẫn, thật đáng lo ngại).

Thay vì sửa đổi tệp gốc, tôi muốn giữ nguyên tệp đó và thêm một tệp khác, giả sử wwwmyapp.confrằng sẽ khai báo cùng một nhóm và chỉ có các giá trị đã thay đổi

trong wwwmyapp.conf

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

trong pool.d, danh sách các tập tin

www.conf
wwwmyapp.conf

vì trong php-fpm.conftất cả các tệp conf pool được tải, các giá trị của wwwmyappsẽ được đọc sau các tệp của www(trong cùng một wwwnhóm) và sẽ ghi đè lên các giá trị đầu tiên.

  • Nó dường như hoạt động trong một vài thử nghiệm và không có lỗi nào được báo cáo, nhưng liệu nó có hoạt động mọi lúc và cho tất cả các giá trị không?
  • Thay vào đó chúng ta nên ghi đè tập tin cấu hình trực tiếp?

Không thể tìm thấy câu trả lời trong bất kỳ tài liệu nào, ngay cả trên php.net.


Ít nhất là trong các bản phân phối dựa trên Debian / Ubuntu, quá trình nâng cấp sẽ hỏi liệu có nên giữ các tệp cấu hình cũ hoặc cài đặt các tệp được nâng cấp từ gói không. Nó sẽ cài đặt tệp cấu hình mới với hậu tố để người ta có thể kiểm tra các thay đổi theo cách đó. Tôi giả sử các nhà quản lý gói khác có một tính năng tương tự. Vì vậy tôi nghĩ đó là vấn đề quan điểm. Tuy nhiên, việc có quá nhiều định nghĩa nhóm cùng tên không có vẻ như nó sẽ hoạt động trong tương lai.
Tero Kilkanen

Câu trả lời:


14

Không thể tìm thấy xác nhận "chính thức" từ một nguồn khác, nhưng đây là một số kết quả sau khi thực hiện một số nghiên cứu:

Phân tích mã nguồn php7.0-fpmvà cụ thể hơn fpm-conf.c, có vẻ như

  • tệp cấu hình chính php-fpm.confđược đọc trước [ fpm_conf_load_ini_file ()],
  • tất cả các includechỉ thị được đọc theo thứ tự, đưa ra danh sách các tệp nhờ global () ,
  • mỗi tệp được phân tích cú pháp bởi cùng một fpm_conf_load_ini_file (),
  • một mục trong tệp ghi đè lên bất kỳ giá trị nào được đặt trước đó,
  • bất kỳ cái mới nào includecũng sẽ có một cuộc gọi đệ quy đến hàm xử lý bao gồm và
  • hàm global () sắp xếp tên, theo mặc định (không có GLOB_NOSORTtùy chọn)

Do đó, chúng ta có thể giả định - ít nhất là trong phiên bản này nhưng điều này khó có thể thay đổi sớm khi xem xét mã hiện tại - rằng việc sắp xếp các pool.dtệp cấu hình thư mục theo thứ tự bảng chữ cái là an toàn ; bất kỳ giá trị được ghi lại trước đó được ghi đè bởi một mục có cùng tên được đọc sau.

Chúng tôi có một cách rõ ràng để xử lý các tệp cấu hình php-fpm, giữ cho các phân phối không bị ảnh hưởng và thêm các tệp tùy chỉnh có tên theo thứ tự chữ cái lớn hơn các tệp được đóng gói, có chứa một vài tùy chọn phải thay đổi.


+1 vì không thay đổi cấu hình mặc định. Tôi luôn gặp rắc rối khi sử dụng cái đó cho môi trường sản xuất vì nó được hoàn nguyên về mặc định trong khi nâng cấp.
Federico Galli

ghi đè toàn cầu FPM dưới pool.d được sử dụng [global]phần. ví dụ emergency_restart_threshold. Đã thử nghiệm trên php7.1-fpm ubfox (máy chủ 18).
hrvoj3e

Ngoài ra, vì tên nhóm mặc định là wwwcách duy nhất để ghi đè là sử dụng tên tệp pool.d như wwwsomethinghoặc bắt đầu bằng x, yhoặc z.
hrvoj3e

2

Trong trường hợp bạn có một số tệp như php-overrides.ini, bạn nên sao chép nó vào

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

99 tiền tố là do thứ tự thực hiện


conf.dghi đè không thể ghi đè php-fpm.confcác biến (chỉ ở pool.d/dưới [global]) (lưu ý đến bản thân trong tương lai)
hrvoj3e
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.