Actualizar PHP, Apache y MySQL en CentOS

Este post pretende actualizar en un servidor CentOS 5.5 a las versiones de PHP 5.3.5, apache 2.2.8 y MySQL 5.5.8.



CentOS 5.5 por defecto viene con unas versiones obsoletas de PHP (5.1.6), apache 2.0 y MySQL 5.0, instalando algunos nuevos repositorios, sobre todo el de CentOS Testing, se pueden actualizar estas versiones a algunas un poco más actuales pero en el caso de PHP y MySQL (sobre todo) aún insuficientes. Sin embargo para actualizar apache a la versión 2.2.8 solo es necesario este repositorio y el comando yum update httpd.

Nota: al actualizar apache es recomendable guardar el archivo httpd.conf que se localiza en /etc/httpd/conf y luego sobrescribir el creado por el instalador con el antiguo, o al menos comparar los contenidos porque sobrescribe muchas directivas como las codificaciones UTF8 (AddDefaultCharset UTF-8) y StartServers, MinSpareServers, MaxSpareServers, ServerLimit, MaxClients, MaxRequestsPerChild. Además elimina los siguientes tipos de datos (necesario especificarlos en algunas versiones anteriores como la 2.2.3 pero no en la 2.2.8)

AddType application/x-httpd-php .php 
AddType application/x-httpd-php-source .phps

De esta forma hemos actualizado apache a la versión 2.2.8 en CentOS 5.5.

Como vemos actualizar apache es lo más sencillo y no necesita de ninguna tarea adicional a la de instalar el repositorio de pruebas de CentOS, en cambio, MySQL y PHP son un poco más laboriosas. Cabe destacar que no es necesario instalar ambas pues MySQL 5.5.8 actualiza automáticamente las librerías de PHP a la 5.3.5 (intentar instalar primero PHP produce un error con las librerías de MySQL)

Actualizar MySQL a la versión 5.5.8 en CentOS

Primero instalamos los repositorios REMI y sus dependencias:

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm

Actualizamos MySQL 5.0.X a 5.5.8 con el siguiente comando:

yum --enablerepo=remi,remi-test update mysql

Este último comando como dije anteriormente nos va a actualizar también PHP a la versión 5.3.5 sin necesidad de ninguna otra operación.

Importante: MySQL NO sobrescribe el archivo /etc/my.cnf y este archivo es incompatible con la versión 5.5.8 es necesario editarlo y eliminar lo set-variable de todo el archivo por ejemplo:

Teniendo esto set-variable=local-infile=0 en el archivo original debería quedar local-infile=0 para ser compatible.

Esto nos damos cuenta si al ejecutar el siguiente código tenemos FAILED por respuesta:

[root@ecine ~]# service mysqld start 
MySQL Daemon failed to start. 
Starting mysqld: [FAILED] 
[root@ecine ~]# strace -f -o strace.output /etc/init.d/mysql.server start 
-bash: strace: command not found
[root@ecine ~]# /etc/init.d/mysql start 
-bash: /etc/init.d/mysql: No such file or directory 
[root@ecine ~]# /etc/init.d/mysqld start 
MySQL Daemon failed to start. 
Starting mysqld: [FAILED]

Y en el log de MySQL las siguientes líneas:

/var/log/mysqld.log 
110131 22:04:33 [ERROR] /usr/libexec/mysqld: unknown variable 'set-variable=local-infile=0' 
110131 22:04:33 [ERROR] Aborting

Algunas soluciones alternativas:

  • solución al error Option '--set-variable' is deprecated. Use --variable-name=value instead
  • solución al ERROR 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
  • solución al error Can't start server : Bind on unix socket: Permission denied
  • solución al error MySQL Daemon failed to start

Otros enlaces interesantes (casi todos en inglés):


De esta forma hemos actualizado (en mi caso) apache (httpd) de la versión 2.2.3 a la 2.2.8, PHP de la 5.2.10 a la 5.3.5 y MySQL de la versión 5.0.64 a la 5.5.8.

Espero que os sirva y os ahorre minutos de instalación y actualización.

Comentarios

Anónimo ha dicho que…
se puede usar el mismo comando para instalar

yum --enablerepo=remi,remi-test install php

yum --enablerepo=remi,remi-test install php-mysql

etc etc

gran post! muchas gracias!