Cómo actualizar PHP 4 a PHP 5 en CentOS 4

Actualizar CentOS 4 a PHP5No hay duda de que PHP 5 es ya lo suficientemente estable como para cualquier entorno de producción pero no fue hasta que empecé a desarrollar para Facebook que noté que ya no era una opción sino una necesidad. Hablar de PHP ahora es hablar de PHP 5 e incluso existen campañas para mudarnos completamente a PHP 5.

Había llegado el momento de deshacerse de PHP 4 en mi fiel servidor CentOS 4.3, donde corren Ventanazul, ¿Y si los matamos?, Mumobo, BlogsyCopy y otros experimentos. El único problema es que PHP 5 no aparece en los repositorios de CentOS 4 y mudarse a CentOS 5 involucraba demasiado trabajo, me pareció innecesario pues todo camina perfecto. Un típico caso de si no está roto no hay porque repararlo.

¿Qué hacer para correr PHP 5 en CentOS 4?

Esto podría salvarte el cuello: Copia /var/lib/mysql, tus bases de datos, y tus archivos de configuración para PHP, /etc/php.ini, y MySQL, /etc/my.cnf, a una ubicación segura en tu servidor o, mejor aún, a otro equipo.

Una rápida búsqueda me llevó a CentOS Web Stack, un conjunto de paquetes para actualizar Apache, MySQL y PHP en CentOS 4.

Las instrucciones son muy fáciles de seguir así que solo anotaré los cambios que necesité para que todo camine bien en mi servidor. No puedo garantizar que estos sean los mismos pasos que debas seguir para tu configuración pero estoy seguro que serán buenas pistas.

Luego de instalar el nuevo repositorio y yum-plugin-priorities, ver instrucciones en el enlace arriba, mi primera llamada a yum fue para remover php-domxml:

sudo yum remove php-domxml

Usé sudo para todos mis cambios pero si eres de los que prefiere su - dale.

A continuación ejecuté:

sudo yum --enablerepo=centosplus upgrade php*

Allí me topé con el primer problema, un error de memoria ocasionado por Python, yum es una aplicación Python. Para corregir el problema actualicé python-sqlite usando rpm.

sudo rpm -Uvh python-sqlite-1.1.7-1.2.1.i386.rpm

Al reintentar con yum y el upgrade php aparecieron errores de dependencia entre MySQL, perl-DBD-MySQL y perl 5.8.8. Decidí olvidar php-mysql por el momento y enfocarme solo en PHP 5:

sudo yum --enablerepo=centosplus install php

¡Voilá! Ya tenía PHP 5, aunque sin php-mysql no servía de mucho y todos los sitios en el servidor estaban detenidos. Estaba trabajando desde la cama en la madrugada así que había que pensar rápido. A investigar ese problema con MySQL y perl.

Al parecer necesitaba perl 5.8.8 pero por alguna razón yum no se daba cuenta de ello. Piensa tío.

sudo vi /etc/yum.repos.d/CentOS-Base.repo

¡Allí está! Las secciones [base] y [update] contenían exclude y eso no permitía ver actualizaciones de perl o perl-DBD-MySQL, estas líneas estaban allí por la instalación de CentOS Web Stack. Copié y comenté las líneas por seguridad y luego removí las referencias a perl y perl-DBD-MySQL.

Ahora volví a probar con php-mysql:

sudo yum install php-mysql

Todo funcionó bien ahora y no solo tenía un actualizado php-mysql sino que había pasado de MySQL 4 a MySQL 5. ¿Será cierta tanta maravilla? Vamos a ver:

sudo /etc/init.d/mysqld start

¡Ouch! MySQL no se inicia, hora de revisar logs:

sudo tail /var/log/mysqld.log

Aparecieron algunos problemas relacionados con los mensajes en inglés y juegos de caracteres, al parecer /usr/share/mysql tenía aún archivos de MySQL 4 creando conflictos. Primero intenté remover MySQL 5 y reinstalar:

sudo yum remove mysql
sudo yum install mysql mysql-devel mysql-server

Nada, seguía con el problema. Como en realidad no necesitaba MySQL 5 a muerte decidí regresar a MySQL 4 así que removí MySQL 5:

sudo yum remove mysql

Y volví a CentOS-Base.repo:

sudo vi /etc/yum.repos.d/CentOS-Base.repo

Esta vez removí las referencias a MySQL en las líneas exclude de las secciones [base] y [update] y activé enabled=0 en [centosplus], a continuación:

sudo yum install mysql mysql-devel mysql-server

Ahora sí, de regreso con MySQL 4:

sudo /etc/init.d/mysqld start

Todo caminando bien, y para comprobarlo unas cuantas pruebas desde la línea de comandos:

mysql -u usuario -p alguna-db

Ahora solo faltaba decidir los módulos que quería para PHP 5, a comentar ese enabled=0 en [centosplus] (CentOS-Base.repo, ¿recuerdas?), veamos que tenemos:

sudo yum list available | grep php

Y luego sal al gusto:

sudo yum install php-xml php-xmlrpc php-devel php-soap php-gd

Finalmente:

sudo /etc/init.d/httpd restart

Y ahora aplicamos el método científico: cruzar los dedos y a probar cada aplicación.

En mi caso todo funcionó, o no estarías leyendo esto, fueron aproximadamente 90 minutos de sudor frío con un ligero dolor de espalda pero valió la pena, damas y caballeros: PHP 5 en CentOS 4.

Join the conversation

Lo probare, muchas gracias y cualquier cosa te comento.

Gracias, cualquier duda usare este medio para preguntar

Lo malo de Centos Plus

centos plus solo actualiza hasta php 5.1.6 ;-)

Otra manera

Creo que esta manera es un poco más sencilla :)

http://hangar5.blog48.fc2.com/blog-entry-25.html

Saludos.

Como se empieza a hacer la

Como se empieza a hacer la actulización de PHP y el demás software?, es que ya puse lo que dice que hay que poner en el .repo y luego ejecuto sudo yum --enablerepo=centosplus upgrade php* luego service httpd restart pero no veo que haya actualizado nada, no da ningun error al usar el comando ese de upgrade.

Gracias

Keep your comments relevant, written in good English and don't spam. Let's create useful and valuable discussions. Markdown is welcome.

Add your comment