2015-09-08 9 views
7

पर पृथक vhosts में अपाचे mod_php और mod_fastcgi चलाना तो, मुझे एक सर्वर पर एकाधिक php ऐप्स/साइट्स चलाने की आवश्यकता है। एक या कई को apache और mod_php5 का उपयोग करना चाहिए, और एक या कई mod_fastcgi और php-fpm का उपयोग करके चलाने में सक्षम होना चाहिए। Mod_php5 वाले वर्तमान में ठीक हैं, और fastcgi लोग काम करते हैं अगर मैं mod_php5 अक्षम करता हूं, लेकिन मुझे एक ही समय में काम करने में कठिनाई हो रही है।एक अपाचे सर्वर

मुझे लगता है कि यह फाइलमैच के कुछ संयोजन, if.mod_fastcgi और if.mod_actions अपाचे में उपयोग करके हासिल किया जा सकता है, लेकिन मैं यह नहीं कर सकता कि यह क्या है। यदि आवश्यक हो तो हम ऐसा करने के लिए आवश्यक किसी भी अपाचे मॉड्यूल को इंस्टॉल कर सकते हैं।

सुपर बोनस अंक अगर वहाँ अपाचे 2.2 या उससे कम के लिए vhost का एक अलग संस्करण है और आपको लगता है कि टुकड़ा भी है, या कम से कम पता है मुझे क्या करना चाहिए

इम पूरे vhosts मैं पोस्ट करने के लिए नहीं जा रहा के रूप में मुझे पता है वे गलत हैं, लेकिन पहले, डिफ़ॉल्ट, mod_php आधारित vhosts इसलिए की तरह देख रहे हैं ...

#NameVirtualHost 127.0.0.1:80  < Apache 2.2 or less  
<VirtualHost 127.0.0.1:80> 
    ServerAdmin [email protected] 
    ServerName some.site.tld 
    DocumentRoot /var/www/some/site/ 
    <Directory /var/www/some/site/> 
    Options Indexes FollowSymLinks MultiViews 
    Require all granted 
#    Order deny,allow  < Apache 2.2 or less 
#    Allow from all  < Apache 2.2 or less 
    </Directory> 
    ErrorLog /var/log/apache2/error.log 
    CustomLog /var/log/apache2/access.log combined 
</VirtualHost> 

आदर्श रूप में, मैं इन अछूता रहने के लिए चाहते हैं, और हम और अधिक अगर हम जोड़ सकते हैं कि इनमें से अधिक की आवश्यकता है।

जो परिणाम मैं चाहता हूं, वह पहले कॉन्फ़िगरेशन की तरह कुछ का उपयोग करके mod_php के लिए कॉन्फ़िगर किए गए नए vhosts में ड्रॉप करने में सक्षम होना चाहिए, और फास्ट सीजीआई के लिए निम्न जैसे vhosts में भी ड्रॉप करना है।

# NameVirtualHost 0.0.0.0:80 < Apache 2.2 or Less 
<VirtualHost 0.0.0.0:80> 
    ServerAdmin [email protected] 
    ServerName some.application.tld 
    DocumentRoot /opt/some/app/dir/ 
    ErrorLog /var/log/apache2/error.log 
    CustomLog /var/log/apache2/access.log combined 
    <IfModule mod_fastcgi.c> 
    #  php_admin_flag engine off < I tried to use this to disable PHP 
    AddType application/x-httpd-fastphp5 .php 
    Action application/x-httpd-fastphp5 /php5-fcgi 
    Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi_someapp 
    FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi_someapp -socket /var/run/php5-fpm_ptbuild.sock -pass-header Authorization 
    <Directory /usr/lib/cgi-bin> 
     Options Indexes FollowSymLinks MultiViews ExecCGI 
     Require all granted 
    </Directory> 
    <Directory /opt/some/app/dir/> 
     #Options Indexes FollowSymLinks MultiViews ExecCGI 
     Require all granted 
    </Directory>   
    </IfModule> 
# I tried to use the below alongside mod_php, didnt work 
# <IfModule mod_php5.c> 
#  php_admin_flag engine off 
#  AddType application/x-httpd-fastphp5 .php 
#  <Directory /opt/some/app/dir/> 
#    Options Indexes FollowSymLinks MultiViews ExecCGI 
#    Require all granted 
#  </Directory> 
# </IfModule> 
</VirtualHost> 

आप दूसरी vhost पोस्ट कर सकता है, या मुझे पहले से बहुत ज्यादा बता मैं गलत क्या कर रहा है, धन्यवाद है।

उत्तर

7

हमारे पास PHP के 2 संस्करण चलाने के लिए हमारे सर्वर पर एक समान सेटअप है, लेकिन उसी वर्चुअल होस्ट के तहत। अनिवार्य रूप से यह एक नए संस्करण में संक्रमण करते समय सॉफ़्टवेयर के पुराने संस्करण के लिए है - 1 मूल अपाचे कॉन्फ़िगरेशन के माध्यम से चलता है और दूसरा CGI के माध्यम से होता है। हमारा निर्देशिका आधारित है, इसलिए थोड़ा अलग है लेकिन मुझे लगता है कि इसे अभी भी आपकी स्थिति के लिए काम करना चाहिए।

<IfModule mod_fastcgi.c> 
    # AddHandler fastcgi-script .fcgi 
    FastCgiWrapper /usr/lib/apache2/suexec 
    FastCgiIpcDir /var/lib/apache2/fastcgi 
    FastCgiConfig -idle-timeout 110 -killInterval 120 -pass-header HTTP_AUTHORIZATION -autoUpdate 
    ScriptAlias /php-fcgi/ /var/www/cgi-bin/ 
</IfModule> 

फिर, आभासी मेजबान config अपने आप में हम इस राशि:

सबसे पहले, हम एक अलग फाइल में FastCGI config /etc/apache2/mods-enabled/fastcgi.conf है

<VirtualHost *:80> 
    ServerName sitename 
    ... 
    # Original non-CGI site 
    <Directory "/sites/webroot/site1/"> 
     Options Indexes FollowSymLinks MultiViews 
     AllowOverride all 
     Order allow,deny 
     Allow from all 
    </Directory> 

    # FastCGI version 
    <Directory "/sites/webroot/site2/"> 
     Options Indexes FollowSymLinks MultiViews 
     AllowOverride All 
     Order allow,deny 
     allow from all 
     AddHandler php-cgi .php 
     Action php-cgi /php-fcgi/php562.fcgi 
     <FilesMatch "\.php$"> 
      SetHandler php-cgi 
     </FilesMatch> 
    </Directory> 
</VirtualHost> 

मुझे लगता है कि मुख्य बात यह है कि आप के लिए आवश्यक है AddHandler और SetHandler निर्देश हैं जो यह काम कर रहा है। फिर आप अलग-अलग निर्देशिकाओं या व्यक्तिगत आभासी मेजबानों के साथ कई अलग-अलग साइटों को जोड़ने में सक्षम होना चाहिए।

+0

धन्यवाद दोस्त, यह सब हैंडलर के बारे में। चीयर्स –

+0

यह सुनकर अच्छा लगा :) हमें यह सब कुछ PHPFarm के साथ काम करने के लिए चारों ओर भरना पड़ा। – JeremyB

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