PHP-fpm 풀 구성 값을 다른 파일로 재정의


12

새 서버의 php-fpm 풀 구성을 사용자 정의 해야하는 경우 새 풀 파일을 가질 수 있는지 / 허용 / 권장하는지, 원래 이름보다 알파벳순으로 이름이 바뀌며 초기 구성을 무시하는 값만 있습니다.

원래 구성의 /etc/php/7.0/fpm/pool.d이름 은입니다 www.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풀) 및 제 값을 오버라이드 (override) 할 필요가 있습니다.

  • 그것은 몇 가지 테스트에서 작동하고 오류 가보고되지 않았지만 항상 모든 값에서 작동합니까?
  • 대신 설정 파일을 직접 덮어 써야합니까?

php.net에서도 모든 문서에서 답을 찾을 수 없습니다.


최소한 데비안 / 우분투 기반 배포판에서, 업그레이드 프로세스는 이전 설정 파일을 유지할 것인지 패키지에서 업그레이드 된 파일을 설치할 것인지 묻습니다. 새로운 구성 파일을 접미사로 설치하여 변경 사항을 확인할 수 있습니다. 다른 패키지 관리자도 비슷한 기능을 가지고 있다고 가정합니다. 그러므로 나는 그것이 의견의 문제라고 생각합니다. 그러나 같은 이름을 가진 풀 정의가 너무 많으면 앞으로도 효과가 없을 것 같습니다.
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것은 include 처리 기능에 대한 재귀 호출을 가지며
  • 글로브 () 함수는 기본적으로 이름을 정렬 (NO GLOB_NOSORT옵션)

따라서 우리는 적어도이 버전에서는 현재 코드를 고려하면 곧 변경 될 것 같지 않다는 것을 알 수 있습니다. pool.d디렉토리 구성 파일을 알파벳 순서 로 배열하는 것이 안전합니다 . 이전에 기록 된 값은 같은 이름을 가진 항목으로 덮어 씁니다.

php-fpm배포 파일을 그대로 유지하고 변경해야 할 옵션이 적은 패키지 파일보다 알파벳순으로 이름이 큰 사용자 정의 파일을 추가 하기 위해 구성 파일을 처리하는 깔끔한 방법이 있습니다 .


기본 구성을 변경하지 않으면 +1입니다. 업그레이드하는 동안 기본값으로 되돌려지기 때문에 프로덕션 환경에 사용하면 항상 문제가 있습니다.
Federico Galli

pool.d 아래의 전역 FPM 재정의는 [global]섹션을 사용하는 것이 가능 합니다. 예 emergency_restart_threshold. php7.1-fpm 우분투 (서버 18)에서 테스트되었습니다.
hrvoj3e

기본 풀 이름이 있기 때문에, www오버라이드 (override)하는 유일한 방법은 같은 pool.d 파일 이름을 사용 wwwsomething하거나 시작으로 x, y또는 z.
hrvoj3e

감사! 내 파일 이름을 지정 z-www-overrides.conf했으며 [www]풀 옵션을 오버라이드했습니다 !
IStranger

2

u에 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.