Archivo de la etiqueta: wordpress

Como tener varios sitios web alojados en un mismo servidor

Recientemente cambié este blog de una maquina virtual a una maquina física pasando de compartir maquina a tener una para mi solito. Con el cambio quise tener alojados todos mis blogs en el mismo servidor para simplificar tareas y resultó ser más fácil de lo que pensaba.

Primero instalamos apache

sudo apt-get install apache2

Luego creamos los directorios para nuestros blogs

sudo mkdir -p /var/www/miblog1.com/blog/
sudo mkdir -p /var/www/miblog2.com/blog/

y cambiamos los permisos

sudo chown -R www-data /var/www/

Creamos una landing page para cada uno

sudo vim /var/www/miblog1 .com/html/index.html
sudo vim /var/www/miblog2.com/html/index.html

creamos unos archivos de configuración

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/miblog1.com.conf
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/miblog2.com.conf

y los editamos (solo pongo uno aquí pero tiene que ser para todos los sitios)

sudo vim /etc/apache2/sites-available/miblog1.com.conf

Modificamos y añadimos las siguientes lineas

ServerAdmin [email protected]
ServerName miblog1.com
ServerAlias www.miblog1.com
DocumentRoot /var/www/miblog1.com/blog
<Directory /var/www> 
     Options FollowSymLinks
     AllowOverride All
</Directory>

Activamos los sitios usando los comandos

sudo a2ensite miblog1.com.conf
sudo a2ensite miblog2.com.conf

reiniciamos apache para que los cambios tengan efecto

sudo service apache2 restart

Comprueba que funciona a través de la IP y añade los A recods a tu dominio para que se pueda acceder usando la url.

Como hacer una copia de seguridad completa de nuestro servidor, base de datos y WordPress

Los backups son necesarios para cualquier sistema para prevenir la pérdida de datos. Siguiendo un poquito con la tónica de los últimos posts, instalar wordpress en un servidor propio y usar certificados SSL para nuestro WordPress, esta vez lo que haremos será un backup completo de nuestro WordPress. En este post lo que hago es crear un cronjob, osease un script que se ejecute a diario y haga una copia completa de nuestra base de datos juntamente con distintas carpetas que queramos conservar de nuestro blog.

Generamos un dump de todas las bases de datos

La base de datos es uno de los componentes más importantes de cualquier sistema. Es donde históricamente se ha guardado la información. Para hacer una copia de la base de datos necesitaremos mysqldump. Esto nos permitirá sacar una copia consistente de la base de datos.  Para obtener la copia de todas las bases de datos ejecutaremos el comando

mysqldump -u[usuario] -p[contraseña] --single-transaction --quick --all-databases > output.sql

El fichero output.sql contendrá toda la información en la base de datos.

Agruparemos todos los directorios y documentos en un solo archivo

Una vez ya tengamos generado el dump de nuestra base de datos lo que tendremos que hacer es crear un archivo único para mejorar la transportabilidad del backup. En mi caso también lo comprimo usando gzip para ahorrar espacio, ya que raramente se consultan/usan los backups y así ahorro espacio. En mi caso he usado tar (para una introducción podéis leer mi anterior post a tar) para mantener los permisos de cada archivo.

tar cfz /home/donde/quieras/archivo.tar.gz /var/www/ /directorio/hacia/backup/output.sql

En el comando anterior vemos que hemos creado un archivo comprimido que contiene el directorio var/www, y el dump que hemos hecho de la base de datos /directorio/hacia/backup/output.sql

Subiremos el archivo comprimido a un servidor externo

Para asegurarnos que cualquier problema que pueda tener nuestra máquina no afecte a nuestros backups subiremos el archivo comprimido a un servidor externo. Imagínate que haces sólo los backups pero los dejas en tu ordenador y el disco duro se estropea. Si pasa eso no podrías recuperar la información. Por esto es importante guardar copias de seguridad en distintos sitios.

Para este apartado he creado como un mini-script con las instrucciones para que el cliente FTP lo ejecute y haga la copia. En mi caso lo voy a guardar con el nombre ftp.txt

open [url o IP]
user usuario contraseña
passive #algunas veces requerido
put /home/donde/tenías_el/archivo.tar.gz nombre_del_archvo_en_el_ftp.tar.gz
bye

Finalmente ejecutaremos este trozo de código con

 ftp -n < ftp.txt

Asignaremos un cronjob que haga backups y los salvaguarde

A partir de la segunda vez que tienes que realizar una tarea uno tiene que empezar a pensar de que modo puede optimizar el proceso. Lo que he decidido hacer es crear un cronjob para que haga una copia de seguridad a diario y la suba al servidor externo mediante FTP.

echo "Starting script: $(date)"
day=$(date +"%d")

echo "Doing the mysql dump of all tables"
mysqldump -u[usuario] -p[contraseña] --single-transaction --quick --all-databases > output.sql

echo "Compressing the websites and the mysql dump into one file"
tar cfz /home/donde/quieras/archivo.tar.gz /var/www/ /directorio/hacia/backup/output.sql

echo "open url o IP 
user usuario contraseña 
passive #algunas veces requerido 
put /home/donde/tenías_el/archivo.tar.gz nombre_del_archvo_en_el_ftp.tar.gz 
bye" > ftp.txt

echo "Executing FTP and uploading the file"
ftp -n < ftp.txt

rm ftp.txt

Este vendría a ser el script que va a ejecutar el cronjob. Pero para ejecutar el script de forma automática tendremos que guardarlo propiamente como cronjob. Para esto usaremos el siguiente comando para editar los cronjobs de nuestro sistema.

crontab -e

y dentro del fichero, al final, escribiremos el siguiente comando

00 4 * * * sh /camino/hacia/cronjobs/cron_backup.txt > /dev/null 2>&1

Este comando ejecuta el script en /camino/hacia/cronjobs/cron_backup.txt cada día (los asteriscos) a las 4:00 (am) sin guardar el output (> /dev/null 2>&1). Ahora guardaremos el fichero y ya lo tendremos inicializado.

Para aprender un poquito más sobre los cronjobs podéis leer mi entrada anterior dónde lo explico más detalladamente.

Finalmente para recuperar los archivos

Cuando lo más temido pasa, cuando se nos estropea el ordenador y tenemos que ir a buscar los backups, lo tendremos todo preparado.

Primero nos logearemos con el cliente FTP y nos descargaremos el archivo con los backups.

ftp [url o IP]

pondremos el nombre de usuario y contraseña cuando nos lo pida. Una vez logueados descargaremos el fichero con el backup en nuestro ordenador local

get Nombre_del_backup.tar.gz

Saldremos de la sesión para descomprimir y extraer los archivos

tar xf Nombre_del_backup.tar.gz

Todo lo que sea blogs WordPress tendremos que copiar los ficheros en /var/ww/ otra vez y volver a configurar el apache. En cuanto la base de datos tendremos que importar el dump

mysql -u[usuario] -p output.sql

Y de este modo ya habremos recuperado todo lo que temíamos haber perdido.

Cómo forzar WordPress para que use un certificado SSL gratis mediante un plugin

En los posts anteriores hemos instalado WordPress y hemos alojado varios sitios en un mismo servidor. En este post lo que haremos será mejorar la seguridad de nuestro blog y las SERPs en Google. Hace ya un tiempo Google recomendó a los webmasters dejar de usar http y pasar a https para hacer la web más segura. Para forzar un poco el brazo Google ofreció mejoras en los rankings a aquellas webs que usaran un certificado SSL. Como no es fácil para todos los bloggers comprar un certificado SSL lo que propongo es obtener gratuitamente un certificado de SSL gracias a cloudflare y así poder ofrecer nuestro blog de forma más segura para los usuarios.  Para conseguirlo solo tenemos que seguir los siguientes pasos.

Instalar el plugin para el certificado SSL en wordpress

Para instalar el plugin WordPress podemos ir al apartado de plugins y buscar “WordPress HTTPS” e instalarlo usando el panel de control. También podemos instalarlo manualmente mediante FTP, subiéndolo directamente a la carpeta de /wp-content/plugins/ e instalándolo como cualquier otro complemento. Una vez instalado lo activaremos.

Conseguir el certificado SSL gratis

La mayoría de certificados son de pago pero cloud cloudflare fare nos permite usar un certificado SSL gratis para proyectos más modestos. Lo único que tenemos que hacer es registrarnos y añadir la página web cuando nos la pidan. Finalmente cambiaremos los name servers en nuestro registrador de dominios.

Actualizar los ficheros de configuración de WordPress

Finalmente iremos a ajustes generales en la sección de ajustes de nuestro blog wordpress y cambiaremos http por https dejando el resto de la url intacta. Por algún motivo que desconozco he tenido que cambiar el fichero wp-config.php. Justo antes de /* That’s all, stop editing! Happy blogging. */ he tenido que añadir

define('FORCE_SSL_ADMIN', false);

para poder acceder al wp-admin.

Espero que esto os haya servido para mejorar la seguridad del blog y los rankings de las SERPs.

Instalar WordPress en un servidor propio

Como ya vimos el otro día, podemos alojar varios sitios web en un mismo servidor. En mi caso para lo que los quería era para instalar distintas instancias de WordPress (osease distintos blogs). Pero para usar WordPress requerimos distintas aplicaciones para las diferentes partes del sistema.

PHP

Primero instalaremos PHP para que los scripts de WordPress puedan ser ejecutados.

sudo apt-get install php apache2 libapache2-mod-php php-mcrypt php-mysql

Base de datos

Ahora instalaremos la base de datos

sudo apt-get install mysql-server
 sudo mysql_secure_installation
 sudo mysql_install_db

y crearemos los usuarios para cada uno de nuestro blog. Primero nos logearemos como root para poder crear usuarios

mysql -u root -p

crearemos el usuario

GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost' IDENTIFIED BY 'pass';

Saldremos de la conexión con la base de datos con el root, y nos logearemos con el nuevo usuario

 mysql -u user -p

y crearemos una nueva base de datos para el blog

CREATE DATABASE db_wordpress;

Scripts de WordPress

Nos bajaremos la última versión de WordPress. La descomprimiremos y la pondremos en /var/www/directorio-de-tu-blog/. Para terminar de configurar el apache podéis seguir esta guía.

Finalizar

Para finalizar y que los cambios tengan efecto reiniciaremos apache

sudo systemctl restart apache2
 apt-cache search php- | less

y accederemos a la url de nuestro blog. Allí se nos pedirá que ingresemos los datos de la base de datos y otra información básica sobre el blog.

Solución al error de WordPress que da al usar memoria

El otro día felizmente intenté entrar en el panel de control de WordPress para moderar comentarios y añadir un nuevo post y me encontré con este error:

Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 71 bytes) in /public_html/wp-includes/capabilities.php on line 1211>

No sé si es culpa mi hosting 000webhost, o que pero he estado buscando la solución y ha resultado ser que tenía que colocar la siguiente linea en wp-settings.php (dentro del directorio principal).

define(‘WP_MEMORY_LIMIT’, ’96M’);

Normalmente las definiciones se colocan al inicio del código, ya verás otros defines.

PD: Para “colocar” la línea tal y como indico arriba lo que se tiene que hacer es editar el fichero con un editor de texto como bloc de notas, wordpad, notepad+, gedit, vim… y guardarlo.

Bonus: No sé porqué pero la mayoría recomendaba poner el limite de memoria en 64 (el cual a mi no me funcionaba así que lo he colocado a 96.

Generar frases aleatorias en el header de nuestro WordPress

Hace tiempo vi algunas webs que tenían frases aleatorias en el header del blog. Y la idea me gustó, así que me la anoté. Ahora por fin he tenido algo de ganas y tiempo para llevarla a cabo y escribir su post correspondiente 😛 Empecemos!

Primero por la programación, añadiremos la función al archivo functions.php de nuestro theme de WordPress y luego ejecutaremos la función en el header de nuestro blog. Vamos a ver lo más detallado.

El código que va a functions.php:

function frases() {

$frase[0] = “Hola a todos”;

$frase[1] = “Adios a todos”;

$frase[2] = “me gustan los árboles”;

$cantidad = count($frase)-1;

echo $frase[rand(0,$cantidad)];

}

Como veis es de lo más sencillo. Simplemente tenéis que cambiar las frases ya existentes y si queréis poner más teneis que añadir $frase[3] = “nueva frase”; cambiando el 3 por los números adecuados.

Vamos a cambiar el header ahora. Dentro del hgroup y debajo del <h2> he puesto esto:

<div align = “right”> <?php frases()?> </div>

El frasesm es la clase que he creado para el CSS (explicado más adelante) y el frases() es la función que se ejecuta para obtener las nuevas frases.

La nueva clase CSS, tengo que decir que ha sido lo que me ha costado más ya que no estoy habituado a ello. El código:

.provarara { position: absolute; top: 80%; left: 0; width: 100%; color: white; font: bold 24px/45px Helvetica, Sans-Serif; letter-spacing: -1px; background: rgb(0, 0, 0); background: rgba(0, 0, 0, 0.7); padding: 0px; padding: 0 2px; background: none; }

Decir que todo es cambiable y no lo voy a explicar todo, básicamente he ido probando cosas para adaptarlo. Aun estoy probando así que puede ser que cuando leas esto el código sea otro.

Creo que con esta modificación y algunos plugins que le añadiré doy mi blog por tuneado durante una temporadilla.

Fuentes: http://forobeta.com/wordpress/28315-poner-frases-rotatorias-header.html y http://www.cssblog.es/ejemplos/bloques-texto-imagen/ejemplo_bloque_texto_imagen.html

PD: Finalmente no he modificado demasiado. Aunque espero que os sirva 😉

Como implementar Facebook comments en los posts de un blog

Para poder poner comentarios en tu blog WordPress puedes usar el plugin o hacerlo a mano. Aquí lo vamos a hacer a mano para evitar que nuestro WordPress se sobrecargue demasiado de plugins.

Para empezar nos vamos a hacer Facebook developers. Le tenemos que dar permisos a la aplicación (si no lo habíamos hecho ya). Seguidamente creamos una nueva app, a la que le decimos que será para un sitio web. Rellenamos los nombres que le queremos poner a la “aplicación” y aceptamos. Si es la primera vez posiblemente nos pida que necesita un número de móvil, a mi experiencia solo envía los sms para la confirmación a los usuarios de movistar, pero no lo puedo asegurar. Por lo menos creo que eso es lo que me ha pasado a mi, estoy usando Yoigo y no me ha enviado ningún sms, pero cuando he probado con un número de Movistar lo ha hecho al momento.

Editando los datos de la aplicación he intentado varias veces poner la url del blog pero no lo he conseguido, así que lo he dejado en blanco y Facebook no se ha quejado.

Ahora toca ir a nuestro sitio para editar un poco el template y insertando el código necesario para que salga Facebook comments.

Empezaremos con el header.php, allí insertaremos la siguiente línea de código cambiando YOUR_APPLICATION_ID por el número de aplicación que nos ha facilitado Facebook para esta app en concreto. Este código sirve para juntar los comentarios de tu blog con la aplicación de Facebook.

<meta property="fb:app_id" content="{YOUR_APPLICATION_ID}">

 

Ahora modificaremos el archivo comments.php (puedes ponerlo dónde quieras) insertaremos el siguiente código:

<div id="fb-root"></div><script src="http://connect.facebook.net
/es_CO/all.js#xfbml=1"></script>
<fb:comments href="<?php the_permalink() ?>" width="687">
</fb:comments ></div>

Posiblemente tengas que modificar el campo width para adaptarlo mejor al ancho del que disponemos.

Yo he decidido poner el código justo debajo del post y antes de los comentarios “habituales” del blog.

Aclaración: Hay que tener en cuenta que estos comentarios se los “queda” Facebook, no pasan a formar parte de nuestra base de datos. El día que decida dejar de respaldar esta funcionalidad o cobrar por ella lo vamos a sufrir. Lo gratis se cobra de distintos modos, en este caso con información de los comentarios de nuestro blog.

Como trakear las arañas de los buscadores usando Google Analytics en WordPress

Ser capaz de trakear lo que las arañas de los buscadores están rastreando en tu página web te puede ayudar a obtener mas información útil sobre tu sitio. En muchos casos no podemos ver como las spiders interactúan con nuestro site ya que el código está en Javascript nos perdemos mucha cantidad de información. Pero ahora he encontrado un modo de poder ver lo que hacen las arañas en nuestro sitio y además mostrarlo de un modo visual bonito.

Lo que he encontrado ha sido un plugin de WordPress WP Bots Analytics http://wordpress.org/extend/plugins/wp-bots-analytics/ sacado de la web http://www.stayonsearch.com/tracking-search-engine-bots-with-google-analytics-on-wordpress (inglés) y que a su vez ha obtenido la idea de aquí http://www.web-analytics.fr/google-analytics-seo-comment-mesurer-les-vistes-des-robots-et-crawlers-sur-votre-site/ (francés). <-{Ya no funciona}

Para hacer que funcione el plugin tienes que:

  1. Crear un nuevo perfil poniendo la url que quieras por ejemplo robots.sitio.com y anotar el ID de propiedad web.
  2. Luego tienes que ir al sitio al cual has instalado el plugin y buscar la cookie del sitio que tenga de nombre __utma y luego escoges los primeros números antes que el punto. Ver imagen.

Cokie Editor
Cokie Editor

Para esto yo he usado el plugin para Firefox Edit Cookies.

  1. Con ambos números nos vamos a Ajustes en administración de nuestro blog, y allí escogeremos WP Bots Analytics dónde pondremos ambos números y guardaremos.

Ahora solo nos queda esperar que analytics vaya recogiendo los datos. Pero que hacemos con esos datos?

  • Podemos saber cuales son las paginas de mas interés para los buscadores y mejorarlas.
  • Potenciar las páginas menos atractivas para conseguir que tengan mas peso.
  • Ver que bots nos gastan mucho ancho de banda y quizás bloquearlos.
  • Ver si las arañas acceden a páginas restringidas, ver porque no siguen nuestras restricciones y reparar el robots o introducir código html en la página que haga el hecho.
  • También puede suceder al revés, páginas que queremos que sean indexadas y concurridas pero que no sea así y conseguí algunos enlaces o revisar la accesibilidad.

¿Se os ocurre algo más que se pueda hacer con esta información?