नगनेक्स के साथ ubuntu पर php 5 के पास चलाने के लिए php 7 कैसे स्थापित करें


9

मैं php 7 को आज़माना चाहता हूँ और अपनी साइट को php 7 पर काम करने के लिए उसी समय अन्य साइट्स को php 5 पर काम करते हुए रखना चाहता हूँ। ताकि डोमेन वर्चुअल होस्ट कॉन्फिग से मैं यह तय कर सकूं कि कौन सा php चलाना है।

मैंने php संस्करण प्रबंधन को देखा और देखा कि दो संस्करण चलाना संभव है, हालांकि जो मैंने पाया वह अपाचे के लिए लगता है। मैं इस बारे में अधिक स्पष्ट निर्देशों की तलाश कर रहा हूं कि यह कैसे किया जाए? मैं भी मामले में hhvm चल रहा है कि मायने रखती है।

जवाबों:


11

सबसे पहले, आपको स्थापित करने की आवश्यकता php5-fpmऔर php7.0-fpmसे सह-स्थापना योग्य PHP5 और php7.0 के लिए Ondřej Sury के पीपीए। :

sudo apt-get install python-software-properties
sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php

हम तब, nginxएफपीएम पैकेज का उपयोग करने का सुझाव देते हैं। तो, तदनुसार पैकेज स्थापित करें:

sudo apt-get update

# We need to ***remove*** php5 packages, so we can use php5.6 packages
# from the PPA instead
sudo apt-get remove php5-common
sudo apt-get autoremove

# Now we install php5.6 packages.
sudo apt-get install php5.6-fpm

# Now, install php7.0-fpm.  You may need to install separate PHP plugins
# for databases, extensions, etc. later.
sudo apt-get install php7.0-fpm

स्रोत: "php 7 कैसे स्थापित करें?" पर एक उत्तर सवाल , और कस्टम टिप्पणी और खुद से संशोधन।


दूसरी बात यह है nginxnginxकेवल आपके कॉन्फ़िगरेशन के रूप में अच्छा होने में सक्षम है। आपके पास अपने nginx सर्वर ब्लॉक (ओं) पर इसी तरह ('डिफ़ॉल्ट' उदाहरण कॉन्फिग से) PHP हैंडलिंग ब्लॉक होने की संभावना है:

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

location ~ \.php$ {
    include snippets/fastcgi-php.conf;

    # With php5-fpm:
    fastcgi_pass unix:/var/run/php5-fpm.sock;
}

यह कॉन्फ़िगरेशन केवल पास होगा php5-fpm। वास्तव में, यह आपके पूरे सर्वर ब्लॉक के लिए लागू होगा। इसके बारे में जाने का सबसे आसान तरीका एक दूसरे सर्वर ब्लॉक (के लिए, कहते हैं test.domain.tld), और PHP 7.0 fastcgi_passगंतव्य के बजाय प्रदान करना है। Xenial पर php7.0 में, यह कुछ इस तरह समाप्त होने जा रहा है (हाल ही में क्सीनल नेगनेक्स पैकेज पर अपलोड किए गए एक फिक्स से निकाला गया), हालांकि मुझे ओन्ड्रेज के पैकेज का लेआउट नहीं पता है, इसलिए मैं वहां सटीक विवरण नहीं दे सकता (चेक /etc/php7.0/fpm/pool.d/www.confया) यह निर्धारित करने के समान है कि यह कहाँ सुन रहा है):

location ~ \.php$ {
    include snippets/fastcgi-php.conf;

    # With php7.0-fpm:
    fastcgi_pass unix:/var/run/php7.0-fpm.sock;
}

आपको अपने php5ब्लॉक के लिए कुछ ऐसा ही करना होगा , यह प्रमाणित करने के लिए कि php5.6सॉकेट का उपयोग बिल्ट-इन php5सॉकेट (जिसे हमने हटा दिया है) के बजाय किया जाता है ।

फिर, परीक्षण चलाने के लिए दूसरे परीक्षण डोमेन का उपयोग करें php7.0। यदि आप ऐसा करना चाहते हैं, तो अपनी साइट की एक प्रति सुनिश्चित करने के लिए सुनिश्चित करें - यह संभव है कि एक अलग परीक्षण प्रतिलिपि होना आवश्यक हो, ताकि एक बार जब आप इसे पूरा करना शुरू कर दें php7.0, तो आप इसके बिना 'स्विच ओवर' कर सकते हैं मुद्दा।

दुर्भाग्य से, एक ही सर्वर ब्लॉक के भीतर बनाने php5और php7.0काम करने का कोई आसान तरीका नहीं है, न कि आपकी साइट, एप्लिकेशन आदि के लिए अपने पथ को बदलने के बिना, एक के लिए php5और एक के लिए php7.0; ऐसी साइटों के पुनर्मूल्यांकन से बुरा परिणाम मिल सकता है, इसलिए साइट कोड की दो अलग-अलग प्रतियां, एक php7.0माइग्रेशन के लिए और एक php5उत्पादन के लिए चलाने का सुझाव है ।


यदि आप इस तरह से चुनते हैं, तो आपको उन *php5.6*पैकेजों का उपयोग करना चाहिए जो ओन्डेज़ प्रदान करता है, और सादे php5पैकेजों को हटा दें ।
मूरू

@muru शायद सही है, मैं उस में लिखेंगे
थॉमस वार्ड

धन्यवाद! यह मेरी अपेक्षा से बेहतर काम किया। नाशपाती और क्ली के साथ पहली बार समस्याएं थीं, लेकिन यह पता चला कि रेपो में एक बग था जिसे मुझे अपडेट करने की आवश्यकता थी और यह काम कर गया। मेरी साइट वास्तव में php7 पर तेजी से काम करती है। यह आश्चर्यजनक है।
खतरनाक अर्धविराम

Fpm सॉक के नाम पर 5.6 भी था।
toster-cx

लगभग 2018 तक, एनजीआईएनएक्स के लिए php5.6 कॉन्फिग्यू हैfastcgi_pass unix:/var/run/php/php5.6-fpm.sock;
एकेस्टर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.