Categoría: programación

  • 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.

  • Añadir fotos en miniatura en el feed de wordpress

    Como podéis ver en la parte superior de la portada del blog, aparecen unas fotos en miniatura que pertenecen a mi fotolog, algo abandonado, por cierto.

    Los datos se obtienen del feed pero WordPress por defecto no incluye una URL a la imagen porque, entre otras cosas, dejaría de ser válido, no estándar. Pero si valoras más poder utilizarlo a que valide, puedes utilizar una pequeña función que se incluye en el fichero functions.php del theme.

    El código es el siguiente:


    function ThumbRSS() {
    global $post;
    if ( has_post_thumbnail( $post->ID ) ) {
    $thumbpic = get_the_post_thumbnail( $post->ID, 'thumbnail' );
    }

    echo ''.$thumbpic.'';
    }

    add_filter('rss_item', 'ThumbRSS');

    Ahora ya puedes incluir las últimas fotos de tu fotolog creado con WordPress de forma muy sencilla.

    zp8497586rq
  • Error en Google Sitemap Generator

    Uno de los plugins de WordPress que más recomiendo instalar es Google Sitemap Generator. Y sobre este plugin va la solución a un error que aparece cuando se publica un post en WP 2.7 fundamentalmente.

    A mi no me ha pasado, pero a Jaime le pasó el otro día y me pidió ayuda. Según él, cuando se publicaba el post aparecía:

    Fatal error: Allowed memory size of 16777216 bytes Here is a selection of people having the Midheaven in horoscope gemini (around 1500-2000 people). exhausted (tried to allocate 500001 bytes) in $HOME/wp-includes/class-snoopy.php on line 894

    Me puse a buscar la solución y el problema estaba en la memoria al generar el sitemap. En la página de configuración general, entre las muchas opciones se puede ampliar la memoria. Si la amplías por ejemplo a 50 MB, ya no te aparecerá el error.

    Después eran palabras de peloteo agradecimiento

    zp8497586rq
  • Como cachear una página web en PHP

    Todos sabemos las ventajas y desventajas que tiene cachear una página web, principalmente ventajas cuando trabajamos con bases de datos (MySQL, SQL Server, etc) aunque desventajas cuando suele cambiar la web muy a menudo. Por esta razón vamos a suponer que trabajamos con una página estática que coge datos de una base de datos que se actualizan una vez al día.

    Lo primero que debemos hacer es crear un directorio llamado cache por ejemplo y darle permisos de escritura para todos los usuarios. Esto se hace porque normalmente crearemos el directorio con un usuario y apache se ejecuta con otro usuario:

    chmod 777 cache

    (más…)