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
yum --enablerepo=remi,remi-test install php
yum --enablerepo=remi,remi-test install php-mysql
etc etc
gran post! muchas gracias!