martes, 26 de abril de 2011

levantar base mysql teniendo archos

Para situarnos en el problema, vamos a suponer que tenemos un equipo andando perfecto con mysql, y este equipo se rompe algo del sistema operativo (en mi caso Linux) pero podemos acceder a los archivos del disco, entonces lo que queremos hacer es instalar el S.O. y luego levantar las bases que tenía antes, vamos a suponer también que no tenemos un respaldo.
Las bases que yo utilizo son InnoDB, así que este proceso es factible con este tipo de formato, con MyIsam, no lo puedo asegurar

Lo primero que tenemos que hacer es instalar el sistema operativo y el mismo mysql que teníamos antes (si tenemos exactamente la misma versión mejor, sino quizás el proceso no funciona).
Ahora bajamos mysql para que no moleste ni tenga ningún archivo lockeado.
Luego tenemos que copiar los archivos de configuración del mysql y los archivos de datos del disco roto, a el nuevo disco, esto es el archivo my.cnf, y todo lo que está en la carpeta /var/lib/mysql, tanto el o los archivos ibdata, como las carpetas, si se fijan las carpetas tiene los nombres de las bases de datos.
Debemos de fijarnos que los permisos de la carpeta /var/lib/mysql queden como originalmente, normalmente solo el usuario mysql puede hacer cosas en estos archivos o carpetas, pero si no llegan a darle en la tecla, le dan permisos totales (obviamente esto es un problema de seguridad).
Ahora reiniciamos el servicio de tomat, y si tenemos suerte van a quedar levantadas las bases que teníamos con los datos que teníamos.

Resumen:
1 – instalar S.O. y MySql
2 –bajar mysql
3 – copiar archivos de configuración de disco roto a nuevo disco
4 – copiar archivos y carpetas de datos del disco roto a nuevo disco
5 – verificar permisos
6 – levantar mysql y probar

lunes, 4 de abril de 2011

Nueva forma de ver los blog

Se habilito una nueva forma de ver los blog, les dejo el link de mi blog.

http://mistrucosinformaticos.blogspot.com/view/timeslide

Pueden ver arriba a la derecha las 5 formas de verse, la que más me gusta es la que indico arriba.

Achicar discos de vmware

Ya en un post anterior explique cómo agrandar un disco de una máquina virtual, ahora me enfrento a lo contrario, tengo un disco que el archivo vmdk me pesa unos 18GB, pero si entro al sistema operativo, en este caso es Ubuntu Server, me dice que ocupado tengo unos 2 GB, y lo que quiero es ver si puedo dejarlo al vmdk en estos 2GB (obviamente algún poco mas).

Por qué el vmdk pesa 18GB, bueno el sistema operativo tenía una base de datos, la cual en su momento tenía algunas tablas con muchísimos datos, y está bien que haya crecido hasta los 18GB, pero luego de usarlo en su momento limpie la base y esto se achico nuevamente, y ahora el uso que le voy a dar es mucho menos, entonces con 3 o 4 GB totales me va a dar y sobrar, entonces para no desperdiciar espacio en mi equipo o en mi lugar de respaldo, lo necesito achicar.

Bueno yo hace mucho tiempo utilice el programa de Norton, llamado Norton Ghost, esto lo que hace es te puede hacer un clonado de discos o llegar un disco a una imagen (utilizado cuando vas a instalar muchos equipos idénticos, entonces perdes el tiempo en el primero y los otros solo levantas la imagen). Luego surgieron varias aplicaciones libres y la que más me llama la atención es Clonezilla. Además esta aplicación tienen un live cd el cual te arranca el sistema operativo y directamente podes trabajar desde ahí.

Entonces para empezar lo que tenemos que hacer es a nuestra máquina virtual agregarle un disco duro de igual o mayor tamaño que el que tiene, esto está bien es de igual o mayor tamaño, el tema es que no tenemos que hacer que sea persistente, y que sea autoextendible, recordar que realmente en vez de los 20GB que decía mi máquina, realmente usa solo 2.

Segundo tenemos que bajarnos la última versión del live Cd de Clonezilla, bajamos la iso, para poder ponerla como cd de arranque de la máquina virtual. Obviamente tenemos que configura la máquina virtual para que boote desde el CD.

Ahora solo basta en correr la máquina virtual, ver que arranque desde el CD, luego seguir los pasos con clonezilla, la opción que hay que elegir es realizar una clonación de disco a disco, luego de algún rato, esto termina y apagamos la máquina, luego lo que hacemos es eliminar el disco principal y dejar solo este nuevo que clonamos. Si todo funciono perfecto, lo que vamos a ver es que el vmdk, en vez de pesar los 18GB, está pesando muchísimo menos.



-----------------------------------------------------------------------------


Agregado: Como un amigo (Federico Alvarez) se enfrento a esto, y el me aconsejo poner un resumen de lo que hay que hacer, y el se tomo el trabajo de hacerlo, lo voy a copiar aca para que le sirva a alguien mas.



reducir MySQL

0) SNAPSHOT!

1) respaldar todas las bases de equipo

2) bajar servicio de MySQL

3) modificar /etc/my.cnf ó /etc/mysql/my.cnf

pasar ibdata a 100M (o el valor que se considere)

4) eliminar todo el contenido de /var/lib/mysql/

menos: mysql_upgrade_info, mysql (carpeta)

5) reiniciar MySQL

chequear nuevo ibdata1 de 100M

6) levantar respaldo de bases

chequear que funcionen las aplicaciones

reducir HDD

0) SNAPSHOT!

1) crear segundo disco de 50Gb (no prealocado, autoextend), y el tamaño es igual o mayor que el anterior

2) crear unidad de CD precargada con ISO de clonezilla

3) iniciar la maquina

4) crear un clon disco-disco de SDA a SDB

5) darle a todo por defecto (leer que se hace en cada punto)

6) apagar

7) eliminar disco1

8) eliminar CD

9) iniciar maquina y chequear

10) eliminar snapshots (sino no liberas el disco)



detectar tarjeta de red

En un anterior post mostré como configurar las tarjetas de redes en un Linux o más específicamente si esta es una máquina virtual. Pero lo que está pasando es que a veces no se está tomando la tarjeta en el eth0, sino que es el ethxx, siendo este xx cualquier número, entonces la opción que mostré antes es poner de la uno a la 20 y esto (si xx es menor a 20) se soluciona.

Ahora analizando un poco y no queriendo tener que configurar 100 eth0, es detectar en Linux cual es la eth que si detecta.

En resumen tenemos que ejecutar el siguiente comando:

$ dmesg | grep eth

Esto nos tira que eth es el que Linux ve, y con esto vamos a el archivo interfaces y configuramos solo esta tarjeta.

domingo, 3 de abril de 2011

Instalar y configurar ambiente Linux con Ruby para aplicacion Genexus Ev2 para Android

Luego de hacer mil pruebas voy a comentar cómo hacer para tener un ambiente Linux, en mi caso la distro que utilice fue Ubuntu, con Ruby, en mi caso la versión 1.9.1 que es la que funcionaba con Genexus Evolution 2 (beta 2 y algún nigth buils mas, pero creo que no me equivoco si digo que desde evolution 1 en delante, hasta hoy funciona), y una aplicación en mi caso particular para Android.

Perimo contarle que hice muchas pruebas, en las que utilizando Ubuntu Desktop 10.10 (supongo que server 10.10 es lo mismo), no pude llegar a que funcionara, el problema es que instales lo que instales, de ultima queda instalado Ruby 1.9.2, y esto no le gusta a las aplicaciones Genexus.

Las otras pruebas las realice (y en esta si me quedo andando) con Ubuntu Server 10.4.

También les cuento que probé varias formas de instalar, tanto ruby como las otras cosas que necesito, por ejemplo passenger, y la única que me función es la que voy a describir abajo, probar instalando por rvm (que es un manejador / instalador de ruby, dicho muy brutamente), con el código fuente, a la vieja usanza del famoso make, make install, con apt-get, pero repito la única forma que me anduvo fue como describo (para obtener este manual estuve trabajando más de 1 semana entera, y muchas horas en cada dia)

Bueno me base en un manual que la gente de artech tienen desde hace tiempo y mucha ayuda de alguien de Artech (su nombre es Daniel Mendez, y es un conocido de los eventos gx, por más que nunca hable con el), para el que quiera mirarlo les deja el link http://wiki.gxtechnical.com/commwiki/servlet/hwiki?Linux+setup+for+running+Ruby+applications+using+mod-rack

Pero con este manual no basta (por lo menos a mi no me basto ni por casualidad).

Empecemos:

Paso 1: Instalar Ruby:

Para esto ejecutamos lo siguiente (recordar que esto es para Ubuntu Server 10.4 en la versión más nueva no funciona porque termina instalando la versión 1.9.2)

$ sudo apt-get install ruby1.9.1-dev ruby1.9.1 ri1.9.1 rdoc1.9.1 irb1.9.1 libreadline-ruby1.9.1 libruby1.9.1

Paso 2: Crear los links a lo instalado:

$ sudo ln -s /usr/bin/ruby1.9.1 /usr/local/bin/ruby

$ sudo ln -s /usr/bin/ri1.9.1 /usr/local/bin/ri

$ sudo ln -s /usr/bin/rdoc1.9.1 /usr/local/bin/rdoc

$ sudo ln -s /usr/bin/irb1.9.1 /usr/local/bin/irb

$ sudo ln -s /usr/bin/gem /usr/local/bin/gem

Esto se puede hacer acá o más adelante, pero como lo necesito lo hago acá, si nos fijamos en la carpeta /usr/local/bin, vamos a ver que el link a gem no está bien (debe de aparecer en rojo), pero por ahora la dejamos así.

Paso 3: Instalar algunas gemas que precisamos.

$ sudo apt-get install libmysql-ruby1.9.1

$ sudo apt-get install rubygems1.9.1

$ sudo apt-get install libmysqlclient15-dev

Para este paso y para todos los que vienen cada cosa que instala debemos de ver que no quiera instalar algo distinto a la versión 1.9.1, si por alguna cosa dice que quiere instalar alguna otra versión, tenemos que buscar la vuelta para no hacerlo.

Paso 4: Instalar gema passenger

$ sudo gem install passenger

A esta altura si nos fijamos el link de gem que hicimos en el punto 2 ya debe de estar verde.

Para cerciorarnos que todo sigue bien desde la consola debemos de ver la versión de ruby

$ ruby -v

Si esto nos dice 1.9.1 esta todo bien, si dice otra cosa algo hicimos mal y no creo que funcione la aplicación genexus.

Paso 4: Instalar passenger.

Primero tenemos que descargarnos passenger, yo la versión que instale fue la 3.0.5. Luego que lo tengamos lo copiamos a alguna ruta, en mi caso /home/teto/passenger, luego entramos a la carpeta bien (la van a ver dentro de lo que descomprimimos), y le daremos permiso de ejecución y ejecutamos lo siguiente:

$ cd ./passenger-X.X.X/bin/
$ chmod 777 passenger-install-apache2-module
$ ./ passenger-install-apache2-module

Esto es interactivo, es decir que nos va tirando por consola varios mensajes, el primero es que va a empezar a trabajar, luego hace un chequeo, y acá es donde empieza a complicarse un poco la instalación, ya que casi seguramente no pase todos los chequeos, pero al final el instalador nos va diciendo que nos está faltando y cómo podemos hacer para instalarlo, todo es con apt-get, pero aca hay que tener mucho, mucho, cuidado, ya que si empezamos a ejecutar lo que nos dice, sin mirar lo que va a instalar (sobre todos las dependencias que necesitan los paquetes que instalamos), que en ningún momento nos diga que va a instalar algo distinto a ruby 1.9.1. Mi consejo es que vayan instalando de a una y que vayan mirando las dependencias, y si algo les da una dependencia de con un ruby 1.8 (este fue mi caso), que lo dejen de lado y vayan instalando lo otro, que nos dijo, o buscando la versión 1.9.1 del paquete. Sé que no es muy específico lo que digo pero solo en un par de paquetes nos da problemas, la gran mayoría se pueden instalar directamente.

Cuando se termina de instalar passenger, nos da 3 renglones que tenemos que guardarlos para poner en el archivo de configuración de apache.

Si llegamos a este paso ya tendríamos casi todo pronto, lo que nos falta ahora es tener apache instalado, y configurado.

Paso 4: instalación y configuración de apache2.

$ sudo apt-get install apache2


En el archivo /etc/apache2/apache2.conf al final agregamos las 3 líneas que nos dio el instalador
de passenger en mi caso es algo así



LoadModule passenger_module
/home/teto/ruby/passenger-3.0.5/ext/apache2/mod_passenger.so
PassengerRoot /home/teto/ruby/passenger-3.0.5
PassengerRuby /usr/bin/ruby1.9.1


Ademas tenemos que modificar el httpd.conf para indicar el directorio virtual del apache,
en mi caso es algo asi (esto también lo indica el instalador de passenger pero lo que nos
pone no está del todo bien)


VirtualHost // esto va entre simbolos de mayor menos
ServerName localhost
DocumentRoot /home/teto/ruby/aplicacion/public
Directory /home/teto/ruby/ aplicacion /public
// esto va entre simbolos
// de mayor menos
AllowOverride all
Options -MultiViews
/Directory
// esto va entre simbolos de mayor menos
/VirtualHost // esto va entre simbolos de mayor menos

Si se fijan, mi aplicación , se llama aplicación, pero tenemos que indicar hasta public.

Paso 5: copiar la aplicación.

Bueno esto es la parte fácil (creo), teniendo ya compilada y bien configurada la aplicación en genexus, recordar poner bien la base de datos, el webroot que tienen que tener algo asi: http://ipdelservidor/aplicacion, luego generamos y compilamos, para que nos cree todos los objetos que necesitamos.

Luego detecatamos donde nos crea los objetos (si lo dejaron por defecto estaría en RubyModel), y copiamos todo, a la carpeta del servidor /home/teto/ruby/aplicacion.

Luego creamos dentro del servidor una carpeta tmp y una public (/home/teto/ruby/aplicación/tmp y /home/teto/ruby/aplicación/public)

Luego (y esto no se si es necesario y me parece que no pero yo lo hago por las dudas) encontramos la carpeta gxruby de donde instalamos genexus y la copiamos también a la carpeta /home/teto/ruby/aplicación.

Paso 6: probar que funcione.

Lo podemos probar desde el emulador o desde algún celular que tenga android, si es desde el emulador solo tenemos que darle play a genexus (si tenemos todo bien configurado, la base creada etc., la aplicación se muestra en el emulador) o ejecutar nuestra aplicación en el cel.

Bueno con esto a mí me funciono, por favor si hay algún error o si alguien tienen una forma más fácil, me lo comenta para investigarlo.

sábado, 2 de abril de 2011

Desinstalar rvm

rvm es un instalador de ruby, pero en mi caso quiero deshacerme de el porque me está causando problemas para una instalación de ruby para una aplicación genexus (Evolution 2 en este caso particular).

Lo que debemos ejecutar desde consola es

rvm implode

con este simple comando nos dará de baja todo el rvm, en mi caso antes para cerciorarme que todas las versiones de ruby que tenia instalada (porque se puede tener varias versiones, y rvm las maneja), fui desinstalando de a una de esta forma:

rvm remove 1.9.1
rvm remove 1.9.2

……

Luego si doy de baja el rvm, al finalizar el comando este nos dice que tenemos que borrar a mano algunos archivos.

Bateria en Android

Si leyeron el anterior post, sabrán que tengo un celular nuevo con Android, en particular Samsung Galaxy 5.

El celular está muy bien pero tiene la contra de todos los celulares nuevos que la batería no dura lo que uno quiere, en particular usándolo muy poco me duraba 1 día.

Entonces un amigo (Federico A.) investigando el celular encontró que se puede pasar de red 3G a 2G, con este simple cambio (que en el celular llegan a esto siguiendo la ruta: Ajustes – Conexiones inalámbricas – Redes móviles – Utilizar sólo redes 2G), y obviamente bajando el brillo, el celular paso de 1 a 4 días, en un uso moderado.