Mes: abril 2012

  • Actualizar WordPress por SSH

    Si administras un servidor dedicado o propio y conoces un poco de seguridad, quizá ni te hayas planteado la posibilidad de instalar un servidor FTP, sino que utilizas SFTP (Filezilla, Transmit y muchos otros clientes lo soportan) para subir tus archivos.

    Aunque parezca que WordPress sólo detecta FTP y FTPS, deberás instalar el paquete que habilita SSH2 sobre PHP de forma sencilla (elige el que te permita tu distribución):

    apt-get install libssh2-php

    pecl install ssh2 channel://pecl.php.net/ssh2-version

    yum install gcc php-devel php-pear libssh2 libssh2-devel

    Ahora bien, por defecto se añade la línea correspondiente al fichero de configuración de PHP para que automáticamente se cargue cuando reiniciamos Apache, pero es posible que no se haga, debemos comprobar que existe:

    Ubuntu/Debian
    cd /etc/php5/conf.d;
    vi ssh2.ini

    Si no existe la linea, añadiremos

    echo “extension=ssh2.so” > ssh2.ini

    Y reiniciamos Apache

    /etc/init.d/apache2 restart

    En Red Hat, CentOS, Fedora lo mismo:

    cd /etc/php.d;
    echo “extension=ssh2.so” > ssh2.ini
    /etc/init.d/httpd restart

    Ahora sólo nos falta generar una clave privada y pública:

    ssh-keygen

    Autorizamos a sí mismo:


    cd .ssh
    cp id_rsa.pub authorized_keys

    Y damos permisos de lectura. Aquí una cuestión importante ya que dar permisos de lectura es bastante peligroso (ya no digamos de escritura) si no se tienen las últimas versiones instaladas, puesto que es un agujero de seguridad bastante utilizado por los hackers.


    cd ~/
    chmod 755 .ssh
    chmod 644 .ssh/*

    En WordPress ya nos aparecerá la opción SSH2 a la hora de actualizar. Si queremos que esos valores aparezcan por defecto debemos editar el archivo wp-config.php y añadir las siguientes líneas adaptándolas a la configuración correspondiente:

    define('FTP_PUBKEY','/home/user1/.ssh/id_rsa.pub');
    define('FTP_PRIKEY','/home/user1/.ssh/id_rsa');
    define('FTP_USER','user1');
    define('FTP_PASS','');
    define('FTP_HOST','server1.example.com:22');

  • Cron jobs con WordPress

    En Blogsolutions cada vez nos estamos especializando más en WordPress, la plataforma de publicación líder y que más recomendamos a nuestros clientes dada su sencillez en el manejo y facilidad de edición HTML.

    Una de las cosas que teníamos pendientes, y que aunque conocíamos de su existencia, no habíamos usado hasta ahora, son las llamadas cron jobs o tareas automáticas, que no es más que la ejecución de un script cada cierto tiempo para tareas de actualización de datos, backups o mantenimiento interno. El propio core de WordPress lo usa, por lo que debe funcionar 😉

    Vamos a poner un ejemplo muy sencillo: supongamos que queremos hacer un backup de la base de datos que tenemos y que se ejecute de forma diaria a las 2 de la madrugada, que es cuando menos recursos está consumiendo el blog en el servidor: consultas, servidor web y otros servicios.

    Primero debemos crear la función a ejecutar en nuestro fichero functions.php, en este caso un dump de la base de datos desde la consola:


    function ejecutaBackup() {
    $fecha = date("d-m-Y",time());
    system('mysqldump basededatos > /backup/basededatos_'.$fecha.'.sql');
    }

    Y ahora a continuación debemos llamar a esa función de forma automática y temporal donde time() será la fecha de comienzo en formato timestamp


    if ( !wp_next_scheduled('programacion_backup') ) {
    wp_schedule_event( time(), 'daily', 'programacion_backup' ); // hourly, daily and twicedaily
    }
    add_action('ejecutaBackup', 'programacion_backup');

    Si no sabemos exactamente qué tareas tenemos automatizadas, siempre podemos utilizar el plugin Cron View para visualizarlas de forma sencilla.