Posts in Category: OpenSolaris

Existió algo llamado OpenSolaris

DSCF4851

Y los enviaban gratis. =)

DSCF4852

Softphone Java

Buscando un “Softphone” que pudiera utilizar forzosamente en OpenSolaris para realizar pruebas y cosas de un libro de OpenSIPS que ando leyendo, me encuentro con esta aplicación escrita en Java, el cual tiene muy buena presentación aparte de no solo poder usarlo para cuentas SIP si no también para demás cuentas de mensajería instantánea.

sipcommunicator

Aquí esta la pagina para descargarlo: http://sip-communicator.org/

Error al iniciar Solaris en servidor SunFire

En ocasiones cuando hay fallas de corriente y un equipo se enciende y apaga de inmediato pueden presentarse ciertos tipos de errores, cuando es tu propia computadora te lo puedes tomar un poco mas con calma, pero cuando es un servidor y en este caso de nivel algo critico las cosas se pueden tornar un poco mas tensas.

La imagen muestra la pantalla de error al no poder iniciarse el sistema operativo correctamente, y como este equipo administra una seria de equipos ligeros SunRay la actividad de varios usuarios se quedo interrumpida.

error-solaris-server2

Afortunadamente la solución esta en la misma pantalla: svcadm clear system/boot-archive

Después de ejecutar el comando este mismo revisa los servicios y el sistema operativo vuelve a iniciarse correctamente.

Para más información: http://flux.org.uk/howto/solaris/fix_boot_archive

GlassFish y MySQL en OpenSolaris

Siguiendo con el orden de las cosas acerca de ir conociendo un poquito de OpenSolaris, y aprovechando el frió que asolo este fin de semana a la gran Tenochtitlan, decidí agregarle unos cuantos paquetes mas al sistema, entre ellos el servidor de aplicaciones glassfish para crear unas sencillas consultas MySQL mediante jsp, he aquí el procedimiento:

Instalamos el paquete de GlassFish, mediante el gestor de paquetes de OpenSolaris.

zeratul@aiur:~$ pfexec pkg install glassfish-2
zeratul@aiur:~$ pfexec pkg info glassfish-2
                         Nombre: web/glassfish-2
                       Resumen: GlassFish Java EE 5 Application Server
                      Categoría: Web Services/Application and Web Servers
                          Estado: Instalado
     Editor: opensolaris.org
                         Versión: 2.1
                         Versión: 5.11
                  Ramificación: 0.111
Fecha de empaquetado: Mon May 18 20:20:27 2009
                         Tamaño: 81.32 MB
                              FMRI: pkg:/web/glassfish-2@2.1,5.11-0.111:20090518T202027Z

Modificamos la linea que se muestra a continuación, presente en el siguiente archivo: /usr/appserver/config/asenv.conf, donde cambiaremos la ruta desde donde iniciaremos nuestro dominio, esto con el fin de establecer los archivos de configuración con los permisos asociados a nuestro usuario, se muestra la linea original comentada y la linea haciendo referencia a nuestro home.

#AS_DEF_DOMAINS_PATH=”/var/appserver/domains”
AS_DEF_DOMAINS_PATH=”/export/home/zeratul/appserver/domains”

Creamos el dominio con la siguiente instrucción, establecemos una contraseña para el usuario admin y dejamos la contraseña por defecto para el usuario master.

zeratul@aiur:~$ asadmin create-domain --user admin --adminport 4848 --savemasterpassword=true domain1
Please enter the admin password>
Please enter the admin password again>
Please enter the master password [Enter to accept the default]:>
Please enter the master password again [Enter to accept the default]:>
Using port 4848 for Admin.
Using default port 8080 for HTTP Instance.
Using default port 7676 for JMS.
Using default port 3700 for IIOP.
Using default port 8181 for HTTP_SSL.
Using default port 3820 for IIOP_SSL.
Using default port 3920 for IIOP_MUTUALAUTH.
Using default port 8686 for JMX_ADMIN.
Domain being created with profile:developer, as specified by variable AS_ADMIN_PROFILE in configuration file.
------ Using Profile [developer] to create the domain ------
XML processing for profile: Base document [/usr/appserver/lib/install/templates/default-domain.xml.template]. Profile name [developer]. Processing property [domain.xml.style-sheets].
 
The file in given locale [es_MX] at: [/usr/appserver/lib/install/templates/locales/es_MX/index.html] could not be found. Using default (en_US) index.html instead.
Security Store uses: JKS
Domain domain1 created.

Iniciamos el servicio.

zeratul@aiur:~$ asadmin start-domain domain1
Starting Domain domain1, please wait.
Default Log location is /export/home/zeratul/appserver/domains/domain1/logs/server.log.
Redirecting output to /export/home/zeratul/appserver/domains/domain1/logs/server.log
Domain domain1 failed to startup. Please check the server log for more details.
CLI156 Could not start the domain domain1.

Si se nos presenta el error anterior de que no se puede iniciar el dominio, agregamos el nombre del equipo al archivo hosts en la linea que hace referencia a la dirección de loopback.

zeratul@aiur:~$ cat /etc/hosts
::1 aiur aiur.local localhost loghost
127.0.0.1 aiur.local localhost loghost aiur	;Agregar el nombre del equipo al final de la linea (aiur)

Volvemos a iniciar el dominio donde iniciara correctamente el servicio.

zeratul@aiur:~$ asadmin start-domain domain1
Starting Domain domain1, please wait.
Default Log location is /export/home/zeratul/appserver/domains/domain1/logs/server.log.
Redirecting output to /export/home/zeratul/appserver/domains/domain1/logs/server.log
Domain domain1 is ready to receive client requests. Additional services are being started in background.
Domain [domain1] is running [Sun GlassFish Enterprise Server v2.1 (9.1.1) (build b60e-fcs)] with its configuration and logs at: [/export/home/zeratul/appserver/domains].
Admin Console is available at [http://localhost:4848].
Use the same port [4848] for "asadmin" commands.
User web applications are available at these URLs:
[http://localhost:8080 https://localhost:8181 ].
Following web-contexts are available:
[/web1  /__wstx-services ].
Standard JMX Clients (like JConsole) can connect to JMXServiceURL:
[service:jmx:rmi:///jndi/rmi://aiur.local:8686/jmxrmi] for domain management purposes.
Domain listens on at least following ports for connections:
[8080 8181 4848 3700 3820 3920 8686 ].
Domain does not support application server clusters and other standalone instances.

Nos dirigimos a un navegador web y mediante el puerto 8080, GlassFish nos debe dar su pagina de bienvenida.

glassfish1-1

Ahora necesitamos el controlador de Java para poder conectarnos a bases de datos MySQL, descargamos la ultima versión del siguiente sitio: http://dev.mysql.com/downloads/connector/j/

Necesitamos colocar el archivo .jar que viene en el archivo comprimido dentro de la carpeta ext que se ubica en la siguiente ruta: /export/home/zeratul/appserver/domains/domain1/lib/ext

zeratul@aiur:~/appserver/domains/domain1/lib/ext$ ls
mysql-connector-java-5.1.10-bin.jar

Paramos e iniciamos el servidor glassfish para que tome los cambios.

zeratul@aiur:~$ asadmin stop-domain domain1
zeratul@aiur:~$ asadmin start-domain domain1

Ahora realizaremos un pequeño archivo jsp para realizar una sencilla consulta al servidor MySQL que guarda los registros de llamadas de nuestro Asterisk. De manera rápida crearemos un archivo llamado listar.jsp, dentro de la carpeta: /export/home/zeratul/appserver/domains/domain1/docroot

<%@ page  import="java.io.*,java.util.*,java.net.*,java.sql.*" %>
<!DOCTYPE HTML PUBLIC  "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>Ejemplo consulta  JSP</title></head>
<body><center>
<%
Connection  canal = null;
Statement instruccion=null;
ResultSet tabla= null;
String conexion =  "jdbc:mysql://mysql.demerzel.org:3306/asteriskcdr?user=asterisk&password=mysecret";
 
//Abrir el enlace
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
canal =  DriverManager.getConnection(conexion);
instruccion =  canal.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
}
catch(ClassNotFoundException e){ out.println(e);}
catch(SQLException e){ out.println(e);}
try{
tabla =  instruccion.executeQuery("select src, dst, calldate, sec_to_time(billsec), channel, dstchannel from cdr where billsec!=0 and disposition='ANSWERED' and calldate between '2009-12-01 00:00:00' and '2009-12-31 23:59:59' order by calldate, src, dst limit 25");
out.println("<table border=1>");
out.println("<tr><th>Origen</th><th>Destino</th><th>Fecha</th><th>Duraci&oacute;n</th><th>Canal Origen</th><th>Canal Destino</th></tr>");
while(tabla.next()){
out.println("<tr><td>"+tabla.getString(1)+"</td><td>"+tabla.getString(2)+"</td><td>"+tabla.getString(3)+"</td><td>"+tabla.getString(4)+"</td><td>"+tabla.getString(5)+"</td><td>"+tabla.getString(6)+"</td></tr>");
}
out.println("</table>");
}
catch(Exception e){  out.println(e);}
%>
</center></body>
<html>

El servidor MySQL no esta en el mismo equipo por lo tanto debemos darle los permisos adecuados al usuario para realizar consultas desde OpenSolaris. Una sentencia sencilla como la siguiente sera suficiente:

GRANT SELECT ON asteriskcdr.* TO asterisk@192.9.200.114 IDENTIFIED BY 'mysecret';

Ingresamos a la dirección web http://midirecciónip:8080/listar.jsp, y se nos debe desplegar el listado de llamadas de las que hicimos consulta.

glassfish2-1

Referencias:
El articulo original de como instalar GlassFish.
http://blogs.sun.com/observatory/en_US/entry/glassfish
De aquí tome el archivo jsp de ejemplo.
http://casidiablo.net/instalacion-de-un-entorno-web-tomcat-jsp-mysql/

OpenSolaris en mi HP Compaq d220

Bueno realmente no es mía, pero a ultimas fechas como si lo fuera, es un equipo que se encuentra atorado en mi lugar de trabajo debido a un limbo burocrático, así que mientras siga aquí, he decidido ponerle un sabor de UNIX.

Realmente la instalación es muy sencilla si vas a utilizar el disco duro en su totalidad para el sistema, cuestiones de particiones lo veremos después.

El único problema después de la instalación es el siguiente: la tarjeta de red. Todo el hardware fue reconocido salvo la tarjeta de red, así que no nos queda otro camino que buscar si alguien ya se encontró el mismo problema y tiene alguna solución.

La tarjeta de red en cuestión es la siguiente: bcm 4401.

Gracias a este post sabemos que necesitamos instalar un driver especifico para esta tarjeta y que funcione en nuestro sistema.

Lamentablemente el enlace del driver al que hace referencia el post esta roto, pero buscando un poquito encontramos el archivo en cuestión: http://homepage2.nifty.com/mrym3/taiyodo/bfe-2.6.1.tar.gz

Las instrucciones son sencillas, extraemos y accedemos al directorio del driver.

make
make install
./adddrv.sh

Aqui en mi caso reinicie el equipo para que las demás sentencias a continuación se aplicaran correctamente.

modload obj/bfe
modinfo | grep bfe (loaded?)
devfsadm -i bfe
ifconfig bfe0 plumb
ifconfig bfe0 up

Aquí tenemos activada ya la tarjeta sin embargo el asistente de configuración me marcaba conexión y desconexión intermitentemente, un reinicio del equipo y la tarjeta se activo, tomo su IP y ya se mantuvo conectada sin ningún problema.

Después de todo esto, me encuentro con la sorpresita que el equipo no resuelve nombres, por IP todo funciona e incluso puedo navegar en la web mediante IP, pero si pongo cualquier nombre nada de nada.

Preguntándole un poco a Google, encuentro este post (curiosamente de la experiencia que tuvo esta persona con OpenSolaris), que dicho sea de paso es muy entretenido y didáctico. Ahí hace mención del mismo detalle de la resolución de nombres y del hilo donde encontró la solución (al final de la pagina).

Se trata de modificar la siguiente linea:  “host: files” lo cambiamos por “hosts: files dns mdns”, en el archivo nsswitch.conf dentro del directorio “etc”.

Otro detalle es la configuración del teclado para ponerlo en español distribución latinoamericana, con este comando lo solucionamos: $ setxkbmap -model pc105 latam

La solución la tome de la siguiente pagina: http://www.jfexart.com.ve/2009/03/configurar-teclado-en-opensolaris-con.html

Escritorio OpenSolaris

Escritorio OpenSolaris