Paquetes para probar PHP 7 en Fedora y RHEL

Para los que queráis ir probando las novedades que trae PHP 7 sin necesidad de compilar desde los fuentes, el repositorio de Remi ya tiene disponible el paquete php70 en remi-test, para sistemas RHEL y Fedora.

Si no tienes los repos de Remi, puedes descargarlos desde su página, seleccionando el sistema operativo que corresponda. Puedes hacer la instalación del repo manualmente o bajarte el paquete rpm de auto-configuración del repositorio.

El paquete está disponible para Fedora 20, 21, 22 y para Enterprise Linux 6 y 7 (RHEL, CentOs, …) como una instalación separada, por lo que puedes hacerla vivir fácilmente con otros paquetes de PHP que tengas ya instalados. Para realizar la instalación:

yum --enablerepo=remi,remi-test install php70 
[salva@localhost ~]# php70 -v
PHP 7.0.0-dev (cli) (built: Apr  3 2015 08:04:28) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0-dev, Copyright (c) 
1998-2015 Zend Technologies

La instalación se realiza bajo /opt/remi, sólo está disponible bajo arquitectura x86_64 y, por el momento, sólo instala la versión 7.0.0-dev. En el blog de Remi podéis encontrar más información.

Yum: resolver el error “rpmdb open failed”

Tras intentar hacer alguna operación con yum en consola nos encontramos con el error “rpmdb open failed”.

Este error indica que las bases de datos que se encuentran bajo el directorio /var/lib/rpm( están dañadas. Su formato de nombre de fichero es del tipo “_db*”, así que para deshacernos de este problema nada más sencillo que borrarlas y volver a crearlas.

Como root ejecutamos el borrado de las bases de datos, las regeneramos, limpiamos la cache y la volvemos a crear.

$
$ rm -f /var/lib/rpm/_db*
$ rpm -vv --rebuilddb 
$ yum clean all
$ yum makecache 
$

Instalar Google Chrome en Linux a través de YUM

Google Chrome es ya uno de los navegadores de referencia en todas las plataformas y además cuenta con el beneplácito de los usuarios que ven en él un modo fácil y rápido de escapar a Internet Explorer, además de aportar muchas herramientas adicionales.

No es mi propósito hablar de las ventajas del navegador del buscador más popular de la red, para eso hay muchos artículos por la red, el interés de este post es hablar de cómo instalarlo en sistemas Red Hat y derivados a través del popular YUM.

Podemos optar por dos modos, el primero descargando directamente el RPM desde la página de Google y la segundo agregando el repositorio de YUM. El segundo método tiene evidentes ventajas sobre el primero, sobre todo a la hora de mantener actualizado el sistema.

Para instalarlo con el RPM en local, procedemos a descargarlo desde la web de Google, nos situamos en el directorio e instalamos con:

yum localinstall --nogpgcheck google-chrome-stable_current_x86_64.rpm

Para usar el segundo método, tendremos que crear el repositorio, para ello generamos el fichero /etc/yum.repo.d/google.repo y ponemos lo siguiente:


[google-chrome-32]
name=Google Chrome - 32-bit
baseurl=http://dl.google.com/linux/chrome/rpm/stable/i386
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub

[google-chrome-64]
name=Google Chrome - 64-bit
baseurl=http://dl.google.com/linux/chrome/rpm/stable/x86_64
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub

Podemos optar por montar uno sólo de los repositorios eligiendo el que corresponda a la arquitectura de nuestro procesador.

Después de esto sólo queda un paso para tener instalado Google Chrome:

#### Version Estable ###########
yum install google-chrome-stable
#### Version Beta ###########
yum install google-chrome-beta

Y … listo a disfrutar del navegador de Google en Linux.

Nota para desarrolladores web: Google Chrome tiene la misma base que Safari, por lo que si vuestra web está dando problemas en Mac y no tenéis uno a mano, podéis comprobar los errores con este navegador (muy útil con problemas en javascript)

Pasando de sysvinit a systemd en Fedora

En las Notas de lanzamiento de la documentación de Fedora 16 nos encontramos con lo siguiente:

3.2.4. Scripts de SysVinit portados a systemd

Fedora 15 vió la introducción de systemd, un administrador de sistema y de servicios nuevo para Linux. La integración de systemd continúa en Verne, con muchos más scripts de inicio de SysV convertidos a archivos de servicios nativo de systemd. El resultado es un proceso de arranque más rápido, eficiente y una administración de servicios más simple.

Ahora bien, si entrar a valorar si el cambio ofrece mejoras, que seguro que si y pronto lo veremos también en Red Hat Enterprise, CentOS y el resto de la familia, pero el abandono de sysvinit trae consigo la necesidad de adaptarse al nuevo sistema.

Por el momento se puede hacer uso de service y chkconfig, aunque creo que poco durarán en futuras versiones, así que toca ponerse al día para poder administrar los servicios con systemd, ahí van algunos comandos y sus correspondencias con sysvinit:

SYSVINIT SYSTEMD Función
service httpd start systemctl start httpd.service Utilizado para arrancar el servicio (no resiste reinicio)
service httpd stop systemctl stop httpd.service Utilizado para detener el servicio (no resiste a reinicio)
service httpd restart systemctl restart httpd.service Utilizado para detener y arrancar el servicio.
service httpd reload systemctl reload httpd.service Cuando se soporta, recarga el archivo de configuración sin interrumpir las operaciones pendientes.
service httpd condrestart systemctl condrestart httpd.service Rearranca el servicio sólo si ya está ejecutándose.
service httpd status systemctl status httpd.service Indica si el servicio está en ejecución o no.
ls /etc/rc.d/init.d/ ls /lib/systemd/system/*.service /etc/systemd/system/*.service Utilizado para listar los servicios que pueden ser iniciados o detenidos
ls /etc/rc.d/init.d/ systemctl list-units –all Utilizado para listar todos los servicios y otros units
chkconfig httpd on systemctl enable httpd.service Pone el servicio en “on”, para que se inicie cuando se inicie la máquina u otro disparador como cambio de nivel de ejecución.
chkconfig httpd off systemctl disable httpd.service Pone el servicio en “off” para que al iniciar el sistema, no se inicie el servicio o se detenga por ejemplo al momento de cambio de nivel de ejecución.
chkconfig httpd systemctl is-enabled httpd.service Utilizado para verificar si un servicio está configurado para ser iniciado en el entorno actual.
chkconfig httpd –list ls /etc/systemd/system/*.wants/httpd.service Utilizado para listar qué niveles de ejecución el servicio está en “on” o “off”.
chkconfig httpd –add systemctl daemon-reload Utilizado para cuando se desea crear un nuevo archivo de servicio o modificar su configuración.

Más info en: https://fedoraproject.org/wiki/SysVinit_to_Systemd_Cheatsheet/es

Usando repositorios de YUM

En sistemas Red Hat y derivados (Fedora, Oracle Linux, CentOS, etc) podemos usar YUM para gestionar la instalación de paquetes, una herramienta que facilita mucho la vida a cualquier administrador de sistemas.

Los repositorios se configuran bajo el directorio /etc/yum.repos.d/ y deben tener la terminación .repo. En cada uno de los ficheros pueden estar configurado más de 1 repositorio, para agregar un repositorio debemos poner los siguientes campos:

[nombre_repositorio]
name=Nombre del repositorio
baseurl=http://servidor/repositorio
enabled=1
gpgkey=http://servidor/repositorio/gpgkey
pgpcheck=1

En name indicamos el nombre, con baseurl la ruta hasta el repositorio, con enabled si se habilita (1) o no (0), con gpgkey la ruta de la llave de seguridad y con pgpcheck si se comprueba la integridad con la llave.

Una vez completado guardamos el fichero repositorio.repo por ejemplo y lanzamos el listado de repositorios que debería mostrarnos algo como lo siguiente:

# yum repolist

repo id repo name status
base CentOS-5 – Base 3558+8
extras CentOS-5 – Extras 290
updates CentOS-5 – Updates 676+40
repolist: 4524

Y ya tenemos configurado nuestro repositorio. Si estáis buscando información para configurar repositorios en este enlace tenéis EPEL (Paquetes adicionales para Linux Empresarial, incluyendo CentOS, Oracle Linux, etc).

Instalar eAccelerator

Una de las formas de mejorar el rendimiento de un servidor con páginas web en PHP es la instalación de un sistema cache como módulo del intérprete de PHP instalado en el servidor. El uso de estos sistemas puede mejorar el rendimiento del servidor entre un 20% y un 50%. Entre los sistemas más populares que podemos encontrar se encuentran Zend Optimizer, IonCube o eAccelerator.

Vamos a centrarnos en éste último y veremos como instalarlo paso a paso sobre un servidor Linux desde los fuentes. Para poder compilar correctamente eAccelerator debes tener instalado phpize, en Fedora puedes obtenerlo usando yum install php-devel, en Debian apt-get install php-dev.

Lo primero es descargar el paguete correspondiente a la última versión de eAccelerator (en este caso la 0.9.5.3). Podemos elegir descargarlo en .tar.bz2 o .zip, usaremos el .tar.bz2 y lo descargamos, descomprimimos y entramos en el directorio:

wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2

tar jvxf eaccelerator-0.9.5.3.tar.bz2

cd eaccelerator-0.9.5.3



Una vez dentro del directorio, vamos a empezar a compilar los fuentes. Si sólo tienes un intérprete de PHP instalado (suele ser lo más habitual) puedes ejecutar:

phpize

./configure

make



En caso de tener más de una instalación deberás indicar donde se encuentra la que quieres usar. Sustituye la ruta en la primera línea (/usr/php) por aquella donde tengas instalado PHP:

PHP_PREFIX="/usr/php"

$PHP_PREFIX/bin/phpize

./configure –enable-eaccelerator=shared –with-php-config=$PHP_PREFIX/bin/php-config

make



Realizado esto ya tenemos el módulo preparado para su instalación, ejecutamos:

make install

Una vez terminada la instalación se nos mostrará la ruta donde se ha copiado el módulo del eAccelerator que debemos configurar en el php.ini, si todo ha ido bien debes tener algo como esto:

Installing shared extensions:    /usr/lib/php/modules/20080501/



Ahora debemos indicar en el php.ini nuestro nuevo módulo para que sea cargado con el intérprete. Abrimos el php.ini, si no sabes donde está localizado ejecuta phpinfo(). Editamos el archivo y buscamos una sección llamada "Dynamic Extensions". Buscamos una directiva llamada extension_dir y la definimos con la ruta donde guardamos las extensiones:

extension_dir = "/usr/php/modulos/"



A continuación agregamos las siguientes líneas que incluyen el nombre del módulo y su configuración:

extension="eaccelerator.so"

eaccelerator.shm_size="16"

eaccelerator.cache_dir="/tmp/eaccelerator"

eaccelerator.enable="1"

eaccelerator.optimizer="1"

eaccelerator.check_mtime="1"

eaccelerator.debug="0"

eaccelerator.filter=""

eaccelerator.shm_max="0"

eaccelerator.shm_ttl="0"

eaccelerator.shm_prune_period="0"

eaccelerator.shm_only="0"

eaccelerator.compress="1"

eaccelerator.compress_level="9"



Guardamos el php.ini y ahora debemos crear el directorio temporal que usará eAccelerator, definido en la configuración que acabamos de agregar al php.ini como eaccelerator.cache, este directorio debe tener permisos de escritura:

mkdir /tmp/eaccelerator/

chmod 777 /tmp/eaccelerator/



Termidamo esto ya tenemos eAccelerator intalado en nuestro servidor. Sólo falta reiniciar apache para que la nueva configuración tenga efecto.

Recuperar contraseña de root en Linux

Aunque existen más opciones para poder recuperar la contraseña de root en Linux, lo más sencillo es utilizar un Live-CD o el primer disco de instalación (en el caso de Red Hat o Fedora). Podemos usar cualquier distribución o versión, no tiene porque coincidir con la que tenemos intalada en el equipo.

  1. Arrancamos el equipo desde el CD o DVD.
  2. Si el CD o DVD arranca en modo gráfico tendremos una opción de rescate (Rescue installed system), sino escribimos linux rescue para entrar en modo rescate.
  3. Una vez accedemos al sistema debemos asignar permisos de root con el siguiente comando: chroot /mnt/sysimage.
  4. Ahora ya puedes cambiar el password de root (o de cualquier otro usuario) con el comando: passwd root (o passwd [nombre_usuario] si quieres cambiar la de otro usuario)
  5. Reiniciar el equipo (comando: reboot), retirar el CD o DVD y acceder al sistema con la nueva contraseña.

Podeis descargar el CD o DVD para realizar esta operación desde los repositorios oficiales de cada distribución, os dejo algunas de las más populares: Fedora, Debian, Suse o Ubuntu.