2016-05-06 8 views
8

बस मुझे बताएं कि मैं फास्टसीजीआई में नया हूं। मेरे पास ओएस एक्स मशीन पर एमएएमपी का अपाचे है। डिफ़ॉल्ट PHP हैंडलर Apache Handler 2.0 (libphp5.so) था। मैं FastCGI को बदलना चाहते हैं और यहाँ जवाब का पालन किया: How to configure Apache to run PHP as FastCGI on Ubuntu 12.04 via terminal?Apache FastCGI PHP में FastCgiExternalServer और FastCgiServer के बीच अंतर?

मैं अपने httpd.conf के अंत में निम्नलिखित कहा:

<IfModule mod_fastcgi.c> 
    AddHandler php5.fcgi .php 
    Action php5.fcgi /php5.fcgi 
    Alias /php5.fcgi /Applications/MAMP/fcgi-bin/php5.fcgi 
    FastCgiServer /Applications/MAMP/fcgi-bin/php5.fcgi -socket /Applications/MAMP/tmp/php-fcgi/php5-fpm.sock -pass-header Authorization -idle-timeout 3600 
    #FastCgiExternalServer /Applications/MAMP/fcgi-bin/php5.fcgi -socket /Applications/MAMP/tmp/php-fcgi/php5-fpm.sock -pass-header Authorization -idle-timeout 3600 
    <Directory /Applications/MAMP/fcgi-bin> 
     Order allow,deny 
     Allow from all 
    </Directory> 
</IfModule> 

लेकिन, जैसा कि आप देख सकते हैं, FastCgiExternalServer बाहर टिप्पणी की है। इसके बजाय, मैं FastCgiServer कारण उपयोग करने के लिए अन्यथा अपाचे मुझे निम्न त्रुटियां दे रहा था जब एक पृष्ठ का अनुरोध करने की कोशिश कर रहा था:

[शुक्र मई 06 23:25:22 2016] [त्रुटि] [ग्राहक :: 1] (2) ऐसी कोई फ़ाइल या निर्देशिका नहीं: FastCGI: सर्वर से कनेक्ट करने में विफल "/Aplplications/MAMP/fcgi-bin/php5.fcgi": कनेक्ट() विफल

[शुक्र मई 06 23:22:22 2016] [ त्रुटि] [ग्राहक :: 1] FastCGI: अधूरा हेडर (0 बाइट्स) सर्वर से "/Applications/MAMP/fcgi-bin/php5.fcgi"

लेकिन /Applications/MAMP/fcgi-bin/php5.fcgi मौजूद है और उसकी सामग्री को है:

#!/bin/bash 
PHP_CGI=/Applications/MAMP/bin/php/php5.6.2/bin/php-cgi 
exec $PHP_CGI 

FastCgiServer और FastCgiExternalServer और क्यों FastCgiExternalServer मेरे मामले लेकिन FastCgiServer में काम नहीं किया काम के बीच क्या अंतर है?

+0

जानने mod_proxy_fcgi और php-एफ पी एम के बजाय mod_fastcgi को देखने के लिए स्रोत है। – covener

उत्तर

8

FastCgiServer एक सर्वर है जो mod_fastcgi कताई के उदाहरणों को ऊपर और नीचे के लिए प्रक्रिया प्रबंधन करेगा और उन्हें सुनने के लिए एक यूनिक्स डोमेन सॉकेट दे रहा है। Fastcgi सर्वर शुरू करने के लिए कोई बाहरी कार्रवाई की आवश्यकता नहीं है।

FastCgiExternalServer एक सर्वर है जो mod_fastcgi किसी भी प्रक्रिया प्रबंधन के लिए नहीं करेगा - यह केवल यूनिक्स या टीसीपी सॉकेट तक पहुंच जाएगा जो आप इसका उपयोग करने के लिए कहते हैं और अनुरोध/प्रतिक्रियाओं को आगे बढ़ाते हैं। आप, या httpd के बाहर कुछ डिमन, सूचीबद्ध सॉकेट पर कुछ सुनना शुरू कर देना चाहिए। सबसे बुनियादी तरीका 'fcgistarter' उपयोगिता है, अन्य विकल्प php-fpm जैसी चीजें हैं।

1

यदि प्रदर्शन कारण है, तो मैं एफसीजीआईडी ​​के साथ अपाचे का उपयोग कहूंगा। इसे प्रदर्शन के लिए बेहतर माना जाता है। प्रदर्शन से निपटने के लिए, mod_fcgid समवर्ती अनुरोधों को संभालने के लिए CGI प्रोग्राम के कई उदाहरण शुरू करता है। PHP डेवलपर्स के लिए यह mod_php के लिए वैकल्पिक है, जो उच्च प्रदर्शन प्रदान करता है। यह लेख मैंने पाया महान आप 2016 में पीएचपी FastCGI कर रहे हैं,

http://2bits.com/articles/apache-fcgid-acceptable-performance-and-better-resource-utilization.html

+0

बेहतर प्रदर्शन करने के लिए apache के बजाय nginx का उपयोग करें (Google: nginx apache प्रदर्शन देखें)। –

+0

@ KamilKiełczewski ने माना कि Nginx प्रदर्शन लाभ बोर्ड भर में सटीक नहीं है। स्थिर सामग्री के लिए, हाँ, लेकिन गतिशील सामग्री नहीं, जहां वे लगभग बराबर हैं। Googling से एक उदाहरण पृष्ठ: http: //www.hostingadvice।com/how-to/nginx-vs-apache/ – jeffmcneill

+0

@jeffmcneill लेकिन भविष्य की वेब दिशा स्थिर क्लाइंट (उदाहरण के लिए कोणीय 2 पर निर्माण) गतिशील पृष्ठ सामग्री उत्पन्न करने के लिए है (क्लाइंट स्थिर शुद्ध जेएस + एचटीएमएल + सीएसएस फाइलें और सभी गतिशीलता शुरू होती है इस स्थैतिक फाइलों को लोड करने और जेएस चलाने के बाद ब्राउज़र पक्ष पर) और वह ग्राहक केवल RESTfull अनुरोधों (जेसन, AJAX) द्वारा बैकएंड के साथ काम करता है - इसलिए स्थिर प्रदर्शन बहुत महत्वपूर्ण है :) इसलिए एमवीसी मॉडल में एम बैकएंड पर है, और वीसी चालू है frontend :) –

संबंधित मुद्दे