viernes, 11 de abril de 2014

Ubuntu: crear alias para comandos y mantener los cambios en ~/.bash

Buenas a todos!
Normalmente cuando empleamos mucho el shell de ubuntu, tenemos que repetir muchas veces los mismos comandos, esto puede acabar ralentizando nuestro trabajo.
Por ejemplo, supongamos que estamos  editando archivos de configuración de un servidor nginx y constantemente tenemos que estar escribiendo:
nano /etc/nginx/sites-available/default

Sería mucho más cómodo poder poner en cualquier momento, nginxconf y que se ejecutara esa misma instrucción para editar el archivo. Podemos conseguir esto empleando la instrucción alias, que asigna a un nombre de variable una cadena que define una instrucción:

root@ubuntu:/# alias nginxconf='nano /etc/nginx/sites-available/default'

Ahora si escribís nginxconf, en la consola directamente se ejecutará la instrucción que habéis indicado.
Pero si reiniciais el equipo, el alias desaparecerá.

Modificar el archivo ~/.bash para mantener los alias

Para que los alias que necesiteis sean permanentes y no tengáis que crearlos cada vez que reiniciais el equipo, debéis editar el archivo ~/.bash.
Abrir el archivo bashrc:
sudo nano ~/.bashrc

Al final del archivo debéis escribir la instrucción que crea el alias:
alias nginxconf='nano /etc/nginx/sites-available/default'

Guardáis los cambios (control+X y Yes), y cuando el equipo reinicie, los cambios se habrán aplicado.

Aplicar los cambios del archivo ~/.bash sin reiniciar el equipo

Para no tener que reiniciar, y que los alias que hayáis introducido ya estén disponibles, podéis ejecutar la siguiente instrucción:

sudo source ~/.bashrc

Y con esto ya está todo!
Un saludo!

jueves, 10 de abril de 2014

MongoDB: borrar una base de datos en MongoDB

Buenas a todos!
Para borrar una base de datos en MongoDB desde la línea de comandos, debemos seleccionar la base de datos que queremos borrar y emplear la instrucción dropDatabase():
Por ejemplo vamos a borrar la base de datos mydb:

root@ubuntu:/# mongo

> show dbs
db0     0.203125GB
db_world        0.203125GB
mydb    0.203125GB

show dbs, nos muestra las bases de datos activas de MongoDB.

> use mydb
switched to db mydb

Seleccionamos como base de datos actual mydb.

> db.dropDatabase()
{ "dropped" : "mydb", "ok" : 1 }

Borramos la base de datos mydb y ahora mostramos de nuevo las bases de datos:

> show dbs
db0     0.203125GB
db_world        0.203125GB

Como podéis ver ya no se muestra mydb en el listado de bases de datos.

Y eso es todo! Un saludo a todos!

MongoDB: crear una base de datos en MongoDB

Buenas a todos!

Crear una base de datos en MongoDB es tan simple como abrir el cliente del servidor en el shell, y usar la instrucción use y el nombre de la base de datos.

root@ubuntu:/# mongo
> use db_nueva
switched to db db_nueva

Esta instrucción comprueba si ya existe la base de datos, y entonces asigna su referencia a la variable db, para que podamos consultar, y realizar otras operaciones sobre esta base de datos en concreto. En caso de que no exista, crea la base de datos.

Si cerramos el cliente en este punto, la base de datos desaparecerá ya que no contiene ninguna collection, que son los equivalentes a las tablas de SQL.
De hecho, si ejecutamos el comando que muestra las bases de datos "show dbs", no mostrará nuestra base de datos.

Basta con que creemos una collection, en este caso products.
> db.createCollection("products")
{ "ok" : 1 }

Una vez hecho esto la base de datos ya se ha creado y podemos verla en la lista de bases de datos:
> show dbs
db_nueva     0.203125GB

Para un acercamiento mayor, podéis visitar el post Hello World MongoDB, introducción a MongoDB!

Un saludete!

Hello World MongoDB, introducción a MongoDB

Buenas a todos!

Voy a hacer una pequeña introducción o Hello world en MongoDB!

A diferencia de las bases de datos relacionales típicas, como Oracle o MySQL, que emplean el lenguaje de declarativo SQL, MongoDB emplea para generar las consultas, inserciones, actualizaciones y eliminaciones, JavaScript!

Además los resultados obtenidos por las consultas están en formato JSON, lo que es perfecto cuando trabajamos con aplicaciones web.

Equivalencias entre conceptos de SQL y conceptos de MongoDB 

En MongoDB no tenemos tablas, trabajamos con collections.

Y lo que equivaldría a una fila o row de una tabla en SQL, en MongoDB es un document o BSON document. Los BSON documents son los que almacenan los objetos json en formato binario.

Los objetos json contienen campos o fields, no columnas como las tablas SQL.

De todas formas ambos sistemas de base de datos emplean las primary keys, para definir los campos que identifican de forma única una fila o un document (objeto json).

Mientras que en SQL hay que especificar la creación de todas las columnas de una tabla, MongoDB de forma automática crea un campo o field llamado _id que contiene la primary key, es un comportamiento por defecto muy útil.

Hello world MongoDB

Muy bien! Vamos a crear una pequeña base de datos a modo de Hello world para MongoDB.

La base de datos se llamará 'db_world' y contendrá paises del mundo, un listado con los idiomas que se hablan y las capitales.

Una vez instalado MongoDB, vamos a ejecutar en el shell de linux, la instrucción "mongo".

Crear la base de datos
> use db_world Si no existe, la crea y asigna a la variable db una referencia a las instancias de db_world.
Si ya existe, asigna a la variable db una referencia a las instancias de db_world.

Crear una collection e insertar un objeto
> db.world.insert({country:"Spain", capital:"Madrid", language:["es","ca","eu","gl"]}) Al realizar el insert se crea automáticamente la collection world, y directamente se inserta el objeto json que contiene los datos del país.

Consultar los datos de una collection
> db.world.find() Genera la salida:
{ "_id" : ObjectId("534665c91895da39bc16ff56"), "country" : "Spain", "capital" : "Madrid", "language" : [ "es", "ca", "eu", "gl" ] }

Como podéis ver automáticamente ha añadido el campo primary key _id, y la salida es el objeto json.

Ahora vamos a añadir otro país:
> db.world.insert({country:"Switzerland", capital:"Berna", language:["fr","de","it"]})

Si volvemos a realizar el find sobre la collection world, generará la siguiente salida:
> db.world.find() Genera la salida:
{ "_id" : ObjectId("534665c91895da39bc16ff56"), "country" : "Spain", "capital" : "Madrid", "language" : [ "es", "ca", "eu", "gl" ] }
{ "_id" : ObjectId("5346665762bac1c0ff258610"), "country" : "Switzerland", "capital" : "Berna", "language" : [ "fr", "de", "it" ] }

find() también nos permite consultar los objetos que contienen un valor específico.
Por ejemplo, supongamos que queremos ver el país cuya capital es Berna:
> db.world.find({capital:"Berna"})
Respuesta:
{ "_id" : ObjectId("5346665762bac1c0ff258610"), "country" : "Switzerland", "capital" : "Berna", "language" : [ "fr", "de", "it" ] }

O algo más complejo, supongamos que queremos ver los países donde se habla francés:
> db.world.find({language:{$in:["fr"]}})
 Respuesta:
{ "_id" : ObjectId("5346665762bac1c0ff258610"), "country" : "Switzerland", "capital" : "Berna", "language" : [ "fr", "de", "it" ] }


Cómo podéis ver, en ningún momento he tenido que declarar la estructura de los objetos que debe contener la collection world, eso es debido a que al igual que los objetos de javascript, las collections de MongoDB no obligan a cumplir una estructura determinada, de hecho su estructura puede variar dinámicamente, añadiendo o quitando campos, mediante el uso de update().

Hasta aquí mi introducción a MongoDB!
Espero que haya sido fácil de entender y que os anime a utilizarlo!

Un saludo a todos!!

martes, 1 de abril de 2014

Android: activar la vibración del móvil

Buenas a todos!!

Para que nuestras aplicaciones puedan hacer uso de la vibración del móvil es necesario que incluyamos en el AndroidManifest.xml el permiso VIBRATE:

<uses-permission android:name="android.permission.VIBRATE"/>

Una vez hecho esto, desde cualquier punto de nuestro código podemos crear una instancia de la clase Vibrator:

Vibrator v = (vibrator) getSystemService(Context.VIBRATOR_SERVICE);

Y para hacer que vibre, hacemos una llamada al método vibrate indicando los milisegundos que queremos que el móvil se mantenga vibrando:

v.vibrate(500);

Con esto hacemos que el móvil vibre 500 milisegundos o lo que es lo mismo, medio segundo.

Y eso es todo! Un saludo!

MySQL: instalar MySQL en Ubuntu Server

Buenas a todos!
Para instalar MySQL en Ubuntu desde la consola debemos ejecutar la siguiente instrucción:

sudo apt-get install mysql-server

Una vez hecho esto, el servidor de base de datos MySQL ya está en funcionamiento, ahora para que sea capaz de aceptar conexiones externas, debemos modificar el archivo de configuración que se encuentra en /etc/mysql/my.cnf

nano /etc/mysql/my.cnf

Y en el apartado bind-address, sustituir la ip que encontremos, por la ip de nuestro servidor.
bind-address = 120.200.10.130
La ip de nuestro servidor la podemos ver gracias al comando ifconfig, en el apartado inet.

Una vez hecho esto reiniciamos el servidor MySQL con la siguiente instrucción:

sudo /etc/init.d/mysql restart

Y eso es todo! El servidor MySQL ya está instalado, ahora lo más conveniente es que sean añadidos usuarios para poder realizar conexiones a la base de datos.
Para saber como añadir usuarios, podéis consultar el siguiente post:
http://iwokloco-appweb.blogspot.com.es/2014/04/mysql-crear-un-usuario-con-todos-los.html

Un saludo a todos!

Ubuntu: crear el password para la cuenta root

Buenas a todos!
Es muy importante que tengamos activo el superusuario root, para poder realizar todos los cambios que queramos en Ubuntu, instalar software, crear usuarios, asignar privilegios, etc.

sudo passwd root

Una vez indiquemos el password ya podemos trabajar como root, solamente tenemos que poner la instrucción "su", nos pedirá la contraseña introducida, y ya tenemos activo el superusuario para realizar todos los cambios e instalaciones que necesitemos!

usuario@ubuntu:/$ su
Password:
root@ubuntu:/#


Un saludo!

Ubuntu: configurar cliente ssh para conectarnos con Putty

Buenas a todos!
Para conectarnos y administrar de forma remota y segura a nuestros servidores Ubuntu empleamos el protocolo SSH, este protocolo encripta la información que transmitimos durante la comunicación.
Para poder emplear el protocolo ssh, es necesario que el servidor ubuntu, tenga instalado un servidor ssh.
En la consola de ubuntu instalamos openssh-server:
> sudo apt-get install openssh-server

Una vez instalado, el servicio ssh estará activado y ya podremos conectarnos remotamente.
Para ver la ip de nuestro servidor podemos emplear el comando.
> ifconfig

El valor que nos interesa es la ip inet.

Para conectarnos desde otro ordenador, en este caso vamos a emplear un cliente ssh  para windows llamado PuTTy.  Una vez lo tengáis descargado, sólamente tenéis que ejecutarlo (no requiere instalación) y indicar la ip de vuestro servidor remoto.

El username y password para administrar el equipo, son los de cualquier usuario que tengáis en vuestro sistema Ubuntu.

Un saludo a todos!

Ubuntu: configurar el teclado español por la consola

Buenas a todos!
En muchas ocasiones, cuando trabajamos sobretodo con ubuntu server instalado en máquinas virtuales VMWare, nos podemos encontrar con que las teclas de nuestro teclado no se corresponden con los carácteres que se muestran. Esto suele deberse a que por defecto tiene configurado el mapeo de teclados en inglés, donde no hay ñ.
Para poder usar nuestro teclado español sin problemas, sólo tenemos que ejecutar la siguiente instrucción:

sudo loadkeys es

Y con esta simple instrucción se soluciona el problema!
Un saludo a todos!

MySQL: crear un usuario con todos los privilegios en MySQL

Buenas a todos!
Crear un usuario administrador con todos los privilegios en MySQL desde la consola puede seros muy útil. Con este usuario podréis conectaros desde el MySQL Workbench, o directamente para trabajar a través de la consola, o simplemente para conectaros desde los servidores web.

mysql> use mysql;
mysql> GRANT ALL PRIVILEGES ON *.* TO admin@"%" IDENTIFIED BY 'password' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;


Hecho esto, ya podemos conectarnos empleando el usuario "admin" y con el password "password".

Espero que os sea útil! Un saludete!

Ubuntu: configurar servidor FTP en ubuntu server

Buenas a todos!
El programa que vamos a emplear como servidor ftp es vsftp, en un Ubuntu server.
Lo instalamos de la siguiente forma:
sudo apt-get install vsftpd
En el sistema operativo tenemos un usuario local llamado ftp_user, y queremos conectarnos con él a través de un cliente ftp.

El archivo de configuración de vsftp es /etc/vsftpd.conf y he fijado los siguientes atributos y valores:
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list


Creamos el archivo que contendrá la lista de usuarios del ftp:
nano /etc/vsftpd.chroot_list

Y añadimos el usuario ftp_user.
#Usuarios
ftp_user


Para aplicar los cambios reiniciamos el servidor:
sudo /etc/init.d/vsftpd restart

Ahora vamos a añadir los permisos de escritura para el usuario ftp_user sobre los directorios del tomcat:

sudo usermod -a -G www-data ftp_user -a: el usuario se añadirá al grupo.
-G: el grupo al que se añadirá el usuario.
La instrucción hace que el usuario ftp_user se añada al grupo www-data.

sudo chgrp -R www-data /var/lib/tomcat7 -R: indica que el cambio será recursivo, afectará a los archivos y directorios recursivamente.
chgrp hace que el grupo propietario del directorio tomcat7 y sus subdirectorios archivos sea www-data.

sudo chmod -R g+w /var/lib/tomcat7 -R: indica que el cambio será recursivo.
g+w: significa que al grupo ("g") le añadimos ("+") el permiso de escritura ("w").

Y eso es todo! Con esto ya podréis subir archivos desde cualquier cliente FTP como FileZilla!
Espero que os sea útil!