martes, 23 de febrero de 2010

Refrán informático


Gracias a la informática el 90% del trabajo se hace en el 10% del tiempo. El otro 10% del trabajo lleva el 90% del tiempo.

Adaptado de una Ley de Murphy.

miércoles, 17 de febrero de 2010

Cambiando el look a Redmine

(Scroll down for english description)

Tras trastear con la aplicación sólo faltaba tocar el tema por defecto: se ha modificado el tema libernix-redmine-ecogreen, haciéndole unas pocas modificaciones:


  • Imágenes de cabecera adaptadas al estilo AdminsQ3.
  • Se ha reducido el texto de los menús superiores para que quepan todos los plugins.
  • Se agrupa la búsqueda y el desplegable de proyectos para ganar en visibilidad de la cabecera de proyecto, ahora con subproyectos.
  • Efecto 3D en títulos y menús superiores (FF y IE).
Se puede descargar aquí. Luego basta con descomprimirlo en [redmine]\public\themes y cambiar en Administración ==> Configuración ==> Mostrar ==> Tema: AdminsQ3.

!Espero que os guste¡

English:

AdminsQ3 theme is a modified version of the Libernix-redmine-ecogreen theme. The main modifications are:
  • Changed top images to meet AdminQ3 style.
  • Font size of top menu was reduced to fit all the installed plugins.
  • Search panel and Project combo were grouped to maximize the project description, 'cos now there exits subprojects.
  • 3D CSS text on top menu and project description (IE & FF).
Download AdminsQ3 Redmine Theme here, unzip in [redmine]\public\themes and change in Administration ==> Settings ==> Display ==> Theme: AdminsQ3.

Enjoy!

miércoles, 3 de febrero de 2010

Refrán informático


NUNCA
discutas con un usuario, te hace bajar a su nivel... y ahí te gana por experiencia.

Administrador anónimo

Appliance Redmine+Apache+Phusion Passenger+Ruby Enterprise usando Ubuntu JeOS (4-Exprimiendo todavía más...)

En posts anteriores se ha visto cómo optimizar una máquina de VMware en menos de 5 minutos, cómo instalar Ubuntu JeOS (que no trae entorno gráfico) y manejarlo con Webmin, asi como las opciones más importantes a tocar para que no haga falta tocar el sistema.

También se ha visto de qué va Redmine y, usando el instalador de Bitnami, se ha creado un appliance listo para usar. Incluso se ha optimizado el appliance:
  • Usando servidores DHCP y DNS existentes para establecer la configuración del equipo en la red.
  • Haciendo que los ficheros que escribe residan en un share remoto Windows usando CIFS, facilitando el balanceo de la aplicación en caso de ser necesario.
  • Sacando la BD a otro servidor, con lo que la restauración del appliance se reduce a volver a levantar un backup de la máquina.
Y parece que va muy bien... Esto de Redmine funciona y parece que las mejoras, el soporte y los plugins aumentan cada día, incluso han sacado uno para Firefox.

Pues aplicando un poco de filosofía kaizen, el appliance montado en entradas anteriores es posible mejorarlo haciendo una instalación limpia (fresh install) de todos los componentes, pero esta vez desde su repositorio correspondiente para asegurarnos de tener una copia EXACTA y saber qué hemos puesto.

A fuerza de mirar esto de Ruby, he visto que hay una variante para trabajar desde Apache sin usar Mongrel: Phusion Passenger. Evita montar tanto cristo de instalación y es más fácilmente escalable y se recupera mejor ante fallos. Por otro lado he visto que la versión Enterprise de Ruby ofrece una mejora considerable en el uso de memoria, mejorando un 33% el rendimiento total (a mi incluso me parece mejor).

Pues ahora más, más rápido y desde las fuentes: se instala Ubuntu JeOS, se inicia sesión en consola y... (leer los comentarios ANTES de ejecutar cada instrucción):

# Instalar Servidor SSH (para usar consola remota yo uso Putty)
sudo apt-get install openssh-server

# Actualizar el sistema
sudo apt-get update && sudo apt-get upgrade -f -y --force-yes

# Instalar paquetes y dependencias necesarias
sudo apt-get install build-essential linux-headers-$(uname -r) apache2-threaded-dev subversion psmisc acpid wget perl libnet-ssleay-perl openssl libauthen-pam-perl libio-pty-perl libmd5-perl rdoc php5-imagick libmagick9-dev libopenssl-ruby libapr1-dev libaprutil1-dev libapache2-svn libapache-dbi-perl libapache2-mod-perl2 libdbd-mysql-perl libdigest-sha1-perl libapache2-mod-fcgid libfcgi-dev smbclient smbfs htop libmysqlclient15-dev apache2-threaded-dev libfcgi-dev libapr1-dev libaprutil1-dev git-core iptables cron at logrotate locate zip unzip -y --force-yes

# Instalar Webmin
wget http://prdownloads.sourceforge.net/webadmin/webmin_1.500_all.deb
sudo dpkg -i webmin_1.500_all.deb
rm webmin_1.500_all.deb
# Ojo al usuario/contraseña para webmin
sudo /usr/share/webmin/changepass.pl /etc/webmin root adminsq3
# Se accede a webmin por https://x.x.x.x:10000

# Instalar Ruby Enterprise
sudo wget http://rubyforge.org/frs/download.php/68718/ruby-enterprise_1.8.7-2010.01_i386.deb
sudo dpkg -i ruby-enterprise_1.8.7-2010.01_i386.deb
sudo rm ruby-enterprise_1.8.7-2010.01_i386.deb

# Instalar RubyGems
cd /opt
sudo mkdir gems
cd /opt/gems
sudo wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz
sudo tar -xzvf rubygems-1.3.5.tgz
sudo rm rubygems-1.3.5.tgz
cd rubygems-1.3.5
sudo ruby setup.rb -V
sudo ln -s /usr/bin/gem1.8 /usr/bin/gem

# Instalar Redmine
cd /var/www
# Opción SVN
sudo svn co http://redmine.rubyforge.org/svn/trunk redmine
# Opción GIT (comentada)
# sudo mkdir redmine
# cd redmine

# sudo git clone git://github.com/edavis10/redmine.git


# Instalar Gems requeridos
cd redmine
sudo gem install activesupport activerecord actionpack actionmailer activeresource gem_plugin fastthread rails rake rack passenger rmagick mysql reek roodi --no-ri --no-rdoc
sudo gem install rubyist-aasm --source http://gems.github.com --no-ri --no-rdoc
sudo rake rails:update

# Como se supone que tenemos "una" configuración funcionando que queremos migrar,
# copiamos los ficheros existentes database.yml y email.yml a /var/www/redmine/config/
# En caso contrario, copiar y modificar los de ejemplo:

# database.yml.example ==> database.yml

# email.yml.example ==> email.yml

# Puede ser necesario reaplicar los permisos dentro de Webmin (Otros==>Explorador de archivos). Se muestran los más permisivos:

# Generar session stores y limpiar
sudo rake config/initializers/session_store.rb
sudo rake tmp:cache:clear
sudo rake tmp:sessions:clear

# Crear/migrar/actualizar BD a la nueva versión (el programa escoge)
# Si genera la estructura de una nueva BD, se accede con admin/admin
sudo rake db:migrate RAILS_ENV=production

# Migrar/actualizar información de plugins
sudo rake db:migrate_plugins RAILS_ENV=production

# Reaplicar permisos R/W a /var/www/redmine (root:www-data) con Webmin

# Opcional, para ver que todo va bien, probar con WebBrick en http://x.x.x.x:3000/
sudo ruby script/server webrick -e production

Hasta aquí se ha conseguido dejar la máquina con Redmine operativo, pero vamos a exprimirlo un poco más modificando el fichero /etc/fstab e incluir la linea para mapear el share de Windows a la carpeta /var/www/redmine/files (ver entrada anterior). A continuación configuraremos Apache para poder servir aplicaciones Ruby con Phusion Passenger:

# Configurar Apache y optimizar opciones de Phusion Passenger
# (crear los siguientes ficheros):

# "redmine.conf" -> Ver http://snippets.dzone.com/posts/show/10071
# "passenger" -> Ver http://snippets.dzone.com/posts/show/10073
# "virtualhost_redmine.conf" -> Ver http://snippets.dzone.com/posts/show/10075

# Integramos Passenger con Apache (Ojo a las instrucciones en pantalla)
sudo passenger-install-apache2-module


# En Webmin:
# Eliminar servidor virtual por defecto.

# Quitar modulos (Global Configuration): perl php5 dav dav_svn

# Poner módulos
(Global Configuration): proxy proxy_balancer cache proxy_http rewrite mem_cache deflate expires passenger

# Plugins que merecen la pena. Algunos requieren un fichero de traducción alternativo (es) inexistente; he creado unos para poderlos ver correctamente:

cd /var/www/redmine

# Charts (Gráficos): http://github.com/mszczytowski/redmine_charts
sudo ./script/plugin install git://github.com/pullmonkey/open_flash_chart.git
sudo git clone git://github.com/mszczytowski/redmine_charts.git redmine_charts

# Exception handler (avisos por email): https://projects.littlestreamsoftware.com/projects/show/redmine-exception
# Traducción http://snippets.dzone.com/posts/show/10079
sudo ./script/plugin install git://github.com/edavis10/redmine-exception-handler-plugin.git

# Reports (informes): http://github.com/edavis10/redmine_reports
# Traducción http://snippets.dzone.com/posts/show/10077
sudo ./script/plugin install git://github.com/edavis10/redmine_reports.git

# Graphs: (Gráficos): http://github.com/bradbeattie/redmine-graphs-plugin
#
Traducción http://snippets.dzone.com/posts/show/10081
sudo ./script/plugin install git://github.com/bradbeattie/redmine-graphs-plugin.git

# Kanban (organizador):
http://theadmin.org/articles/2009/07/22/redmine-kanban-plugin/
#
Traducción http://snippets.dzone.com/posts/show/10083
sudo ./script/plugin install git://github.com/edavis10/redmine_kanban.git

# Migrar BD a la nueva versión
sudo rake db:migrate RAILS_ENV=production
# Actualizar información de plugins
sudo rake db:migrate_plugins RAILS_ENV=production

# Limpiar al final
sudo apt-get autoclean

# Reiniciar el appliance (única vez) para asegurarnos que
# monta bien el share CIFS automáticamente y que todo arranque bien.

# Abrir la página de Redmine en http://x.x.x.x


Con esto se ha pasado a usos de RAM de 100 Mb a 210 Mb como mucho (en producción), además de la mejora en velocidad. Junto con las optimizaciones que se han publicado en entradas anteriores, hacen que este appliance vaya como la seda.

Y no se tarda tanto en montarlo... ¿no?.