Hemos estado probando este fin de semana un nuevo servidor escalable que nos permitirá ahorrar en costes y controlar los gastos, así como aumentar la capacidad del servidor en caso de necesitarlo y hacer backups y snapshots del servidor de forma fácil y rápida. Como imaginaréis, nuestros servidores son siempre basados en Ubuntu. En Clouding.io podemos elegir Ubuntu Server 18.04, 16.04 o 14.04. Nosotros hemos elegido la más actual, 18.04, para crear un servidor Cloud VPS (servidor virtual) con 2GB de RAM y 5GB de SSD. Se tarda súper poco en registrarse y tener el servidor funcionando.
Hemos creado un script para detectar vídeos de youtube caídos, eliminados o que no se muestran adecuadamente en nuestras entradas de wordpress. Como sabéis tenemos vídeos de youtube de terceros en algunos tutoriales y necesitamos saber si alguno no funciona correctamente, lo han borrado o hay alguna incidencia. Sería muy tedioso entrar en cada artículo a comprobar cada vídeo, así que lo que hemos hecho es un programita (script) que lo haga por nosotros. Os lo contamos a continuación:
Lo primero que tendréis que hacer es conectar con el servidor via ssh. La conexión ssh es muy sencilla y podéis acceder con cualquier cliente ssh que os guste. Después sólo queda apuntar vuestro dominio al servidor con las DNS de Clouding.io y montar vuestra web con wordpress. Para este tutorial damos por hecho que ya tenéis montada la base de datos y una instalación de wordpress funcionando. Empezamos!
Creamos un script en php que conecte con la base de datos, como en este caso es wordpress tenemos que conectar con la tabla wp_posts de nuestra base de datos con esta llamada:
SELECT * FROM wp_posts WHERE post_content LIKE ‘%youtube%’ AND post_status LIKE ‘publish’ AND post_type LIKE ‘post’
y buscar en cada post_content la id del vídeo de youtube (si la hubiera) e ir almacenándola en un array asociada a su id del post, para que en caso de que el vídeo no esté disponible, sepamos de un vistazo rápido que post tenemos que editar. Nosotros hemos usado la función substr de php. Ojo con esto si tenéis entradas con más de un vídeo a la hora de programar el bucle! Nosotros sólo tenemos un vídeo por artículo, así que menos lio.
$results=mysqli_query($con,”SELECT * FROM wp_posts WHERE post_content LIKE ‘%youtube%’ AND post_status LIKE ‘publish’ AND post_type LIKE ‘post’ “) or die(mysqli_error());
while ($rows=mysqli_fetch_array($results))
{
$post=$rows[‘post_content’];
$postaux=explode(’embed/’,$post);
$videoid=substr($postaux[1],0,11);
$videoids[$i]=$videoid.’.’.$rows[‘ID’];
$i++;
}
Una vez tenemos el array de ids de vídeos, tenemos que comprobar cada id de vídeo. Recorreremos el array y haremos una llamada a Youtube de esta manera (fijaros que la url de youtube en este caso es un poco especial) con cada id para ver la respuesta que nos da cada vídeo:
foreach ($videoids as $videoid1)
{
$videoidaux=explode(‘.’,$videoid1);
$videoidfinal=$videoidaux[0];
$postid=$videoidaux[1];
$video_url = @file_get_contents(‘https://www.youtube.com/oembed?format=json&url=http://www.youtube.com/watch?v=’.$videoidfinal);
//Si hay una respuesta negativa del vídeo, hay que revisarlo
if (!$video_url)
{
/*Aquí elegimos que hacer, podemos enviarnos un email con todos los posts y vídeos que no funcionan, crear un log en el servidor o simplemente mostrarlo en pantalla. Yo personalmente muestro en pantalla un enlace a la edición del post de wordpress y al vídeo en concreto:*/
echo ‘<a href=”https://www.tutorialesubuntu.com/wp-admin/post.php?post=’.$postid.’&action=edit”>Editar post ‘.$postid.'</a><br/>’;
echo ‘<a href=”https://www.youtube.com/watch?v=’.$videoidfinal.'”>Vídeo ‘.$videoidfinal.'</a><br/><br/>’;
/* Si quisiéramos enviarlo al email habría que usar la función email de PHP o si quisiéramos podríamos también guardarlo todo en un fichero de texto en el servidor a modo de log con la función PHP fwrite*/
} //cerramos el if
} //cerramos el foreach
Con la función email de PHP podéis hacer que os envíe un email con estos datos de vídeos que no funcionan. Para ello os recomiendo que configuréis un cronjob en el servidor para que se ejecute este script automáticamente una vez a la semana, por ejemplo.
Así cada semana recibiréis en el email un aviso si hay algún vídeo que no está funcionando como debe y podréis arreglarlo rápidamente.
Para configurar el cronjob, accedemos por ssh al servidor y usamos este comando:
crontab -e //para editar las tareas
30 3 * * 1 /usr/bin/php7 /var/www/youtubeCheck.php //añadimos una tarea que ejecute nuestro script todos los viernes a las 3:30 de la noche
Tened en cuenta las rutas a php y al script php, en nuestro caso son esas pero depende de cada instalación, claro.
También hemos aprovechado para configurar en el servidor los backups, en nuestro caso una a la semana y guardando 4 en total. La verdad que se hace en un momento desde el panel de control y merece la pena para evitar problemas. Podéis configurarlo a vuestro gusto y necesidades. Nos encanta la opción de hacer una imagen del servidor como backup y, sobre todo, la de clonar el servidor.
Para finalizar queríamos comentaros que el servicio de Clouding.io nos ha resultado muy útil y sorprendentemente sencillo de utilizar. El acceso via ssh es fácil y rápido y te permite configurar el servidor según tus necesidades como si estuvieras en el ordenador de tu casa o del trabajo. Lo mejor es la escalabilidad, con un simple click y un menú muy intuitivo puedes pasar de 1GB de RAM a 2GB o hasta 64GB, hasta 1900GB de SSD y 16 vCores a un precio muy competitivo y además, viendo en todo momento lo que te va a costar el servidor cada mes con cada configuración, algo que es de agradecer para evitar sorpresas desagradables a final de mes como nos ha pasado alguna vez con otros servidores virtuales. Os lo recomendamos.
Los servidores escalables en la nube son el futuro y el presente, han llegado para quedarse y son una herramienta muy útil para quienes tenemos páginas web y queremos controlarlo todo. Sin duda Clouding.io es una alternativa a tener en cuenta a la hora de decidirnos por un servidor de este tipo.
Como siempre, esperamos que os haya resultado útil el artículo!