मैं yum के साथ CentOS में नवीनतम PHP संस्करण में कैसे अपग्रेड करूं?


22

मुझे इस बारे में कुछ ब्लॉग पोस्ट मिले, लेकिन यह संभावित दुष्प्रभावों पर विवरणों की कमी है।

मैं वास्तव में इन चरणों में कुछ विस्तृत का उपयोग कर सकता है:

  1. रेपो कैसे जोड़ें जो PHP 5.4 को यम में प्रदान करता है
  2. क्या यह मूल PHP संस्करण को CentOS में बदल सकता है?
  3. जब मैं PHP 5.4 का समर्थन करता हूं तो मैं आधिकारिक रेपो पर वापस कैसे लौट सकता हूं? (मेरे सिस्टम में वर्तमान 5.3.3)
  4. क्या मेरे द्वारा वर्तमान में उपयोग किए जा रहे PHP मॉड्यूल को तोड़ने की कोई क्षमता होगी?

ध्यान दें

लोगों ने सफलतापूर्वक नए संस्करणों पर एक ही विधि के साथ उन्नत किया, और प्रश्न में विशिष्ट संस्करणों को हटाने का सुझाव दिया। हालांकि नए संस्करणों में वास्तव में कुछ टूटने पर संस्करणों को पिन करना अच्छा है, मैं समुदाय द्वारा सुझाए गए नवीनतम सफल संस्करण को नोट के रूप में रखना चाहूंगा।

यदि आपने अन्य संस्करणों पर सफलतापूर्वक अपग्रेड किया है, तो इसे अपडेट करने के लिए स्वतंत्र महसूस करें।

  • PHP संस्करण: 5.4, 5.5, 5.6
  • CentOS संस्करण: 5, 6

जवाबों:


19

मैंने Fedora 17/16, CentOS / RHEL 6.3 / 5.8 पर एक मामूली संशोधन के साथ Install Apache / PHP 5.4.10 के निर्देशों का पालन किया । शायद 10min लग गया। मेरे सटीक आदेश नीचे दिखाए गए हैं। ध्यान दें कि पहले कमांड को लेख में दिखाए गए से बदलना पड़ा। परिवर्तन से था epel-release-6-7.noarch.rpmकरने के लिए epel-release-6-8.noarch.rpm

  1. कैसे एक PHP जोड़ने के लिए कि PHP 5.4 yum में प्रदान करता है?

    yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
    yum install http://rpms.remirepo.net/enterprise/remi-release-6.rpm
    
  2. क्या यह मूल PHP संस्करण को CentOS में बदल सकता है? मेरे लिए निम्नलिखित आदेश काम कर गए और मेरा कोई भी मौजूदा PHP वेब पेज नहीं टूटा। आपकी माइलेज भिन्न हो सकती है।

    yum --enablerepo=remi install httpd php php-common
    yum --enablerepo=remi install php-pecl-apc php-cli php-pear php-pdo php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml
    service httpd restart
    
  3. जब मैं PHP5.4 का समर्थन करता हूं तो मैं आधिकारिक रेपो पर वापस कैसे जा सकता हूं? मैंने CentOS रिपॉजिटरी से PHP को हटाने और फिर से स्थापित करने के आदेशों का परीक्षण नहीं किया है, लेकिन इन्हें काम करना चाहिए।

    # Remove the Remi packages. Note the reversed command order
    yum remove php-pecl-apc php-cli php-pear php-pdo php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml
    yum  remove httpd php php-common
    # Install the CentOS packages. 
    yum install httpd php php-common
    yum install php-pecl-apc php-cli php-pear php-pdo php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml
    
  4. क्या वर्तमान में उपयोग किए जा रहे PHP के मॉड्यूल [sic] को तोड़ने की कोई क्षमता होगी? हाँ। Zend इंस्टॉलर का उपयोग करके स्थापित Zend के साथ CentOS (6.2?) के हाल के संस्करण का उपयोग करते हुए, उपरोक्त उन्नयन ने Zend को तोड़ दिया।

उपरोक्त सभी कमांड के रूप में चलाए गए थे root। सबसे अच्छा अभ्यास एक गैर-विशेषाधिकार प्राप्त उपयोगकर्ता के रूप में लॉगिन करना और उपयोग करना है sudo। (यह वर्तमान स्नैपशॉट के साथ एक विकास वीएम है ...)

इसके अलावा, डिफ़ॉल्ट रूप से रेमी रिपॉजिटरी को सक्षम न करें - अतीत में मैं चतुर था और डिफ़ॉल्ट रूप से इसे सक्षम किया और चीजों को तोड़ दिया, यहां तक ​​कि रिपॉजिटरी प्राथमिकता के साथ।


3
रेमी के साथ चीजें अक्सर बदसूरत हो जाती हैं। मैं अप-टू-डेट php के लिए iuscommunity रिपॉजिटरी का उपयोग करना पसंद करता हूं। दूसरा तरीका Zend सर्वर रेपो का उपयोग करना है, लेकिन यह मेरे लिए थोड़ा उपरिव्यय लगता है।
काज़िमियरस अलीउलिस

1
@KazimierasAliulis दुर्भाग्य से IUS रेपो असंगत पैकेज और फ़ाइल नामों का उपयोग करके निर्भरता नरक को प्रेरित करता है। मैं इसका उपयोग करने की अनुशंसा नहीं कर सकता।
माइकल हैम्पटन

बहुत गहन वर्णन। चूंकि मेरे पास Zend इंजन से संबंधित कोई कोड नहीं है, इसलिए मेरे मामले में यह सही नहीं होना चाहिए?
विकारी

1
@Michael Hampton मैं उपयोग करता हूं yum --enablerepo=remi updateऔर यह सभी संबंधित php पैकेजों की देखभाल करता है, एक बेहतर समाधान की तरह दिखता है। सर्वर कुछ दिनों के लिए समस्याओं के बिना चलता है, सभी जानकारी के लिए धन्यवाद।
वक्री

1
नोट: लड़का phpस्थापित सूची में जोड़ना भूल गया , जिसके कारण मुझे बहुत परेशानी हुई क्योंकि अपाचे ने php फाइलों को
सेवित

9

अन्य Webtatic उत्तर पर एक सुधार:

1 है। Http://www.webtatic.com/packages/php54/ पर गाइड का उपयोग करना :

rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm

२। आपको पहले यह देखने की आवश्यकता है कि मौजूदा इंस्टॉल किए गए पैकेजों को बदलने की क्या आवश्यकता है, आप php-common को हटाने और एक लेनदेन में php54w-common को संयोजित करने के लिए यम शेल का उपयोग करके ऐसा कर सकते हैं (इसलिए साझा निर्भरताएं दूर नहीं की जाती हैं)

yum shell
> remove php-common
> install php54w-common
> run
…
Is this ok [y/N]: n

परिणामों के लिए "y" न कहें, लेकिन "निर्भरता को दूर करने" में वर्णित सभी पैकेजों पर ध्यान दें, जैसे

Removing for dependencies:
 php
 php-cli
 php-pear
 php-pecl-memcache
 php-mysql

अगर इस सूची में php * के अलावा अन्य पैकेज हैं तो आप मूल रूप से Webtatic PHP 5.4 में स्विच नहीं कर सकते हैं, लेकिन विकल्पों की जांच करनी होगी। वेबटैटिक में सभी बेस php पैकेजों के लिए रिप्लेसमेंट पैकेज हैं (1. पुष्टि के लिए पेज में सूचीबद्ध पैकेजों को देखें।), इसलिए कोई समस्या नहीं होनी चाहिए, जब तक कि आप अन्य 3 पार्टी रिपॉजिटरी का उपयोग नहीं करते हैं, जो विशिष्ट php संस्करण पर निर्भर पैकेज इंस्टॉल किए गए हैं स्थापित।

बाकी स्थापना के लिए (अभी भी यम शेल में), आप बस इन पैकेजों को हटा दें और उनके php54w- * समकक्षों को स्थापित करें:

> remove php-common php php-cli php-pear php-pecl-memcache php-mysql
> install php54w-common php54w php54w-cli php54w-pear php54w-pecl-memcache php54w-mysql
> run
…
Is this ok [y/N]: y

फिर आपको केवल उन पैकेजों को देखना चाहिए जिन्हें आपने सूची में हटाए और स्थापित किए हैं, और आप स्थापना को स्विच करने के लिए पुष्टि कर सकते हैं। वर्तमान में php लोड के साथ चलने वाली किसी भी सेवा को httpd या php-fpm के लिए फिर से शुरू करना होगा।

इसके लिए 'सहज' होने के नाते, उपयोगकर्ता द्वारा वेबसाइट तक पहुंचने में सक्षम होने वाले किसी भी सॉफ़्टवेयर परिवर्तन को पूरी तरह से समझा जाने वाला परिणाम होना चाहिए। साझा लाइब्रेरी को हटाया और जोड़ा जा रहा है जब एक प्रक्रिया पहले से ही भरी हुई नहीं है तो वे संभावित रूप से लोड कर सकते हैं जबकि साझा लाइब्रेरी नहीं है। इस तरह से ऑफ़लाइन सॉफ्टवेयर उन्नयन करना बेहतर है, और प्रक्रिया के काम की अपेक्षा को सत्यापित करने के लिए पहले गैर-उत्पादन मशीन पर अधिमानतः परीक्षण किया जाता है।

३। एक काल्पनिक CentOS बेस php54 पैकेज (CentOS 5 प्रयुक्त php53 उपसर्ग) पर स्विच करने के लिए, आप बस उपरोक्त चरणों को php54w को हटाने के साथ php को हटा दें, और php54w स्थापना को php54 की स्थापना के साथ रखें आदि।

yum shell
> remove php54w-common
> install php54-common
> run
…
Is this ok [y/N]: n
…
> remove php54w-common php54w php54w-cli php54w-pear php54w-pecl-memcache php54w-mysql
> install php54-common php54 php54-cli php54-pear php54-pecl-memcache php54-mysql
> run
Is this ok [y/N]: y

हालाँकि, काल्पनिक आधार php54 के स्विच के लिए, कुछ पैकेजों के लिए कोई विकल्प नहीं होगा (जैसे कि CentOS 5 में php53-pecl-memcache एक्सटेंशन नहीं था) और Webtatic में ऐसे पैकेज हैं जो CentOS बेस में उपलब्ध नहीं हैं (जैसे php54w -pecl-zendopcache)। यदि वे गायब हैं, तो आपके पास उन्हें स्थापित करने के लिए सीधे pecl का उपयोग करने के अलावा और कोई विकल्प नहीं है।

४। कोई भी PHP अपग्रेड बग का सामना कर सकता है, और वेबसाइटों को रिटायर किया जाना चाहिए। यह वेबटैटिक के लिए विशिष्ट नहीं है, लेकिन सामान्य विचार यह है कि नई सुविधाएँ नए बग का परिचय देती हैं।

स्वीकृत उत्तर में रेमी की रिपॉजिटरी के विपरीत, वेबेटिक ईएल 6 रिपॉजिटरी कभी भी सेंटोस बेस रिपॉजिटरी के रूप में एक ही पैकेज के नाम का उपयोग नहीं करता है, इसलिए उन पैकेजों की स्थापना / उन्नयन को ओवरराइड नहीं करेगा जिन्हें आप स्विच करने का इरादा नहीं रखते हैं, और जैसे डिफ़ॉल्ट रूप से सक्षम है।

अस्वीकरण: मैं Webtatic का स्वामी / अनुरक्षक हूं


यम शेल विधि वास्तव में निर्भरता के लिए अच्छी है, धन्यवाद।
Vicary

@ और, महान विस्तृत लिखें, धन्यवाद। मैं CentOS 6 में PHP का डिफ़ॉल्ट cli (और केवल cli) 5.4 कैसे बदल सकता हूँ?
गइया

0

आप yum इंस्टॉल के लिए यहां php 5.4.9 पा सकते हैं:

http://www.webtatic.com/packages/php54/

आप अपने सभी मौजूदा php पैकेज और एक "rpm -e" को देखने के लिए "rpm -qa | grep php" कर सकते हैं। मुझे आपके वर्तमान मॉड्यूल का पता नहीं है, लेकिन यह उन्नयन से पहले परीक्षण के लायक है।


आपने जवाब दिया 1. जब सर्वर रखरखाव की बात आती है, तो यह बस इसे स्थापित नहीं कर रहा है और परीक्षण चला रहा है, मैं वास्तव में कुछ भी करने से पहले अधिक जानकारी का उपयोग कर सकता हूं।
वीकरी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.