Keystone JS in Linux doesn’t Start (And how to fix)

keystonejs

Recently I have to develop somethings in Nodejs and I found this CMS framework and I think to test it, in the web page you can found the starter guide. But when I was running the application with the command:

node keystone

I have two problems:

1.Error in bson module:

{ Error: Cannot find module '../build/Release/bson'
    at Function.Module._resolveFilename (module.js:470:15)
    at Function.Module._load (module.js:418:25)
    at Module.require (module.js:498:17)
    at require (internal/module.js:20:19)
    at Object. (/home/asanchez/Development/Bitbucket/incticket/node_modules/bson/ext/index.js:15:10)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at Module.require (module.js:498:17)
    at require (internal/module.js:20:19)
    at Object. (/home/asanchez/Development/Bitbucket/incticket/node_modules/bson/lib/bson/index.js:3:24)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32) code: 'MODULE_NOT_FOUND' }

2.The server start but does nothing and the console screen is blank, it not showing nothing.

The problem has been in my installed versions of the Nodejs and mongodb (I had had to update both Nodejs to v7.4.0 and mongodb to v3.4.1) and  I change the version of mongoose in this file “node_modules/keystone/package.json”, when you donwload Keystone has “mongoose”: “~3.8.35” I change to “mongoose”:”^4.6.5″ like as mention in this issue after that you need update the package with “npm install” and  the application start without problems.

This is my result, no more errors =)

keystonejs1

keystonejs2

I hope this tip help others.

Regards!

Guardar tus libros de Kindle en Calibre.

Para los que leen…

Hace poco decidí comparar un lector Kindle para aprovechar mejor mis trayectos y leer un poco más, sin embargo me gusta más “tener/sentir” un libro físico que uno virtual. Además los libros de mi profesión (TI) son dificiles de conseguir y muy caros en mi país, por eso casí siempre termino leyendo material digital en mi teléfono, en una tablet y en mi computadora.

Y vaya que durante todos estos años ya tengo bastante material recopilado y lo organizo con la palicación llamada Calibre, que te permite tener una biblioteca completa y ordenada de libros digitales. Y ademas tiene funciones muy interesantes, como soporte para lectores digitales, crear un servidor web, plugins, conversión de archivos etc…

Por otra parte estoy probando el servicio de Amazon unlimited, el cual basícamente es un esquema en el que tienes acceso a un amplio catálogo de libros por una renta mensual. Sin embargo en este “servicio” los libros son prestados, pero aquí vamos a ver como puedes descargarlos y guardarlos en Calibre.

Requisitos

Tener instalado:

Abres la aplicación Kindle y descargas/compras el libro:

Kindle for Mac Seguir leyendo

Install Java JDK on Server (Suse)

La instalación del a jdk en servidores Unix puede generar a veces algunos problemas ya que generalmente no hay una guía exacta para realizar la instalación, pero desde mi punto de vista creo que también se debe a que en internet hay muchas formas de hacerlo y también es verdad que Unix lo permite, por lo tanto no hay una forma “correcta” de hacerlo.

Sin embargo hay una forma de mantener un orden dentro de todo este caos, por ejemplo hay servidores que a veces necesitan tener instaladas dos o más versiones de la jdk en el mismo server… y ¿como controlamos esto? este tipo de cuestiones son las que causan esos problemas  a los que me refiero porque muchos ajustamos variables de entorno y terminamos creando un dessatre, y bueno antes de mostrar la instalación quería transmitir esta pequeña perspectiva.

El siguiente comando es el que nos a ayudar en Suse a controlar esto:

update-alternatives

Nota: en Ubuntu el equivalente es el comando alternatives
Seguir leyendo

Add unix user for tomcat service

Regresando un poco a las raices de como instalar este server creo que una pequeña y práctica nota para hacerlo es poner atención al usuario que utilizamos para ejecutar el contenedor web.

A veces no le damos mucha importancia a estos detalles porque generalmente siempre tenemos muchas actividades y lo que todo mundo quiere ver es la aplicación funcionando en el menor tiempo posible, y lo clasico es dejar la instalación con un usuario de administración o el root (en el peor de los casos).

Por ello decidí tomar unos minutos para escribir estas líneas con los comandos de como debemos agregar un usuario de servicio para nuestro contenedor para que sea ejecutado en el servidor.

Con esto podemos crear un usuario que no tiene privilegios para firmarse en el sistema sin embargo, puede ejecutar comandos através de la instrucción sudo.

Esto es una muy buena practica de seguridad para evitar que se firmen en el sistema con los usuarios de servicio, sin embargo ¿que pasa si un día necesitas entrar con este usuario?, fácil podemos cambiarle el shell con la iinstrucción:

# Enable login
sudo usermod -s /bin/sh tomcat
# Disable login 
sudo usermod -s /bin/false tomcat

Ah y algo muy importante que puede pasar en algunas distribuciones es que al iniciar el contenedor no puede enlazar el puerto 80 con un usuario diferente al root por lo que debes redireccionar los puertos con el comando iptables:

When running Tomcat as a user other than the root user, you will not be able to bind to port 80, which is where Tomcat listens for HTTP requests

Aunque vaya esto último solo es para ambientes de desarrollo, en producción ¡nunca! debes hacer esto, en su lugar debes colocar un servidor proxy que redireccione las peticiones al tomcat.

Bueno y el último paso es generar un script para que se ejecute cada vez que se inicie o detenga el sistema operativo:

Generas un archivo “vi /etc/init.d/tomcat” con el siguiente contenido:

Debes cambiar la variable TOMCAT_HOME con la ruta donde se encuentra ubicado tu servidor.

# Add permisions
chmod 755 /etc/init.d/tomcat
# Add script to automatic 
update-rc.d tomcat defaults
Referencias

Set System Variables in Windows


En ocasiones tenemos los permisos restringidos y no podemos accesar a la configuración de variables del sistema de windowos, pero… existe una alternativa (solo windows 7 y 8).

Puedes establecer y modificar las variables desde la terminal, en el siguiente ejemplo se muestra como agregar la variable para Maven:

Abres una terminal y escribes los siguientes comandos:

setx M2_HOME "C:\Users\asanchez\Apps\apache-maven-3.2.1" /M
setx PATH "%PATH%,%M2_HOME%\bin" /M

Con esto ya tenemos cargadas las variables.

Nota: Para que los cambios se vean reflejados debes cerrar y abrir la terminal.

Espero sea útil. Saludos!

Referencias