किसी अन्य फ़ाइल के साथ 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सभी पूल में फाइलें भरी हुई हैं, (उसी पूल में) के wwwmyappबाद के मूल्यों को पढ़ा जाएगा और पहले मूल्यों को ओवरराइड करना चाहिए।wwwwww

  • यह कुछ परीक्षणों में काम करने लगता है और किसी त्रुटि की सूचना नहीं है, लेकिन क्या यह हर समय और सभी मूल्यों के लिए काम करेगा?
  • क्या हमें इसके बजाय सीधे विन्यास फाइल को ओवरराइट करना चाहिए?

किसी भी डॉक्टर में जवाब नहीं मिला, यहां तक ​​कि php.net पर भी।


कम से कम डेबियन / उबंटू आधारित वितरण में, अपग्रेड प्रक्रिया पूछती है कि क्या यह पुरानी कॉन्फ़िगरेशन फ़ाइलों को रखना चाहिए या पैकेज से अपग्रेड किए गए लोगों को स्थापित करना चाहिए। यह नई कॉन्फ़िगरेशन फ़ाइल को एक प्रत्यय के साथ स्थापित करेगा ताकि कोई उस तरह के परिवर्तनों की जांच कर सके। मुझे लगता है कि अन्य पैकेज प्रबंधकों में एक समान विशेषता है। इसलिए मुझे लगता है कि यह एक राय का विषय है। हालांकि, एक ही नाम के साथ पूल परिभाषाएँ होने से यह आवाज़ नहीं करता है कि यह भविष्य में भी काम करेगा।
टेरो किलकेनेन सेप

जवाबों:


15

दूसरे स्रोत से "आधिकारिक" पुष्टि नहीं मिल सकी, लेकिन यहां कुछ शोध करने के बाद कुछ परिणाम मिले हैं:

के स्रोत कोड का विश्लेषण php7.0-fpmऔर विशेष रूप से fpm-conf.c, ऐसा प्रतीत होता है

  • मुख्य कॉन्फ़िगरेशन फ़ाइल php-fpm.confपहले पढ़ी जाती है [ fpm_conf_load_ini_file ()]]
  • सभी includeनिर्देशों को क्रम में पढ़ा जाता है, ग्लोब () के लिए धन्यवाद फ़ाइलों की एक सूची देता है ,
  • प्रत्येक फ़ाइल को उसी fpm_conf_load_ini_file () द्वारा पार्स किया गया है ,
  • फ़ाइल में एक प्रविष्टि किसी भी पहले से निर्धारित मान को अधिलेखित करती है,
  • किसी भी नए includeमें प्रसंस्करण कार्य शामिल करने के लिए एक पुनरावर्ती कॉल होगा, और
  • ग्लोब () फ़ंक्शन नाम, डिफ़ॉल्ट रूप से क्रमबद्ध करता (कोई GLOB_NOSORTविकल्प)

इस प्रकार हम मान सकते हैं - कम से कम इस संस्करण में लेकिन यह वर्तमान कोड पर विचार करते हुए जल्द ही बदलने की संभावना नहीं है - कि यह pool.dवर्णानुक्रम में निर्देशिका कॉन्फ़िगरेशन फ़ाइलों को व्यवस्थित करने के लिए सुरक्षित है ; किसी भी पहले दर्ज किए गए मान को उसी नाम के साथ प्रविष्टि के बाद अधिलेखित किया जा रहा है जिसे बाद में पढ़ा गया है।

हमारे पास php-fpmवितरण फ़ाइलों को अछूता रखने के लिए कॉन्फ़िगरेशन फ़ाइलों को संभालने का एक साफ तरीका है , और कस्टम फ़ाइलों को नाम दिया गया है जिनमें वर्णानुक्रम में पैक किए गए लोगों की तुलना में अधिक है, जिसमें कुछ विकल्प होते हैं जिन्हें बदलना होगा।


डिफ़ॉल्ट कॉन्फ़िगरेशन को नहीं बदलने के लिए +1। मुझे हमेशा परेशानी होती है जब मैं उत्पादन पर्यावरण के लिए उस एक का उपयोग करता हूं क्योंकि यह अपग्रेड करते समय चूक से पीछे हट जाता है।
फ़ेडरिको गैली

पूल के तहत वैश्विक FPM ओवरराइड्स [global]खंड का उपयोग कर रहे हैं । उदा emergency_restart_threshold। Php7.1-fpm ubuntu (सर्वर 18) पर परीक्षण किया गया।
hrvoj3e

इसके अलावा, डिफ़ॉल्ट पूल नाम है, क्योंकि wwwओवरराइड करने के लिए एक ही रास्ता की तरह pool.d फ़ाइल नाम उपयोग कर रहा है wwwsomethingया के साथ शुरू x, yया z
hrvoj3e

धन्यवाद! मैंने अपनी फ़ाइल का नाम लिया है z-www-overrides.confऔर इसने [www]पूल के विकल्पों को ओवर किया है !
21

2

अगर आपके पास ph-overrides.ini जैसी कुछ फाइल है, तो आपको इसे कॉपी करना चाहिए

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

99 उपसर्ग निष्पादन के आदेश के कारण है


conf.dओवरराइड्स php-fpm.confचर (केवल pool.d/अंडर में [global]) को ओवरराइड नहीं कर सकते हैं ( भविष्य के स्वयं के लिए ध्यान दें)
hrvoj3e
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.