CentOS – PHP – Installare Yum con i parametri personalizzati ./configure

Ho configurato e compilato correttamente il php sul mio server di dev e funziona bene, ma dopo aver parlato con un amico di sysadmin, ha informato che i compilati personalizzati delle ultime costruzioni non sono raccomandati per i sisthemes di produzione (o anche di sviluppo). Ha notato una situazione in cui hanno personalizzato e compilato PHP 5.3.6, solo per scoprire che ci fu un problema con un driver Postgres a basso livello, quindi wherevano tornare al 5.3.3.

Quindi sto pensando di tornare a yum per installare PHP, tuttavia ho diverse impostazioni di configuration personalizzate e stavo chiedendo se è ansible passare o configurare come PHP sarà compilato tramite YUM?

La mia linea di configuration corrente:

Configure Command => './configure' '--with-libdir=lib64' '--prefix=/usr/local/_custom/app/php' '--with-config-file-path=/usr/local/_custom/app/php/etc' '--with-config-file-scan-dir=/usr/local/_custom/app/php/etc/modules' '--disable-all' '--with-apxs2=/usr/sbin/apxs' '--with-curl=/usr/sbin/curl' '--with-gd' '--with-iconv' '--with-jpeg-dir=/usr/lib' '--with-mcrypt=/usr/bin' '--with-pcre-regex' '--with-pdo-mysql=mysqlnd' '--with-png-dir=/usr/lib' '--with-zlib' '--enable-ctype' '--enable-dom' '--enable-hash' '--enable-json' '--enable-libxml' '--enable-mbstring' '--enable-mbregex' '--enable-pdo' '--enable-session' '--enable-simplexml' '--enable-xml' '--enable-xmlreader' '--enable-xmlwriter' 

  • kernel-firmware è un duplicato con kernel-firmware Cent OS YUM
  • Come aggiornare Apache da 2.2.3 a 2.2.21
  • Installare postgresql su RHEL 5.6
  • Aggiorna PHP con yum su Amazon Linux
  • CentOS 7 MariaDB Errore "Imansible avviare mariadb.service: Unità non trovata."
  • CentOS: cosa fare con i pacchetti installati da DVD dopo la networking è abilitata
  • Lista Repository Fedora 14
  • Munin su Centos 6 - perl mancante MODULE_COMPAT_5.8.8
  • 4 Solutions collect form web for “CentOS – PHP – Installare Yum con i parametri personalizzati ./configure”

    Scaricare src.rpm per il pacchetto, contiene il codice sorgente ORIGINALE e tutti i file necessari per la compilazione di rpm personalizzati:

    • php.spec – file di specifica necessari per rpmbuild
    • php-xxx.tar.gz – codice sorgente originale
    • diverse patch (.diff, .patch)
    • i file di documentazione da aggiungere (se esistono)

    Per creare rpm – è necessario il pacchetto rpm-build che contiene il programma rpmbuild.

    Può anche essere fatto con yumdownloader (dal pacchetto yum-utils):

     yum install yum-utils rpm-build yumdownloader --source php 

    Installare src.rpm:

     rpm -Uvh *.src.rpm 

    cd per rpmbuild SPEC dir;

    RHEL5, vecchio Fedora

     cd /usr/src/redhat/SPEC/ 

    Suse:

     cd /usr/src/packages/SPEC/ 

    RHEL6, Fedora più recente:

     cd ~/rpmbuild/SPEC/ 

    Il file php.spec contiene dettagli su come è stato creato il pacchetto e quali componenti verranno inclusi. Inoltre contiene i dati relativi alle dependencies e ai pacchetti necessari per avere nuovi pacchetti correttamente. Quindi, rpmbuild ti ricorda i pacchetti mancanti.

    Dovrai:

    1. Scaricare il codice sorgente di php aggiornato da php.net e inserirlo in SOURCES dir
    2. Specificare una nuova versione nella string "Versione:" nel file php.spec, utilizzare anche un valore inferiore nella string "Release:" e aggiungere il nome personalizzato come "Release: 0.mike"
    3. Controllare il file .spec per eventuali ulteriori modifiche (forse ci sono alcune patch di protezione non necessarie nella versione corrente, rpmbuild vi dirà che se il file è già patchato). Forse dovrai commentare qualche string "Patch xx:" e qualche "% patch xx" se avrai problemi.
    4. eseguire rpmbuild:

      rpmbuild –target x86_64 -ba php.spec

    –target x86_64 – specifica la piattaforma (può essere i386, x86_64, amd64, etc)

    -ba – "build all", costruirà entrambi gli ultimi rpm e nuovi pacchetti src.rpm

    È ansible trovare i pacchetti costruiti in directory ../RPM/ e ../SRPM/.

    Questo metodo assicura che le patch del fornitore siano incluse nella directory. la gerarchia della struttura dei file è la stessa, il componente è compatibile, le dependencies sono soddisfatte e la vecchia versione verrà sostituita in modo sicuro. Inoltre, garantisce i tuoi aggiornamenti futuri.

    ps Non sono d'accordo con la "nuova versione nella produzione è ctriggers" string. Sto fornendo servizi di supporto a dozzine di aziende, hanno anche hosting condiviso e preferisco sempre avere una versione aggiornata. Solo il problema con php si muove da una sovversione ad un'altra (come 5.1.x a 5.2.x, 5.2.x a 5.3.x) – ci sono alcune modifiche generali e funzioni deprecate / rimosse. Ma più nuovo è più veloce, sicuro e meglio mantenuto, seguito.

    pss Non compilerò mai niente manualmente e metterò i file in / usr / local / nella mia vita, ho imparato rpm come avevo bisogno in pochi giorni, ora tutto sta funzionando liscio.

    No, purtroppo non è ansible specificare comandi di configuration personalizzata con yum. Il software fornito da yum e altri installatori di pacchetti simili è pre-costruito per specifiche fornitore.

    Vorrei anche consigliare di non andare con l'ultima costruzione di qualcosa solo perché è disponibile, soprattutto sui sisthemes di produzione. Ho riscontrato problemi simili a quello del tuo amico where qualche bug strano ha fatto crescere la sua brutta testa e ho passato ore, giorni, settimane a seguirlo … o semplicemente ho finito per tornare alla vecchia generazione.

    Faccio una build custom php come hai fatto, che è quello che facciamo nella mia azienda. Quando una nuova versione stabile di php è esaurita, la creiamo in / usr / local / php-xxx, la prova, quindi aggiorniamo i collegamenti binari e le libelle condivise in /etc/ld.so.conf.d e siamo bravi. Gli sviluppatori hanno sempre richieste di specifiche funzionalità, quindi è necessario per noi avere la libertà e la flessibilità di una creazione personalizzata. Potresti tenere d'occhio la versione di phos CentOS che sta raccommand, distribuendo e aggiornando in quel momento.

    Yum non è compilatore

    È ansible provare a compilare manualmente PHP:

     cd /tmp; wget http://ua.php.net/get/php-5.2.17.tar.gz/from/ua2.php.net/mirror; # latest 5.2 tar -xzvf php-YOU_VER.tar.gz; cd php-YOU_VER; ./configure --enable-cgi --disable-cli --with-png-dir=/usr/local --with-jpeg-dir=/usr/local --with-gd --enable-ftp --with-curl --with-zlib --enable-zip --with-iconv --enable-mbstring --with-mysql --with-freetype-dir=/usr/local --with-ttf --enable-gd-native-ttf --with-mysqli --with-libdir=lib64; make; make install; 

    come ha detto GioMac e aggiungendolo. Il modo per questo è quello di prendere il rpm della sorgente della versione di php che hai compilato dal repos yum e estrarre il rpm di src e aggiungere la tua personalizzazione. Crea i giri e fai un a

     yum localinstall <rpm> 

    Ancora che lascia la preoccupazione originale di sys admin senza risposta. La tua personalizzazione a php potrebbe avere un bug che non è apparso nella tua casella dev. Quindi un modo per risolverlo sarebbe quello di testarlo in un ambiente di prova e una volta soddisfatto spingerlo alla produzione.

    yum non è un compilatore. Quindi l'installazione tramite yum non risolve alcun problema presente nel codice. yum fai semplicemente risolvere le dependencies dei pacchetti. Uno dei vantaggi che vedo è che i pacchetti sono a qualche estensione testati prima di rilasciarlo in un branch stabile del repo. Quindi, se volete compilare voi stessi, perdete il beneficio del branch stabile. se si tratta solo delle modifiche di configuration che si desidera fare allora è ansible eseguire l'installazione post anche modificando il file php.ini.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.