martes, 21 de julio de 2009

Appliance Redmine con Ubuntu JeOS (1-Creando la base)



Gracias a Bitnami y sus cómodos instaladores de aplicaciones, una de las últimas incorporaciones en el trabajo ha sido Redmine, un gestor de proyectos sencillo de aprender y "relativamente potente". Lo de "relativamente" es porque este software presenta una serie de cuellos de botella si se pretende virtualizar usando el instalador de Bitnami (la opción fácil de instalación):
  • La base de datos (MySQL) reside en el propio appliance.
  • Los ficheros se almacenan en el propio appliance, dentro de la carpeta de la aplicación.
La experiencia (VMware) me ha demostrado que el uso de disco en una máquina virtual es un problema debido a las bajas tasas de transferencia, asi que hay que sacar estas partes del disco virtualizado y redirigirlas a servidores existentes, con discos en RAID y varios procesadores,para aportar más fiabilidad a los datos sin añadir costes. El appliance no contendrá datos, sólo la configuración y la aplicación; un único backup bastará. Por otro lado, el uso de un servidor de ficheros externo a la carpeta de la aplicación permite el acceso desde varios appliances, pudiendo balancear mejor la carga en caso de ser necesario, cosa que se aplica también al uso de un MySQL externo. Gracias a esto, el tamaño en disco dentro de cada appliance no crecerá con el uso (excepto por los logs).

Ahora los componentes internos que instala el Stack Redmine de Bitnami:
  • MySQL. La base de datos.
  • Carpeta files. Por pemisos tiene que estar en la carpeta de la aplicación y almacena todos los ficheros adjuntados. Redmine modifica los nombres para que no haya problemas.
  • Apache. Hace de puerta de entrada (web) para redirigir las peticiones a Mongrel.
  • Mongrel. Funciona con n procesos (en modo clúster), haciendo cada proceso las llamadas a la aplicación en Ruby. Por defecto se instalan 2 nodos.
  • Ruby on Rails y Ruby Gems, el lenguaje y sus extensiones.
  • Subversion. Es un sistema de versionado. No se va a usar.
Como sistema operativo, en vez de Fedora 9 que puede estar bien para instalar directamente sobre hardware, voy a usar Ubuntu JeOS, una versión especial de Ubuntu Server para uso virtualizado que consume MUY POCOS recursos.

Para la carpeta files se usará un recurso compartido en un servidor de Windows mediante CIFS.
Para MySQL, se usará un servidor ya activo en la red, en el que se levantará una base de datos de Redmine.

Lo siguiente es crear una máquina virtual, ya explicado en una entrada anterior. Una vez creada la máquina hay que actualizarla e instalar Webmin. Como esto si que cambia respecto a Fedora 9, pongo los comandos necesarios:

sudo apt-get update

sudo apt-get upgrade


sudo apt-get install acpid wget perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl libmd5-perl openssh-server iptables cron at logrotate

wget http://prdownloads.sourceforge.net/webadmin/webmin_1.480_all.deb

sudo dpkg -i webmin_1.480_all.deb

sudo /usr/share/webmin/changepass.pl /etc/webmin root MyNewPassw0rd


Con esto (1 y 2) se actualiza el sistema operativo, (3) se instalan dependencias necesarias y aplicaciones para un uso posterior, (4) se descarga Webmin (1.480) y (5) se instala. la última línea (6) es para cambiar la contraseña de root a MyNewPassw0rd. Y ya se puede acceder a Webmin a través de https://xx.xx.xx.xx:10000 (xx.xx.xx.xx puede ser la IP o el nombre DNS del appliance). Si te hace falta parar el Firewall momentaneamente para acceder, usa.

sudo iptables -F

Dentro de Webmin ya se puede configurar el Firewall, Apache, etc... para acceder a todo de una manera más cómoda. Hasta aquí, la máquina arranca usando unos 31 Mb de RAM:


Ahora hay que instalar Redmine:

wget http://bitnami.org/files/stacks/redmine/bitnami-redmine-0.8.4-0-linux-installer.bin


sudo chmod +x bitnami-redmine-0.8.4-0-linux-installer.bin


sudo ./bitnami-redmine-0.8.4-0-linux-installer.bin


(1) Descargar el fichero ~90Mb, (2) asignarle permisos de ejecución y (3) lanzar la instalación: Usar la carpeta /opt, el nombre de usuario y contraseña se usarán para MySQL, el correo para avisos por SMTP, Spanish, no configurar de momento SMTP, continuar, arrancar Redmine tras la instalación y la última pregunta no se ve. Igual es ¿acabar con el hambre en el mundo? como pueda ser ¿formatear Internet?, NPI... le doy que Yes, salgo y borro el instalador:

rm bitnami-redmine-0.8.4-0-linux-installer.bin

Ahora ya se puede acceder a la aplicación desde la URL http://maquina/redmine Las credenciales de acceso para administrar Redmine son los proporcionados durante la instalación.

Pero, pero, pero... siempre hay un "pero". Al reiniciar la máquina virtual no arranca Redmine... No responde porque no han arrancado los servicios... Pues a arreglarlo: se modifica el fichero /etc/rc.local y se añade ANTES del EXIT 0 unos comandos para arrancar Redmine al inicio del sistema, de hecho sólo arrancaremos Apache y Redmine, dejando MySQL y Subversion inactivos:

/opt/ctlscript.sh start redmine
/opt/ctlscript.sh start apache


y como los ficheros PID de Mongrel inactivos estorban, antes de arrancar el servicio, borrarlos también

rm /opt/apps/redmine/tmp/pids/mongrel.300?.pid

Espero que no se lie nadie. Por cierto, si se instala Webmin es para cosas de estas:


Si quieres funcionar con el MySQL integrado, añade la línea además de las anteriores:

/opt/ctlscript.sh start mysql

Una vez reiniciado el equipo deberás ver que el consumo de RAM aumenta:


Y si además arrancaste MySQL:


Pues nada, sencillito y funcional, ya está funcionando la máquina virtual con Redmine, para los que quieran ir probando, con 256 Mb de RAM y 3 Gb de HD será suficiente. Los de Bitnami ofrecen algo de virtualización basado en Suse, creo, pero el sistema operativo me gusta hacermelo a mi gusto.

Si esto interesa a los lectores, en una próxima entrega se verá cómo personalizar Webmin para este appliance, la conexión a un servidor de ficheros externo sin romper la aplicación para almacenar attachments (ficheros adjuntos), la conexión a un MySQL externo, ampliar el nº de nodos de Mongrel para soportar mayor carga de usuarios, estimar un dimensionamiento en RAM, etc... porque no es lo mismo trabajar con 5 usuarios que con 50.

sábado, 18 de julio de 2009

Creando una base virtualizada con VMware, Fedora y Webmin

Hoy voy a contar cómo hago una máquina virtual con Linux para poder reutilizar posteriormente, usando el proceso de instalación "desde la red" de Fedora 9 y su actualización posterior, aunque es muy similar para otras distros de Linux. Por último se instalará Webmin para poder manejarlo todo cómodamente desde un navegador:
  1. - Creación y configuración de la máquina virtual.
  2. - Instalación mínima de Fedora 9.
  3. - Desinstalación de aplicaciones sobrantes, actualización del sistema y eliminación del kernel anterior.
  4. - Instalación de Webmin.
Al final de todo esto quedará una imagen lista y reaprovechable para ser usada como base de futuros appliances virtualizados. Yo uso VMware para la virtualización, aunque supongo que se pueda hacer con otros sistemas de virtualización sin problemas. Como sistema operativo uso Fedora, pero se puede hacer con muchas otras distros (igual cambian los comandos).

Creación y configuración de la máquina virtual:
Primero descargate una ISO "net-inst" de cualquiera de los mirros de Fedora; este tipo de ISO tiene lo necesario para arrancar el PC y descargar de la red las partes necesarias del sistema operativo sin tener que descargarte un DVD de 4 Gb.
Abre la aplicación de VMware Server y crea una nueva máquina


con las características que ves en la siguiente imagen:


Luego hay que tocar el fichero .VMX (configuración de la máquina virtual) para acelerar un poco su funcionamiento haciendo que omita el uso del fichero NVRAM. Advierto que los puristas de VMware se echarán las manos a la cabeza, pero funciona (siempre y cuando el hardware sea TOTALMENTE FIABLE, hasta la alimentación eléctrica):
  1. Con la máquina apagada, abre el fichero .VMX usando el bloc de notas o similar.
  2. Borra la línea que contiene el nombre del fichero .NVRAM.
  3. Añade las siguientes líneas:
    mem.ShareScanVM=0
mem.ShareScanThreshold=4096
sched.mem.maxmemctl=0
sched.mem.pshare.enable = "FALSE"
MemTrimRate = 0
MemAllowAutoScaleDown = "FALSE"
mainMem.useNamedFile = "FALSE"

(Ver en http://snippets.dzone.com/posts/show/10093)

Si alguien conoce algún método más (o mejor), por favor, que me lo diga.


Instalación mínima de Fedora 9:

Ahora ya se puede arrancar la máquina. Por defecto iniciará desde la ISO, escogiendo el idioma deseado, escogiendo el mirror (p.ej: ftp://mirror.ovh.net/download.fedora.redhat.com/linux/releases/9/Fedora/i386/os/), asignando por defecto las particiones del disco, creación de un usuario/contraseña y lo más importante, la pantalla de los repositorios, donde hay que indicar sólo el de FEDORA (FEDORA UPDATES no) y que queremos personalizar el software instalado: sólo dejaremos instalado el SYSTEM BASE. Se pueden ver pantallazos del proceso aquí (inglés).

Desinstalación de aplicaciones sobrantes, actualización del sistema y eliminación del kernel anterior:
Una vez finalizada la instalación se realiza el primer arranque de la máquina virtual y nos podremos conectar a ella desde la consola de VMWare:


o desde una consola remota (mejor) usando PuTTY u otro programa similar:


Se inicia una sesión como root con la contraseña usada en la instalación y se ejecutan los siguientes comandos:

yum clean all
yum install fedora-release-9-5.transition
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-8-and-9
yum install yum-fastestmirror
yum remove cups cups-libs gpm
yum --skip-broken update

con esto (1) limpia la información almacenada del instalador, (2 y 3) prepara la actualización e importa la nueva clave de firmas de paquetes, (4) instala una utilidad para acelerar las descargas usando el mirror más rápido, (5) elimina las aplicaciones innecesarias y (6) actualiza todos los paquetes.

Como se ha actualizado el kernel, hay que eliminar el antiguo usando:
    yum remove kernel-2.6.25-14.fc9
Si quieres saber todos los que tienes instalados, usa:
    rpm -q kernel
Instalación de Webmin:
El manejo del servidor usando el Terminal no es trivial, por lo que instalaremos la aplicación Webmin para suavizarlo: abre un terminal como root y ejecuta los siguientes comandos

cd /etc/yum.repos.d/
vi webmin.repo
para (1) cambiarte a la carpeta de los repositorios y (2) crear un nuevo fichero de definición de repositorios usando VI. Pulsa la tecla "I" para poder insertar texto y copia el siguiente texto:

[Webmin]
name=Webmin Distribution Neutral
baseurl=http://download.webmin.com/download/yum
enabled=1
Para salir del modo "INSERT", pulsa la tecla [Escape] y para grabar y salir teclea :wq (raro, eh)
Luego ejecuta

rpm --import http://www.webmin.com/jcameron-key.asc
yum install webmin
para (1) importar la clave necesaria para usar el repositorio e (2) instalar Webmin. Eso si, como en Linux la seguridad es lo primero, tenemos lo puertos "capados" por el firewall, asi que le detenemos momentaneamente

service iptables stop
para poder acceder a Webmin, pero ¿qué IP tiene la máquina? Puedes mirarlo en la consola


o usar el comando
ifconfig

Una vez conocida la IP, escribirla en un navegador seguida de :10000 para acceder a Webmin y logearse como root:


Esta aplicación permite controlar practicamente todo dentro de Linux de una manera gráfica. Si no te gusta el tema, lo puedes cambiar por otro:


Y ya tenemos el Fedora 9 listo para meterle mano. Haz una copia de seguridad para poder reaprovechar sin dar estos pasos y a experimentar con aplicaciones de servidor en Linux.

lunes, 15 de junio de 2009

Trabajando con PDFs

El primer problema de los PDFs viene cuando el usuario hace dobleclic y no pasa nada; hay que instalar un visor de PDFs, como:


, etc... Hay unos cuantos. Personalmente uso el Acrobat Reader en Windows. Aunque existe versión, para Linux no la uso porque no tengo queja con el visor integrado.

El siguiente problema es la creación de documentos en formato PDF. Basta con instalar una impresora virtual que genere documentos en formato PDF: en Linux se puede hacer instalando cups-pdf (en casi todas las distros), pero para Windows se pueden usar estos:

PDF Creator


PrimoPDF


DoPDF

, etc.... Esto permite que el hecho de imprimir desde cualquier programa genere un fichero PDF con el contenido equivalente que aparecería en papel si fuese una impresora real. El que yo uso es PDF Creeator.

Cuando el usuario pide ayuda para pasar un fichero MP3 a PDF, ya es más complicado: ¿necesitas la partitura o lo quieres en formato Braile?

El último problema viene con la manipulación de ficheros PDF:
  • ¿Cómo extraigo una página (o más)? Imprime únicamente esa(s) página(s) en la impresora PDF: Archivo...Imprimir...Cambiar a la impresora de PDF... Seleccionar la(s) página(s)... Aceptar.
  • ¿Como junto 2 ficheros PDF en uno? Usa:
si estás en Windows, si estás en Linux puedes hacer lo mismo (usando Wine) o cualquiera de las herramientas disponibles si necesitas hacerlo en modo batch . También están las herramientas de PDFill PDF Tools:

  • ¿Como edito el contenido de un PDF? A nada pijo que sea el usuario, necesitará el programa Acrobat Writer (de pago) con editor WYSIWYG , pero el maravilloso programa

es capaz de abrir ficheros PDF y acceder a sus contenidos. En Linux también existen herramientas que permiten modificar los PDFs, como:Si te falta algo, consulta la wikipedia para una lista completa de software (incluido el comercial) relacionado con el mundo PDF.

martes, 5 de mayo de 2009

Windows 7 gratis durante 1 año

Parece que Microsoft se ha vuelto loco: acaba de publicar para descarga gratuita su nuevo sistema operativo Windows 7 RC2.

Pero parece que sólo durará hasta el 1 de Marzo del 2010, momento en el que empezará a apagarse cada 2 horas si no instalas "el de pago".

He probado la versión anterior que sacaron y no había punto de comparación con el Windows Vista (en cuanto a consumo de recursos). Enlace

En fin, será la nueva estrategia de M$ para quitarse de encima todos los Windows XP, ya que el Windows 7 corre bien en la misma máquina y, supongo, todo el mundo hará el cambio. Sólo falta que baje de precio el nuevo hardware para el que se ha diseñado:

lunes, 16 de marzo de 2009

Refrán informático


Quién dijo miedo teniendo el CD para instalar el sistema operativo de nuevo.

Un usuario atrevido.

domingo, 15 de marzo de 2009

Monitorizando tu equipo en Linux con CONKY

Yo, que soy muy curioso, gusto de monitorizar constantemente el uso de red y CPU, asi como la memoria gastada por los programas. En Linux viene un programa tipo el Administrador de Tareas de Windows, llamado Monitor del sistema:


Este programa no me acaba de gustar porque el mero hecho de tenerlo abierto consume bastantes recursos. En cambio uso CONKY, un sencillo software que me permite hacer justo lo que quiero:


Esta representación es justo lo que a mi me interesa y la consiguo usando un fichero de configuración en el que es posible indicar línea a línea qué quiero mostrar:

# CONFIGURACIÓN DEL PROGRAMA Y VENTANA
# http://adminsq3.blogspot.com
# Para ver una lista de opciones ver: http://conky.sourceforge.net/config_settings.html
background yes
font Zekton:size=8
xftfont Zekton:size=8
use_xft yes
xftalpha 0.5
update_interval 1.0
total_run_times 0
own_window yes
own_window_type override
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
double_buffer yes
draw_shades no
draw_outline no
draw_borders no
draw_graph_borders no
minimum_size 220 5
maximum_width 220
default_color d7d7d7
default_shade_color black
default_outline_color black
alignment top_right
gap_x 10
gap_y 30
no_buffers yes
cpu_avg_samples 2
override_utf8_locale no
uppercase no
use_spacer no

# Cabeceras (Anarajando)
color0 FF8C00
# Resaltado (amarillo)
color1 ffff00
# separadores
color2 98C2C7
# rojo
color3 ff0000
# verde
color4 00ff00
# amarillo
color5 ffff00
# verde oscuro
color6 42ae4a
TEXT

# APARTADO SISTEMA
${color1}SISTEMA ${color6}${hr 1 } $color

# Información del sistema
Nombre Host: ${color1}$alignr$nodename $color
Kernel: $alignr$kernel
Encendido: $alignr$uptime
Procesos: ${alignr}$processes ($running_processes en ejecución)

# Datos de CPU
CPU ${alignc} ${freq}MHz ${alignr}(${cpu cpu0}%)
# Barra de uso para la CPU 0
${color 00ffff}${cpubar 4 cpu0}${color}
# Gráfico para la CPU 0
${cpugraph cpu0 42AE4A 42AE4A}
# Indicadores de uso para cada Core
${color6}Core 1: ${color6} ${freq_dyn_g cpu1}Ghz ${color lightgrey}${cpu cpu1}% $alignr ${color6}Core 2:${color6} ${freq_dyn_g cpu2}Ghz ${color lightgrey}${cpu cpu2}%$color

# Indicadores de uso máximo de CPU
Max CPU $alignr CPU% MEM%
${top name 1}$alignr${top cpu 1} ${top mem 1}
${top name 2}$alignr${top cpu 2} ${top mem 2}
${top name 3}$alignr${top cpu 3} ${top mem 3}

# Indicadores de uso máximo de memoria
Max MEM $alignr CPU% MEM%
${top_mem name 1}$alignr${top_mem cpu 1} ${top_mem mem 1}
${top_mem name 2}$alignr${top_mem cpu 2} ${top_mem mem 2}
${top_mem name 3}$alignr${top_mem cpu 3} ${top_mem mem 3}

# APARTADO MEMORIA
${color1}MEMORIA ${color6}${hr 1 } $color

RAM ${alignr}$mem / $memmax ($memperc%)
# Barra de uso de memoria
${color 00ff00}${membar 4}${color}
SWAP ${alignr}$swap / $swapmax ($swapperc%)
# Barra de uso de memoria de intercambio
${swapbar 4}

# APARTADO SISTEMA DE ARCHIVOS
${color1}SISTEMA DE ARCHIVOS ${color6}${hr 1}${color}

# Información del disco 0 (/)
HD-0: ${alignr}libre ${fs_free /} / ${fs_size /} total
${color1}${fs_bar 4 /}${color}

# Información del disco 1 (media/disk-1)
HD-1: ${alignr}libre ${fs_free /media/disk-1} / ${fs_size /media/disk-1} total
${color1}${fs_bar 4 /media/disk-1}${color}

# Información del disco 2 (media/disk)
HD-2: ${alignr}libre ${fs_free /media/disk} / ${fs_size /media/disk} total
${color1}${fs_bar 4 /media/disk}${color}

# APARTADO RED
${color1}RED ${color6}${hr 1}${color}

Dirección IP: $color1 ${addr eth0} $color

Down ${downspeed eth0} k/s ${alignr}Up ${upspeed eth0} k/s
# Gráficos de descarga y subida
${color4}${downspeedgraph eth0 25,107} ${color3}${alignr}${upspeedgraph eth0 25,107}
${color}Total ${totaldown eth0} ${alignr}Total ${totalup eth0}


Ojo, si copias y pegas el código en tu fichero conky.rc, borra el texto en verde o copialo de aquí.

El código no es difícil de entender, si uno quiere personalizarlo a su gusto. Además es posible mostrarlo tanto en ventana como integrado en el fondo del escritorio (lo más vistoso):


Esto es la pinta que tiene el mio, pero si quieres ver más pantallazos, tienes los oficiales aquí. Si necesitas una lista de las variables que puedes emplear, la tienes aquí, mientras que para la configuración general del programa debes usar estas.

viernes, 6 de marzo de 2009

Entre trabajo y trabajo...

Y es que cuando llego a casa sigo enredando con todo lo que puedo, o ahora con el niño por lo menos lo intento... Uno de mis juguetes favoritos es una vieja consola XBOX


que uso con el software XBMC (XBOX Media Center), que exprime a tope el Pentium III 733 que es en realidad, y con la que consigo lo siguiente:


- Disco duro con 250 Gb para juegos. Todos los juegos de XBOX que quepan con carga rápida desde el disco duro. Y Además la gente se ha currado emuladores como Mame y similares, ideal para los amantes de los juegos retro.
- Acceso desde el PC mediante FTP o manejo del interfaz web del mediacenter:


- Reproductor de video conectado a la TV, reproduciendo ficheros de Youtube, archivos que comparto en el PC, los trailers de Apple, PodCasts y Webcasts de cantidad de sitios, etc... Para las películas, tiene el añadido de poder conectarse a una base de datos online y descargar la información de la película (datos generales, reparto, argumento, carátulas, etc...), con lo que vas navegando entre las carátulas y puedes ver qué películas ha hecho un actor/actriz (que tengas grabadas) además de la que estas consultando. No he grabado un CD/DVD en meses para video ;-)


- Reproductor de música conectado a la TV, usando emisoras de Shoutcast o reproduciendo archivos locales (o en el PC) en multitud de formatos.


- Visor de imágenes, para enseñar en la TV las fotos a las visitas, nada de andar pasando un álbum de fotos de mano en mano. Permite presentaciones, efectos entre fotos, zoom, miniaturas, escuchar música mientras ves las fotos, etc... y todo desde carpetas en el PC.
- Navegador de archivos, para poder visualizar los ficheros en el disco y hacer operaciones básicas de copia, renombrado y eliminación.
- Información del tiempo de tu ciudad, con predicción a 4 días.


- Instalación de scripts a través de Internet desde la propia consola para extender su funcionalidad, desde un XBMC-Earth que usa Google Earth como motor, visores de comics online, juegos, hasta una aplicación que actualiza el XBMC a través de internet.
- Multitud de opciones de configuración:


- Posibilidad de escoger el skin, trae 3 y hay más en Internet.
- Y cuando no haces nada, salvapantallas:


Hace unos meses he comprado una XBOX de 2ª mano por 30 euros, un disco duro de 120 Gb. que tenía aparcado y les he puesto el MediaCenter a mis padres en su casa, con lo mismo que tengo yo pero sin los juegos. Y están encantados. Tanto que he "recuperado" un HD reproductor "cutre" pero con 500 Gb que ya no iban a usar.


Y para que se vea que está bien logrado este software, sirva la siguiente historia (verídica): Estaba yo aprovechando una las virtudes, como es la actualización a través de Internet, cuando se quedó "algo" a medio copiar en los trasteos posteriores que realizo: No arrancaba la XBOX con imagen, se oian los clics al moverse por los menus pero no se veia imagen en la TV. Pues nada, a montar el disco en el PC y lo copio a mano. Cuando consigo el p**o destornillador hexagonal y la desmonto, conecto el HD al PC y nada.... Pero que pasa aqui, ¿no traga mi linux con esto? Parece que FATX, el sistema usado, no es soportado por defecto y tengo que bajarme un parche para aplicar sobre el kernel de Linux. Ni de palo, asi que tras buscar un poco más, veo que encendiendo la consola y pulsando BLANCO + Y entra en un modo FEH (emergencia) en el que activa un FTP. Vaya cara de tonto se me quedo con todo desmontado encima de la mesa, en fin, a base de hostias se aprende. Lo monté, lo conecté, lo encendí, puse el usuario y contraseña que aparecian en pantalla y funcionó a las mil maravillas: FTP con Filezilla y hasta la cocina. Menos mal, me estaba viendo en la tesitura de usar un PC para reemplazar la XBOX (existen versiones para Windows, Linux, Mac, LiveCD....), porque ya no puedo vivir sin mi XBMC: en casa se ha convertido en insustituible. El día que compre una tele Full HD igual migro a la versión PC, pues soporta hasta 1080i.