Instalación de JRuby en Solaris

ruby, rails, sysadmin 1 comentario »

La instalación de JRuby en Solaris es muy sencilla. Para mí, una buena razón para instalar JRuby en Solaris es que podemos instalar un intérprete de Ruby en el directorio de un usuario no privilegiado, es decir, no necesitamos la contraseña de root.


jruby

JRuby requiere una versión reciente del intérprete de Java. Si nuestra máquina tiene una versión como

$ java -version
java version "1.2.2"

no tendremos más remedio que instalar un nuevo JRE (Java Runtime Environment). Los pasos para hacerlo son los siguientes:

  • Descargamos e instalamos el JRE:
$ bash jre-6u3-solaris-sparc.sh
$ export PATH=`pwd`/jre1.6.0_03/bin:$PATH
$ java -version
java version "1.6.0_03"
Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
Java HotSpot(TM) Server VM (build 1.6.0_03-b05, mixed mode)
  • Descargamos e instalamos JRuby:
$ gzcat jruby-bin-1.1b1.tar.gz  tar xf -
$ export PATH=$PATH:$HOME/jruby-1.1b1/bin
$ jruby -v
ruby 1.8.5 (2007-11-01 rev 4842) [sparc-jruby1.1b1]

Y ya está. No hay más pasos. Aunque si tienes Solaris 8 tal vez obtengas el siguiente error:

$ jruby -v
/export/home/username/jruby-1.1b1/bin/jruby: while: command not found
/export/home/username/jruby-1.1b1/bin/jruby: line 119: syntax error near unexpected token `do'
/export/home/username/jruby-1.1b1/bin/jruby: line 119: `do'

Si te ocurre esto la solución es sencilla. Creo que se trata de un bug de la bash 2.03 de Solaris 8, pero no he encontrado información al respecto. El script que lanza JRuby declara dos arrays vacíos:

java_args=()
ruby_args=()

y esto falla con la bash 2.03. Lo bueno es que el workaround es trivial. Los arrays pueden declararse de la siguiente manera:

declare -a java_args                 
declare -a ruby_args

He abierto un issue en el proyecto JRuby.


Instalación de MySQL, Apache y PHP en Solaris 10

mysql, sysadmin 7 comentarios »

Apache + MySQL + PHP

¿Alguna vez has intentado compilar PHP en Solaris? Yo sí, y he de reconocer que no es una tarea sencilla. Hace varios años decidí utilizar cacti en Solaris. cacti es un programa escrito en PHP para generar gráficas, generalmente de rendimiento, y necesita Apache + MySQL + PHP . Por aquel entonces los paquetes de sunfreeware no estaban compilados de forma que PHP pudiera funcionar como módulo de Apache. Así que no tuve más remedio que compilar y compilar hasta que logré dar con una combinación adecuada de versiones y de opciones de compilación. La versión de Solaris que utilicé fue la 8, y escribí un documento donde contaba los detalles.

Después de tres años de espera, en octubre de 2007 se anunció la versión 0.8.7 de cacti, la cual estoy deseando probar. Esta vez lo haré en Solaris 10, y con gran alegría encuentro que esta vez sí es posible la instalación de Apache + MySQL + PHP en Solaris (SAMP) sin tener que compilar, utilizando únicamente paquetes binarios de sunfreeware.

Por otro lado, leo que Sun ha publicado su propia pila AMP, la cual no he tenido tiempo de probar.

En este post os contaré qué 20 paquetes de sunfreeware es necesario instalar y qué pasos hay que seguir para poder ejecutar Apache + MySQL + PHP en Solaris. Es importante seguir el orden aquí descrito, ya que hay paquetes que dependen de otros paquetes.

MySQL 5.0.41

Es necesario instalar los siguientes paquetes:

  • libgcc-3.4.6
  • openssl-0.9.8f
  • zlib-1.2.3
  • ncurses-5.6
  • mysql-5.0.41

Después es necesario ejecutar como root:

# groupadd mysql
# useradd -g mysql -d /export/home/mysql -s /usr/bin/bash mysql
# passwd mysql
# cd /usr/local/mysql
# chown -R mysql .
# chgrp -R mysql .
# ln /usr/bin/hostname /usr/local/bin/hostname
# bin/mysql_install_db --user=mysql
# cp share/mysql/mysql.server /etc/init.d/mysql
# ln -s /etc/init.d/mysql /etc/rc3.d/S99mysql
# ln -s /etc/init.d/mysql /etc/rc0.d/K00mysql
# /etc/init.d/mysql start

Será conveniente también añadir al PATH el directorio /usr/local/mysql/bin y poner una contraseña al root de MySQL:

# mysqladmin -u root password 'password'
# mysqladmin -u root -h hostname password '

Apache 2.2.4

Como tarea opcional, se pueden desinstalar todos los paquetes de apache que vienen con Solaris. Para ver qué paquetes hay que desinstalar:

$ pkginfo  grep -i apache

aunque puede que haya otros paquetes que dependan de los paquetes de apache.

Instalar los siguientes paquetes:

  • expat-1.95.5
  • libiconv-1.11
  • apache-2.2.4

Hará falta crear los scripts para que apache arranque en el arranque de la máquina. Para ello, crear /etc/init.d/apache:

#!/usr/bin/sh
PATH=/usr/bin:/usr/sbin
export PATH
case "$1" in
'start')
  echo "Arrancando Apache"
  /usr/local/apache2/bin/apachectl start
  
'stop')
  echo "Parando Apache"
  /usr/local/apache2/bin/apachectl stop
  
*)
  echo "Uso: $0 startstop"
  exit 1
  
esac
exit 0

y crear los enlaces necesarios:

# ln -s /etc/init.d/apache /etc/rc3.d/S99apache
# ln -s /etc/init.d/apache /etc/rc0.d/K00apache

PHP 5.2.3

Instalar los paquetes:

  • db-4.2.52.NC
  • sasl-2.1.21
  • libxml2-2.6.26
  • openldap-2.3.35
  • jpeg-6b
  • libpng-1.2.23
  • xpm-3.4k
  • gd-2.0.33
  • freetype-2.3.1
  • fontconfig-2.4.2
  • curl-7.17.1
  • php-5.2.3

Añadir /usr/local/php/bin al PATH.

Y por último editar el fichero httpd.conf y rearrancar el servidor apache:

AddType application/x-httpd-php .php
DirectoryIndex index.html index.php
LoadModule php5_module modules/libphp5.so
# /etc/init.d/apache restart