Actualizar OwnCloud (de 5.0.8 a 7.0.2) en un servidor NAS

La semana pasada compré en Redcoon un NAS (Network-attached storage) de la marca Zyxel, concretamente el NSA320S.
Las razones fueron básicamente que tiene:

  • Servidor FTP
  • Servidor WEB
  • Dos bahías para discos SATA, que pueden funcionar en RAID 0, RAID 1 y JBOD
  • La típica conectividad de disco: SAMBA, NFS, etc.

Aunque es un equipo de características bajas (256mb de RAM, 1GHz de procesador…) funciona bastante decente. Otro tema es la seguridad, de la que intentaré hablar en otro post…

Una de las aplicaciones preinstalables que llevaba el Zyxel NSA320S era OwnCloud, que aún no sé si usaré, en su versión 5.0.8.

Nunca había probado OwnCloud, aunque me habían hablado de él y, al ver la versión 5.0.8 funcionando pensé que se veía “viejo”. Cuando fui a la web de OwnCloud vi que existían versiones más modernas y decidí que iba a intentar actualizarlo.

ATENCIÓN, según OwnCloud, para actualizar hay que seguir un orden concreto:

  • La versión 5.0.8 actual hay que actualizarla a la última 5: 5.0.17
  • Después hay que actualizar la 5 a la última 6: 6.0.4
  • Y finalmente la 6 a la última 7 disponible: 7.0.2

¿Qué implica esto? Que hay que repetir el proceso tres veces en mi caso (tu caso podría ser distinto).

No sabía si sería posible, ni hasta qué punto podría toquetear el servidor web del NAS, pero os cuento la aventura por si alguien se lo plantea. La parte positiva es que internamente este NAS (como muchos otros) ejecuta un Linux.

Preparando el terreno:

  1. Desde el gestor del NAS instalar lo básico (esto es el paquete PHP-MySQL-phpMyAdmin y el paquete OwnCloud 5.0.8).
  2. Habilitar la conexión telnet. Habrá que hacer varias cosas en disco (como hacer root, cambiar permisos de ficheros, etc.) para las cuales necesitaremos acceso telnet o similar. Si no sabes lo que es el acceso root, mejor infórmate antes.
  3. Entrar por telnet (yo entré con usuario admin) y conseguir ser root (orden SU).
  4. Ir al directorio del Apache donde se encuentran las aplicaciones preinstaladas, como OwnCloud, en mi caso /usr/local/apache/htdocs/adv,/pkg
  5. Backup de lo que se tenga actualmente. Sobretodo si ya usas OwnCloud y tienes tu configuración, archivos subidos, etc.
    1. Yo usé la orden tar -zcvf file.tar.gz /ownCloud
    2. Llévate después el backup a un sitio seguro
  6. Borrar todos los archivos de OwnCloud excepto la carpeta config/ y la de datos, generalmente data/, aunque en muchos casos la tendréis en otra localización del disco y por tanto no os deberéis preocupar por ella.
    1. Ya que estás aquí, echa una ojeada a cómo están los permisos de cada cosa, sobretodo los de config/, porqué después deberás configurarlos igual.
  7. Bajar la nueva vesión:
    1. Buscar la versión correspondiente (leer advertencia al principio del post) en la web de OwnCloud.
    2. Bajarlo, por ejemplo: wget https://download.owncloud.org/community/owncloud-5.0.17.tar.bz2
  8. Descomprimir el contenido (atención con las rutas, asegúrate de que descomprimes donde toca): tar -zxvf owncloud-5.0.17.tar.gz /
    1. Si hubiera machacado el directorio /config (lo importante es el archivo config.php), recupéralo del backup.
    2. Es posible que tengas que asignar los archivos al propietario adecuado (root en mi caso) mediante chown -R root:root /ownCloud
    3. También puede que haya que retocar los permisos, en mi caso chmod -R 755 /ownCloud, a excepción de config/ y apps/ que, si no recuerdo mal, requieren 775.
  9. Si ya lo tienes todo en el sitio, y has configurado bien los permisos y propietarios, recargas la página de OwnCloud y te informará de que se está actualizando la base de datos a la nueva versión.

Enhorabuena, lo has conseguido. Como has leído al principio, deberás repetir el proceso hasta tres veces, 5.0.8 >  5.0.17 > 6.0.4 > 7.0.2, pero es relativamente rápido.

¿Qué ocurre ahora?

Cuando terminé las actualizaciones, me encontré con el problema de que OwnCloud se había vuelto considerablemente más lento y que algunas páginas no tenían el aspecto esperado. En la consola del navagador podía ver el error, varios archivos css no se encuentran (el típico error 404 para: versions.css, stylesheet.css, style.css, colorbox.css, firstrunwizard.css, slideshow.css, lucene.css, etc.):

Error al actualizar OwnCloud, archivos CSS no encontrados.

Error al actualizar OwnCloud, archivos CSS no encontrados.

Lo curioso es que los archivos sí que estaban en disco, así que fui a ver cómo estaba configurado el .htaccess. Es raro que estos CSS, según el .htaccess, los tenga que procesar y servir un php:

RewriteRule ^apps/([^/]*)/(.*\.(css|php))$ index.php?app=$1&getfile=$2 [QSA,L]

RewriteRule ^apps/([^/]*)/(.*\.(css|php))$ index.php?app=$1&getfile=$2 [QSA,L]

Visto esto, lo que hice fue directamente evitar que los CSS los procesasee ese index.php, cambiando la lína por esta: RewriteRule ^apps/([^/]*)/(.*\.php)$ index.php?app=$1&getfile=$2 [QSA,L]

El resultado fue el que sigue:

Error al actualizar OwnCloud, jquery-1.10.0.min.map no encontrado

Error al actualizar OwnCloud, jquery-1.10.0.min.map no encontrado

Todo estaba correcto, a excepción del archivo jquery-1.10.0.min.map, que no se encontraba. Simplemente hubo que copiarlo a la ruta adecuada. Por cierto, lo encontré aquí:  http://cdnjs.cloudflare.com/ajax/libs/jquery/1.10.0/jquery.min.map

¡OwnCloud actualizado en nuestro NAS!

PD: no sería mala idea hacer un backup de la instalación del OwnCloud completa ahora que lo tenéis actualizado, por si hay que reinstalarlo en algún momento…

PD: a fecha de publicación de esta guía he actualizado también el phpMyAdmin que lleva el NAS, aunque no lo explicaré porqué el proceso es aún más sencillo que el de actualización de OwnCloud.

Web para made4parents.com

Hace poco hemos terminado un trabajo muy original, la web de esta joven empresa de Banyeres de Mariola: made4parents.com. Se trata de una web corporativa que al mismo tiempo hace de tienda online, con unas características muy interesantes, desde donde venden sus creaciones para coches de bebé de la marca Bugaboo©.

Captura de pantalla

Vista de la página de made4parents.com

La web permite configurar tu diseño de fundas para el carrito, tanto en piezas como en colores y texturas. Así, la empresa lo fabricará a tu gusto. Toda una revolución.

Detalles técnicos
Coding
  • La web cuenta con un diseñador de cochecitos de bebé muy fácil de usar.
  • Las imágenes generadas se guardan en una caché para agilizar la navegación.
  • El usuario puede compartir fácilmente su diseño a las redes sociales.
Web design
  • Se han seguido las pautas de diseño que ha impuesto made4parents.com.
  • La web cuenta con un diseño responsive, adaptable a móviles y tabletas.

No se puede borrar la carpeta de un usuario eliminado en Windows 8.1

Parece que a la gente de Microsoft se le ha pasado un detalle por alto en Windows 8.1.

Después de borrar un usuario, pidiéndole a Windows que eliminase los archivos del usuario, hemos visto que la carpeta de archivos del usuario eliminado continuaba en el disco duro. Al intentar borrarla ha empezado la aventura: Windows no permitía borrarla porqué, decía, no estaba vacía o no teníamos permisos suficientes. Hemos intentado borrarla desde una linea de comandos ejecutada como administrador y con un comando recursivo (rd /S /Q), sin éxito.

Después de eso hemos empezado a buscar métodos un poco más agresivos porqué hemos visto que había una carpeta “Libraries” dentro de la carpeta del usuario que no se podía borrar. Hemos intentado coger el control de la carpeta (takeown) y algunas estrategias más.

Finalmente, hemos dado con la SOLUCIÓN en un foro de suporte de Microsoft. El proceso “Windows Media Player Network Sharing Service” tenía bloqueada la carpeta y la solución ha sido tan sencilla como detener el proceso y borrar la carpeta.

Son cosas que pasan.

Gestor de rutas: La Sària servicios turísticos

Hace un par de semanas que hemos programado un gestor de rutas con mapa para La Sària servicios turísticos, que ahora han abierto al público. Al igual que hicimos en la web de la Asociación Serra Mariola, cuenta con un mapa de Google Maps donde los visitantes podrán echar un vistazo a las rutas que La Sària ofrece por todo el territorio valenciano.

Gestor de rutes amb integració de Google Maps i WordPress per a La Sària serveis turístics

Gestor de rutas con integración de Google Maps y WordPress para La Sària servicios turísticos

La nueva sección de la web de La Sària te permite consultar sus rutas turísticas, excursiones e itinerarios de forma fácil, sobre un listado o sobre el mapa. Además, la gestión es también muy sencilla, que era uno de los requisitos del cliente.

Detalles técnicos
Coding
  • La web cuenta con una guía de rutas sobre mapa en la que los usuarios pueden ver la oferta.
  • Además, los resultados que se muestran sobre el mapa se almacenan en una cache temporal para aumentar el rendimiento de la web, minorar el tiempo de respuesta y evitar la sobrecarga.
  • La edición de las rutas también es muy sencilla. De hecho este era uno de los requisitos del cliente.
Web design
  • El mapa y gestor de rutas se ha integrado en el diseño web que ya tenía La Sària.

Problema con el BOM

Cuando programamos aplicaciones web aparecen una serie de complicaciones que no tenemos habitualmente cuando programamos aplicaciones de escritorio. Una de ellas está relacionada con el BOM (Byte Order Mark). Seguro que muchos hemos tenido malas experiencias con WordPress por ejemplo, diciéndonos cosas como HTTP header have been already sent. El BOM son unos caracteres especiales que se pueden colocar al principio de un archivo para indicar si es Little o Big Endian. Actualmente, en UTF-8 por ejemplo, no es obligatorio ponerlo (de hecho se recomienda no hacerlo), pero algunos editores de texto lo ponen por defecto y de aquí vienen los problemas.

Esta entrada ha estado motivada por un extraño problema causado por el BOM, cosa que supe a posteriori.

Cuando el frontend de la aplicación enviaba una petición AJAX (desde jQuery), ésta llegaba correctamente al servidor. El servidor procesaba correctamente la petición y retornaba la respuesta JSON. A pesar de eso, del lado de jQuery la acción no seguía.

Primero pensé que la respuesta JSON estaría mal formada, así que la comprobé con un JSON checker, como es JSONLint. La respuesta JSON estaba bien formada.

Después pensé que habría algún error jQuery-Javascript cuando se ejecutaba la acción success, pero no era así. Simplemente la acción success no se ejecutaba nunca. Eso me hizo pensar de nuevo en que había algún error con la respuesta JSON. Pero, ¿cómo? si la había comprobado con un checker.

Resulta que la respuesta venía con un BOM al principio, cosa que hacía que jQuery no ejecutase la acción success, aunque la respuesta era un JSON bien formado. El problema ahora era… tengo un proyecto web con cerca de dos mil archivos PHP… ¿cómo puedo encontrar el archivo en el que se ha incluido el BOM?

Habitualmente he usado un editor que te indica si el archivo tiene BOM o no, y te permite quitarlo o cambiar la codificación, como es Notepad++, pero se habían editado demasiados archivos como para revisarlos a mano. Pensé en programar una pequeña aplicación o script para detectar archivos con BOM, pero alguien se había preocupado de hacerlo y publicarlo gratuitamente: File BOM Detector. Sencillo y efectivo. Problema resuelto.

Alerta: hosting barato

Alojamiento web

Soluciones de hosting

De un tiempo a esta parte las empresas que ofrecen alojamiento web (hosting) luchan por ofrecer el sevicio más barato posible, incluso se anuncian en televisión, y es evidente que la crisis actual hace pensar a la gente que necesariamente deben ahorrar en hosting.

Hemos notado que últimamente nos llegan cliente con una serie de problemas comunes relacionados con la materia. Muchos están hartos de su servicio de alojamiento, bien sea por problemas de rendimiento, porqué sus webs han sido atacadas o porqué están cansados de tener que llamar a un 902 cuando tienen un problema y tener que explicárselo a personas que, frecuentemente, no tienen el nivel suficiente. De hecho, algunos de los servicios más “modernos” y baratos ni siquiera permiten hablar con una persona, sino que te obligan a escribir un ticket para gestionar tus dudas o problemas técnicos…

Nosotros, como muchos de ellos, ya hace tiempo que sufrimos el mismo proceso y aprendimos que barato no es sinónimo de bueno y que, si tu negocio depende de ello, más vale que haya una persona responsable y preparada con quién poder hablar.  Así, nosotros ofrecemos también alojamiento web, pero con algunas características distintas al mainstream:

  • Somos humanos, nos llamas y te respondemos
  • Damos soluciones a necesidades de hosting especiales, computación en la nube (Cloud Computing), servidores privados virtuales (VPS), grandes sistemas y, si lo necesitas, completamente administrados
  • Nosotros nos encargamos de las copias de seguridad y de todos los temas técnicos, para que tú te puedas centrar en tu negocio
  • Si necesitas hacer algún cambio, si tienes una duda o si alguna cosa no funciona… una persona te atenderá
  • Además, te podemos orientar para que cumplas sin problemas con la LOPD y la LSSI, y nuestros servidores están en España

Como siempre decimos, nuestro hosting es caro pero bueno, porqué pensamos que el precio no lo es todo.

Un paso adelante

Ya hace unos días que hemos inaugurado una nueva sección de la web para la descarga de contenidos, pensando principalmente en el software desarrollado por AheadData, como es el caso de nuestro software de gestión discográfica y cálculo de regalías, Data-Forward.

Además, hemos dado otro paso a la hora de llegar a la gente y poder vender en todo el mundo, con un software disponible en inglés, la web en inglés y francés, y un vídeo explicativo en inglés disponible públicamente a través de YouTube:

Contenido no disponible.
Por favor, acepta las cookies haciendo clic en el banner

Se trata, en parte, de un experimento para comparar el estado de otras zonas o mercados respecto de la situación en españa, que cont continúa siendo decepcionant, pero sobretodo se trata de aplicar una visión global y diversificadora a la empresa, como un paso adelante más.