Arquitectura de Aplicaciones Web - Consideraciones de diseño

Introducción


El núcleo de una aplicación Web es la lógica desplegada en el servidor. De hecho lo que vemos en el navegador, puede considerarse como una extensión o capa de presentación de la aplicación Web que realmente se está ejecutando en el servidor.

Por regla general, una aplicación Web está formada por tres capas:

























  • Capa de presentación: es la que ve el usuario (también se la denomina "capa de usuario"), presenta la aplicación al usuario en forma de página Web, le comunica la información y captura la información del usuario en un mínimo de proceso (realiza un filtrado previo para comprobar que no hay errores de formato). También es conocida como interfaz Web y debe tener la característica de ser "amigable" (entendible y fácil de usar) para el usuario. Esta capa se comunica únicamente con la capa de negocio.
  • Capa de negocio: es donde se reciben las peticiones del usuario y se envían las respuestas tras el proceso. Se denomina capa de negocio (e incluso de lógica del negocio) porque es aquí donde se establecen todas las reglas que deben cumplirse. Esta capa se comunica con la capa de presentación, para recibir las solicitudes y presentar los resultados, y con la capa de datos, para solicitar al gestor de base de datos almacenar o recuperar datos de él.
  • Capa de datos o capa de acceso a datos: es la encargada de acceder a los datos de negocio. Esta capa realiza todo el almacenamiento de datos, recibe solicitudes de almacenamiento o recuperación de información desde la capa de negocio.

Consideraciones de diseño 

  • Divida la estructura de su aplicación en capas lógicas. Divida los componentes de su aplicación de forma lógica en capa de presentación, capa de negocio y capa de datos. Esto facilita no solo las tareas de desarrollo (cada capa es desarrollada por el equipo o desarrolladores que más experiencia y habilidades tienen) sino además la escalabilidad de la aplicación (posibilidad de crecer bajo demanda), la monitorización (observar el comportamiento del servidor y las aplicaciones desplegadas) y optimizar el rendimiento de cada capa por separado
  • Acople las capas lo menos posible. Esto se consigue diseñando interfaces que permitan dar servicio a las capas que se comunican con una capa concreta. Desacoplar significa que cada capa en su interfaz, concepción y funcionamiento debe ser de manera ideal totalmente independiente de las otras. El uso de capas desacopladas puede ayudar incluso a sustituir una capa completa por otra mejorada con la misma interfaz o el adoptar nuevas tecnologías en una capa concreta.
  • Reduzca el tráfico entre los ordenadores clientes y el servidor. Cuando se diseña una aplicación Web, un objetivo importante es reducir el tráfico entre los servidores y los ordenadores clientes e incluso entre los servidores de una capa y los de otra. Esto se consigue con técnicas tales como el caché con el objetivo de que no se genere tráfico siempre que se demande del servidor la misma información
  • Considere el uso de logging en la aplicación Web. Los logs son muy importantes porque ayudan a descubrir errores ocultos o inesperados en las aplicaciones así como realizar estadísticas de funcionamiento de la aplicación. Tenga en cuenta al configurar un log el nivel de detalle requerido (no hay que olvidar que el uso de logging consume recursos del servidor). Por ejemplo, un log de desarrollo trazará la mayor cantidad de información que nos permita depurar las aplicaciones, mientras que un log de Producción trazará solo errores graves o estadísticas.
  • Evite el bloqueo de la interfaz de usuario durante tareas de larga duración. Las aplicaciones Web por lo general, se ejecutan de manera sincrónica: o sea el usuario demanda una información, la información se le pide al servidor y este responde en un plazo de tiempo razonable mientras el usuario recibe algún tipo de feedback indicándole que espere. Si por necesidades de negocio, el proceso supera el tiempo razonable que el usuario debe esperar, considere la implementación de mecanismos asincrónicos. Estos mecanismos devuelven el control de la interfaz de usuario y la actualizan con un nuevo estado una vez que el proceso de larga duración ha concluido.
  • Considere la autenticación de los usuarios. En una gran mayoría de aplicaciones Web, parte o todas las funcionalidades están disponibles solo para usuarios registrados, que son reconocidos o autenticados por la aplicación mediante un proceso de login antes de poder demandar información.
  • Cuide la transmisión de datos sensibles a través de Internet. En una aplicación Web es muy importante proteger la información confidencial o sensible de los usuarios. Considere el uso de SSL, HTTPS y encriptación siempre que tenga que proteger datos sensibles de los usuarios de la aplicación.

posted under | 1 Comments

Ubuntu Server - Instalando el entorno grafico

Introducción

Una de las ventajas de Ubuntu Server es su concepción minimalista. La posibilidad de arrancar un kernel con un mínimo conjunto de servicios y herramientas, permite que el sistema sea muy ligero (consuma muy pocos recursos de memoria y procesador) y da facilidad para ser instalado en máquinas virtuales o máquinas físicas más antiguas.

La interfaz gráfica, imprescindible en cualquier sistema de escritorio, no es muy importante en un sistema de servidor, siempre que podamos o sepamos administrarlo correctamente y siempre que no podamos disponer de más recursos de hardware en el ordenador donde lo hemos instalado.

Un Ubuntu Server con interfaz de línea comando, puede ser instalado en un ordenador con:

  • Procesador Intel x86 de 32 bits como mínimo a 300 MHz
  • Memoria RAM de 128 MB
  • Espacio en disco de 1 GB
  • Un tarjeta gráfica y monitor de 640x480 de resolución
  • Una unidad de CD-ROM
 Mi propia instalación de Ubuntu Server 12.04.01 LTS sin datos ni aplicaciones extras, incluyendo un servidor LAMP y un servidor Tomcat, no ocupa más de 2 GB de espacio en disco.

Instalación del entorno gráfico

En ocasiones para administrar, configurar o simplemente desplegar aplicaciones es más fácil utilizar la interfaz gráfica o escritorio.

Para un pequeño servidor de pruebas o de desarrollo que tengamos en casa o como servidor independiente en la empresa, el escritorio facilita muchas tareas.

A continuación detallo los principales escritorios que podemos instalar en nuestro Ubuntu Server teniendo en cuenta si llevan aplicaciones extras (como Evolution Mail o LibreOffice), la cantidad de paquetes a instalar desde los repositorios, la cantidad de MB a descargar de Internet y el espacio extra que ocupará el escritorio una vez instalado en el servidor.

La cantidad exacta de paquetes, MB y espacio dependerá de lo que tengamos previamente instalado en nuestro servidor. El mío está prácticamente vacío por lo tengo que instalar casi todo.

Instalando GNOME



GNOME es el escritorio por defecto de Ubuntu. Para instalarlo simplemente tecleamos:

 sudo apt-get install ubuntu-desktop

Si queremos instalar solo el escritorio sin los extras para ahorrar tiempo y espacio:

sudo aptitude install --without-recommends ubuntu-desktop

Los recursos consumidos al instalar el escritorio GNOME son:


Con extras Paquetes a instalar MB a descargar Espacio extra en disco despues de instalado MB
si

1001

456

1484

no

513

157

518



Instalando KDE














 KDE es otro de los escritorios populares en sistemas Linux y UNIX. Para instalarlo tecleamos:

 sudo apt-get install kubuntu-desktop

 Para instalarlo sin extras:

 sudo aptitude install --without-recommends kubuntu-desktop
 
Los recursos consumidos al instalar el escritorio KDE son:


Con extras Paquetes a instalar MB a descargar Espacio extra en disco despues de instalado MB
si

831

421

1277

no

388

177

567



Instalando XFCE



XFCE es un escritorio ligero para sistemas UNIX y Linux.  XFCE es más ligero que GNOME y KDE, consume menos recursos del sistema, por lo que es más adecuado para ordenadores con menos recursos de hardware, como memoria RAM o CPU.

Para instalar el escitorio completo:

 sudo apt-get install xubuntu-desktop

Para instalar el escritorio sin extras:

sudo aptitude install --without-recommends xubuntu-desktop

Los recursos consumidos al instalar el escritorio XFCE son:


Con extras Paquetes a instalar MB a descargar Espacio extra en disco despues de instalado MB
si

914

405

1330

no

323

120

373



Instalando LXDE


LXDE es un proyecto que apunta a entregar un nuevo entorno de escritorio ligero y rápido. No está diseñado para ser tan complejo como KDE o GNOME, pero es bastante usable y ligero, y mantiene una baja utilización de recursos. A diferencia de otros ambientes de escritorio, los componentes no se integran firmemente. Al contrario, los componentes son independientes, y cada uno de ellos se puede utilizar independientemente con muy pocas dependencias.

Para instalarlo:

sudo apt-get install lubuntu-desktop

Para instalarlo sin extras:

sudo aptitude install --without-recommends lubuntu-desktop
 

Con extras Paquetes a instalar MB a descargar Espacio extra en disco despues de instalado MB
si

862

327

1117

no

295

101

293

posted under , | 3 Comments

Ubuntu Server - Comandos básicos

Introducción

















Uno de los primeros problemas que tenemos al instalar Ubuntu Server es acostumbrarnos a utilizar la interfaz de usuario en modo texto. El utilizar esta interfaz al estilo del UNIX original, nos permite que Ubuntu Server sea muy ligero, consuma menos memoria y menos disco y permita ejecutarse en servidores dedicados donde el ratón, el teclado y la pantalla normalmente no están presentes.

Si queremos mantener estas ventajas sin utilizar la interfaz gráfica de usuario de GNOME o KDE, tendremos que conocer algunos comandos básicos para poder trabajar en el servidor.

Como obtener ayuda

Una vez que hemos entrado al sistema, lo segundo es como obtener ayuda desde esta interfaz. Esto se hace con el comando man (Linux manual). Simplemente tenemos que teclear el man <comando>, por ejemplo, si queremos conocer las opciones y objetivos del comando de listar archivos ls:

man ls

El resultado será una pantalla mostrándonos toda la información:

















Podemos movernos con las teclas del cursor o las de página. Salimos presionando la tecla q.

Las mismas páginas del comando man las podemos encontrar en Internet en Ubuntu Manpage. Muchas de las páginas podemos encontrarlas en español.














En la parte superior de la página tenemos la distintas versiones de Ubuntu a partir de la 8.04 y a continuación un buscador que nos permite encontrar comandos. Es similar al man pero con una interfaz web.

Listado de comandos básicos 

Comando
Descripción
cat
Muestra el contenido de un archivo
cd
Cambia el directorio actual
Cambia los permisos de un archivo
Cambia el propietario de un archivo
Borra la pantalla
Copia archivos y directorios
Muestra la fecha y la hora del sistema
Muestra el espacio libre y usado del disco
Muestra el contenido de directorios
Muestra el espacio que ocupan los archivos
Determina que tipo de datos contiene un archivo
Busca archivos en el disco
Muestra el espacio libre
Busca determinados patrones en el contenido de archivos
Detiene procesos
Crea enlaces simbólicos
Busca archivos en el disco
Envía un trabajo a la impresora
Muestra el contenido de directorios
Crea un nuevo directorio
Renombra archivos o directorios
Cambia contraseñas
Muestra los procesos en ejecución
Muestra el directorio actual
Borra archivos
Elimina un directorio
Cambia a otra cuenta de usuario
Ejecuta un comando como administrador
Almacena y extrae archivos de un tarfile o archivo comprimido
Muestra los recursos en uso por el sistema
Muestra quién está conectado al sistema


posted under , | 6 Comments

Ubuntu Server - Actualización

Introducción

En este artículo vamos a actualizar nuestro Ubuntu Server. El enfoque de actualización depende de como lo elegimos dentro del proceso de instalación:

  • Actualizaciones manuales
  • Actualizaciones de seguridad instaladas automáticamente
Para garantizar la estabilidad y correcto funcionamiento de un servidor es recomendable realizar el proceso de actualización de forma manual. En un sistema real de producción, se suelen tener varios entornos o agrupaciones de servidores. Estos entornos suelen ser:

  • Desarrollo (Development): agrupación de servidores donde se desarrollan las aplicaciones. Tienen que tener suficiente capacidad para el conjunto de desarrolladores y sufren despliegues y cambios frecuentes
  • Preproducción (Preproduction): agrupación de servidores donde se realizan pruebas de aceptación y pruebas de cargas de las aplicaciones desarrolladas en el entorno de Desarrollo. Son servidores más potentes y más parecidos al entorno de Producción.
  • Producción (Production): agrupación de servidores desde donde se da los servicios reales de negocio a los clientes de la organización
Los ingenieros de sistemas, suelen utilizar un cuarto entorno denominado Test, donde se instalan los sistemas operativos y productos de software con requisitos mínimos para verificar que funcionan correctamente y que cumplen los requisitos de la organización así como con las nuevas funcionalidades anunciadas por el fabricante.

Lo correcto es aplicar las actualizaciones de la siguiente forma:
  • Entorno de Test (si existiera). Se descargan y se aplican las actualizaciones. Si todo funciona correctamente quedan aptas para su aplicación en el resto de los entornos.
  • Entorno de Desarrollo. Se aplican las actualizaciones aprobadas en el entorno de Test si existiera, de los contrario se descargan y se aplican en este entorno. Si todo funciona correctamente quedan aptas para su aplicación en el entorno de Preproducción.
  • Entorno de Preproducción. Se aplican las actualizaciones probadas en el entorno de Desarrollo.Una vez validadas y probadas las aplicaciones de cara a usuarios internos, quedan listas para ser aplicadas en el entorno de Producción.  
  • Entorno de Producción. Finalmente se aplican las actualizaciones en los servidores de producción que dan servicio directo al negocio de la organización. 
En organizaciones muy pequeñas, donde no existen varios entornos, lo normal es tener un entorno de Producción y un entorno de Test. 

Por último recordar que las actualizaciones de software de un sistema son siempre tareas administrativas, o sea realizan siempre bajo el super usuario de Linux o usuario root.  

Los repositorios de Ubuntu



Todos los programas o aplicaciones que nos oferta el sistema operativo Ubuntu, se organizan en su gran mayoría en unos contenedores de software denominados repositorios. Los repositorios permiten la instalación se software de una manera muy sencilla, siempre que tengamos una conexión a Internet.

Una gran ventaja de utilizar los repositorios de Ubuntu es que todos los programas son compilados y probados específicamente para cada una de las versiones del sistema operativo. El acceso al repositorio es seguro garantizando que no pueda suplantar un repositorio oficial por uno pirata.

Los repositorios, acorde con la filosofía de Ubuntu se dividen en cuatro áreas separadas o componentes denominadas:
  • Main. Software oficial de Ubuntu bajo la licencia libre
  • Restricted. Software que contiene componentes o partes que no están completamente bajo la licencia de código libre
  • Universe. Software mantenido por la comunidad y que no está oficialmente soportado por Canonical, el fabricante de Ubuntu
  • Multiverse. Software que se distribuye bajo un licencia que no es libre
La imagen de instalación de Ubuntu, contiene aplicaciones o programas pertenecientes a los repositorios Main y Restricted. Una vez instalado el sistema podemos acceder a los repositorios por Internet, sin necesidad de volver a utilizar la imagen de instalación.

Como sabemos si hay actualizaciones

Cuando hacemos login en Ubuntu Server, la pantalla de bienvenida nos indica si hay actualizaciones disponibles.

La otra forma es tecleando dos comandos, uno para actualizar la lista de paquetes y otro para obtener la lista si la hubiera:

sudo apt-get update
sudo apt-get -su upgrade

También pueden combinarse ambos comandos en uno:

sudo apt-get update && apt-get -su upgrade

Si queremos una lista un poco más formateada con los nombres y versiones de los paquetes a actualizar podemos utilizar los comandos:

sudo apt-get -su upgrade | grep -i 'Conf'
sudo apt-get update && apt-get -su upgrade | grep -i  'Conf'

También podemos redireccionar la salida a un fichero:

sudo apt-get -su upgrade | grep -i 'Conf' > actualizaciones.txt
sudo apt-get update && apt-get -su upgrade | grep -i  'Conf' > actualizaciones.txt

Actualizando Ubuntu Server de forma masiva

De forma masiva vamos a actualizar todo lo que tenemos en los repositorios de Ubuntu, incluyendo actualizaciones de seguridad y de otros componentes del sistema o aplicaciones instaladas. Esta actualización la haremos en dos pasos:

sudo apt-get update

Este comando permite recuperar las listas de paquetes disponibles en los repositorios de Ubuntu. Una vez actualizadas estas listas podemos comenzar directamente la actualización con:

sudo apt-get upgrade

El proceso de actualización terminará en unos pocos minutos dependiendo de la velocidad de acceso a Internet y de la potencia y recursos del ordenador donde la estamos realizando. 

Si son cambios menores o algunos parches de seguridad, no tendremos que reiniciar el servidor. Si son cambios mayores como la instalación de un kernel nuevo, por ejemplo, tendremos que reiniciarlo. 

Actualizando Ubuntu Server de forma selectiva

De forma selectiva vamos a instalar solo algunos paquetes de todo lo que tenemos en los repositorios de Ubuntu para actualizar. Esta actualización la podemos realizar bien descargando todos los paquetes disponibles o descargando determinados paquetes para luego instalarlos.

Descargando todos los paquetes

sudo apt-get update
sudo apt-get -d upgrade

Los paquetes descargados se quedan en el directorio /var/cache/apt/archives. 

Instalando un paquete específico

Solo tenemos que ir al directorio /var/cache/apt/archives e instalar el paquete específico, por ejemplo:

sudo dpkg -i tomcat6_6.0.35-1ubuntu3.1_all.deb

Actualizando la distribución de Ubuntu Server

También podemos actualizar todo el servidor si hiciera falta:

sudo apt-get update
sudo apt-get dist-upgrade

Eliminando paquetes de una actualización

Por último, si queremos eliminar todos los paquetes descargados, pero que no estén instalados:

sudo apt-get clean
sudo apt-get autoclean

Con este comando se borrarán todos los paquetes del directorio /var/cache/apt/archives.

sudo apt-get autoremove

Se eliminarán todos los paquetes instalados que no se utilicen. 

posted under , | 4 Comments

Ubuntu Server - Instalación

Introducción

Ubuntu Server es la versión para servidores de Ubuntu, el sistema operativo de Canonical basado en Linux. Canonical, compañía británica propiedad del empresario sudafricano Mark Shuttleworth, ofrece el sistema de manera gratuita y se financia por medio de servicios vinculados al sistema operativo y vendiendo soporte técnico. Además, al mantenerlo libre y gratuito, la empresa es capaz de aprovechar los desarrolladores de la comunidad para mejorar los componentes de su sistema operativo.

Cada seis meses se publica una nueva versión de Ubuntu la cual recibe soporte por parte de Canonical, durante dieciocho meses, por medio de actualizaciones de seguridad, parches para errores críticos y actualizaciones menores de programas. Las versiones LTS (Long Term Support o Soporte de Larga Duración), que se liberan cada dos años, reciben soporte durante cinco años en los sistemas de escritorio y de servidor.

Instalaciones con Ubuntu Server se cuentan por miles en el mundo. Por ejemplo,  Wikipedia migró todos sus servidores a Ubuntu Server, por solo mencionar un sitio de Internet ampliamente conocido.

Características destacadas de Ubuntu Server

  • Soporte de larga duración (LTS o Long Term Support) durante 5 años
  • Incluye a Essex, la última versión de OpenStack, una plataforma para crear servicios en la nube.
  • MAAS (Metal As Service) una utilidad para configurar el hardware donde va a desplegarse cualquier servicio que necesite configuración y escalabilidad de forma dinámica
  • AWESOME (Any Web Service Over Me) un API o interfaz de programación que facilita el despliegue y administración de servicios tanto en nubes de Amazon como de OpenStack
  • Soporte de Java con OpenJDK 7 (muy cercano al JDK 7 oficial de Oracle)
  • Apache ActiveMQ 5.5, el servidor más popular de código abierto de mensajería y patrones de integración 
  • Juju, una herramienta para facilitar la orquestación de servicios en la nube
  • Servidor de integración continua Jenkins 1.424.6
  • Servidor de aplicaciones Apache Tomcat 7.0.26
  • Los lenguajes de programación Groovy, Clojure y Scala soportados sobre el OpenJDK
  • La virtualización incluye Xen, KVM y LXC
  • El mínimo requerimiento de memoria es de 128 MB
  • La imagen de 32 bits puede llegar a un máximo de 16 GB de memoria y utilizar un procesador de hasta 8 núcleos
  • Está disponible sobre arquitectura Intel x86 (32 bits), Intel AMD64 (64 bits) y también para procesadores ARM (existen 4 imágenes para ARM)

Descargar el software

Lo primero es visitar el sitio web oficial de Ubuntu para descargar el software.



Una vez seleccionado Ubuntu Server, vamos a poder elegir dos versiones: la última versión de Ubuntu Server 12.10 con solo dos años de soporte o la versión 12.04.01 LTS con hasta cinco años de actualizaciones garantizadas. Nuestra elección va a depender de lo que queramos hacer con Ubuntu Server:
  • Si deseamos una versión con los últimos avances prometidos por Canonical para desarrollar, hacer pruebas, formarnos en tecnología, deberíamos seleccionar siempre la última versión
  • Si deseamos una versión para montar un entorno de servidores de producción que de soporte a un negocio deberíamos seleccionar siempre aquella versión que nos ofrezca mayor soporte y estabilidad el mayor tiempo posible, aunque no tenga exactamente los últimos avances tecnológicos. 
Mi selección en este caso recae sobre Ubuntu Server 12.04.01 LTS.



Descargamos la versión de 32 o 64 bits en formato ISO en dependencia del hardware físico que tengamos. El tamaño de la descarga es aproximadamente unos 689 MB. Si deseamos utilizar esta imagen para un instalador en CD/DVD con unos CD de 700 MB nos valdría.

Proceso de instalación 

Una vez colocado el disco con la imagen de Ubuntu Server en nuestra unidad de CD/DVD (previamente revisando que el orden de arranque en el BIOS del ordenador permita ir primero a esta unidad), lo primero que tenemos que elegir es el idioma de instalación del sistema. Seleccionamos "Español".



Una vez seleccionado el idioma, el proceso nos lleva a una pantalla con diferentes opciones de instalación, pruebas del hardware (memoria y disco) o recuperación. Vamos a seleccionar "Instalar Ubuntu Server".




Una característica importante del instalador de Ubuntu Server es que tenemos una pantalla en modo texto en lugar de una pantalla en modo gráfico con soporte de ratón y controles más amigables. Esto permite que podamos instalar el sistema operativo en ordenadores más antiguos o más limitados en cuanto a potencia de hardware sin tener que utilizar el modo gráfico que siempre consume más memoria y procesador.  Así que tenemos que utilizar para movernos las teclas TAB, la barra espaciadora para seleccionar, INTRO o ENTER para activar los botones y las flechas del cursor para movernos entre opciones múltiples. (ver siempre la línea de estado o última línea de la pantalla durante el proceso de instalación).

Seleccionamos el país donde estamos para que Ubuntu Server pueda elegir la zona horaria:



A continuación, le toca el turno a la disposición del teclado. Podemos hacer que el instalador nos permita hacer unas pruebas para conocer el tipo de teclado que tenemos, o directamente indicándolo si lo sabemos. Yo digo en esta opción que no para especificar yo mismo el tipo de teclado.



Selecciono el país origen del teclado que es "Español":



A continuación especifico la variante de teclado español que pueda tener. Seleccionamos nuevamente "Español" si no tenemos ningún teclado Asturiano, Catalán, etc.



A continuación el sistema carga algunos módulos que necesita para continuar la instalación:



Ahora vamos a introducir el nombre de máquina o hostname que es quien identifica a nuestro ordenador en el sistema operativo. Yo seleccioné el nombre us1204LTS (Ubuntu Server 1204 Long Term Support) para recordar el sistema instalado, la versión instalada y que tenemos soporte para los próximos cinco años.



Luego, como es habitual en Ubuntu y en muchos Linux, tenemos que crear una cuenta de usuario para utilizar el sistema que no sea el usuario root o usuario administrador del sistema. Esto nos permite trabajar en tareas no administrativas, obligándonos a introducir contraseña cuando el sistema entiende que lo que estamos haciendo excede los privilegios de un usuario normal. Primero tecleamos nuestro nombre completo:



Luego el nombre de usuario, nick o identificador corto que utilizaremos en el login o entrada al sistema:



Por último tenemos que introducir para este usuario una contraseña. El instalador nos recuerda las normas para crear contraseñas (mezcla de letras y números, mayúsculas y minúsculas, así como el uso de algún caracterer no alfanumérico como los de puntuación o el @). Podemos generar una contraseña fácil de recordar para nosotros si el servidor es de pruebas o desarrollo, algo así como ubuntu2012, pero si el servidor es de producción, yo generaría una contraseña de un modo más segura y tomaría nota de ella en un lugar donde no se pierda. Una buena opción es generar una en el sitio web password.es y así la instalación del servidor queda más profesional.



En la próxima pantalla Ubuntu nos pregunta si queremos cifrar el contenido de la carpeta personal, o sea de la ruta /home/usuario. Esta opción hace un poco más lento el sistema, puesto que la escritura y lectura tienen que pasar por algoritmos de cifrado. Si el servidor es de producción con datos confidenciales es muy recomendable siempre que los recursos de hardware permitan un desempeño fluido del sistema. También es recomendable si instalamos Ubuntu Server en un portátil. Si lo perdemos, nadie podrá acceder a nuestra información personal, aunque pueda acceder al sistema. Si el servidor que estamos instalando es solo de pruebas o con propósito de desarrollo no lo recomiendo. Por eso elegí "No".



El instalador, en dependencia de nuestra localización física nos rectificará la zona horaria:



A continuación debemos elegir el particionado del disco donde vamos a instalar el sistema. El particionado es el proceso de dividir en zonas un disco físico para que el sistema pueda hacer un uso eficiente y correcto del mismo. Por ejemplo, en cualquier instalación de Linux y en dependencia del tipo de sistema de archivo a instalar, se crean particiones o áreas reservadas del disco para tareas como el arranque del sistema (partición /boot) o la memoria virtual.

Esta división del disco duro, puede abarcar a todo el disco o solo a una parte del disco. Esto permite que en un disco de un terabyte, instalemos Ubuntu Server en solo 20 GB y luego podamos ampliar el espacio de forma manual según las necesidades que tenga el servidor durante su explotación.

Para eso en Ubuntu Server se utiliza un sistema denominado LVM (Logical Volume Manager) que nos permite una administración mas eficaz del espacio en disco, tanto en sistemas pequeños como en sistemas grandes. En este caso elegí utilizar el disco completo y configurar LVM.



La próxima pregunta es para asegurar que realmente vamos a particionar el disco elegido, lo que supondrá una pérdida total de toda la información que tenga previamente almacenada:



Luego el instalador nos confirma la instalación de LVM sobre las particiones de disco que vamos a crear:



Yo elegí todo el tamaño del disco porque es una instalación de pruebas, pero podríamos especificar menos espacio que el que realmente tenemos para poder administrarlo luego bajo demanda:



Una vez más nos indica las particiones a crear sobre el disco antes de comenzar realmente el proceso de particionamiento e instalación del sistema operativo. Esta es nuestra última oportunidad para cancelar el proceso de las particiones del disco y borrar la antigua información.

Comenzará el proceso de instalación del sistema base Linux (solo el sistema operativo con sus utilidades básicas).



A continuación, una vez instalado el sistema básico, el instalador nos pregunta si la conexión a Internet se realiza a través de proxy (muy común por ejemplo en un entorno empresarial). Yo como lo estoy haciendo en mi casa, directamente tendría el servidor conectado a Internet a través de mi router ADSL, así que lo dejo en blanco.



Ahora viene la toma de decisiones sobre las actualizaciones del sistema:

  • Si el servidor es de pruebas o desarrollo para aprender tecnología, recomiendo actualizaciones automáticas 
  • Si el servidor es de desarrollo y forma parte de un proyecto de software serio y de larga duración (se generan actualizaciones de Ubuntu casi todas las semanas) recomiendo sin actualizaciones automáticas, ya que una actualización podría dejar inestable algún producto previamente instalado o al propio servidor (primero se actualiza Ubuntu y luego diferentes productos o aplicaciones lo hacen después para soportar las nuevas actualizaciones cumpliendo con un proceso riguroso de pruebas que demoran más tiempo)
  • Si el servidor es de producción no hay que instalar nunca nada de forma automática. Primero se prueba en un entorno similar de test o de desarrollo y una vez evaluada su estabilidad y la estabilidad del resto de las aplicaciones instaladas, se procede a actualizar los servidores de producción.
En mi caso, y aunque el servidor es de pruebas, voy a elegir actualizar el servidor de forma manual yo mismo.




La próxima pantalla nos permite instalar sobre el sistema básico obligatorio, diferentes aplicaciones o servidores. Yo elegí:

  • Servidor de OpenSSH que nos va a permitir comunicaciones seguras a la hora de acceder al servidor
  • Servidor LAMP que no instalará el clásico stack Apache, MySQL y PHP para desarrollo Web
  • Servidor de archivos Samba, muy útil para compartir información en la red con sistemas Windows
  • Servidor de aplicaciones Tomcat para alojar y probar mis propias aplicaciones con tecnología Java

Durante la instalación del servidor de base de datos MySQL 5.5 nos pedirá la contraseña de administración y su confirmación, así que si hemos elegido previamente un servidor LAMP, la instalación no puede continuar de forma desatendida hasta el final.


Por último, una vez instalados el sistema y todos los paquetes de software elegidos, el instalador nos preguntará por la instalación de GRUB en el sector de arranque del disco. Si tuviéramos otro sistema operativo de una instalación anterior (por ejemplo Windows), GRUB lo respetaría y el arranque sería compartido.


Una vez instalado GRUB en unos pocos segundos, llegamos a la pantalla final que nos pide extraer el disco de la torre de CD/DVD antes de reiniciar el sistema por primera vez.

  


Primera ejecución

Una vez reiniciado el ordenador y terminado el proceso de arranque del sistema, Ubuntu Server nos llevará a la pantalla de login.



Introducimos el identificador del usuario creado y la contraseña y ya estamos dentro del sistema operativo.



El sistema en su pantalla de bienvenida en modo texto, nos advierte que tenemos actualizaciones pendientes desde los repositorios de software de Ubuntu y que una parte de ellas son actualizaciones de seguridad. Con esto hemos concluido la instalación de nuestro Ubuntu Server 12.04.01 LTS "Precise Pangolin".

posted under , | 6 Comments

Java Empresarial - Los componentes web


Introducción

En Java Empresarial, los componentes web permiten crear extensiones dinámicas a un servidor web. Los componentes web pueden ser:

  • Servlets
  • Páginas  JSF
  • Endpoints de servicios web (interfaces a través de las cuáles se realiza la comunicación)
  • Páginas JSP
El servlet en tecnología Java, es un programa que se ejecuta en el servidor, en contraposición a un applet que es un programa que se ejecuta en navegador. Los servlets son capaces de generar páginas web de forma dinámica en dependencia de los parámetros especificados por una petición originada en el navegador web.

Como trabajan los servlets













Cuando los usuarios realizan cualquier acción interactiva en la capa de presentación o cliente web, si esta acción lleva consigo, por ejemplo, una consulta de datos se genera una petición web hacia el servidor (HTTP request).

El servidor de Java Empresarial, convierte la petición web en un objeto de la clase HTTPServletRequest. Este objeto interactúa luego con un componente web que a su vez puede consultar la información a un servicio web o directamente a una base de datos.

La información generada dinámicamente es convertida en un objeto de la clase HTTPServletResponse generalmente por un componente web y este objeto es finalmente convertido por el servidor web en una respuesta HTTP o HTTP Response. Esta respuesta HTTP es la que renderiza el navegador web mostrándonos la información deseada.

El contenedor web

Los componentes web son soportados en el servidor JEE por una parte del entorno de ejecución denominada contenedor web.

El contenedor web suministra un conjunto de servicios tales como la atención y respuesta a las peticiones, seguridad, concurrencia, gestión de ciclo de vida y acceso a las APIs tales como soporte de correos electrónicos o soporte de transacciones.

Configuración de la aplicación web

Determinados aspectos de la aplicación web, pueden ser configurados cuando la misma es instalada o desplegada en el contenedor web.

Esta configuración puede ser especificada de dos formas diferentes:

  • Internamente mediante anotaciones en el código
  • Externamente mediante especificaciones en un archivo XML denominado descriptor de despliegue

posted under , , | 0 Comments

Java Empresarial - Introducción a las aplicaciones web

Introducción

Las aplicaciones web en la arquitectura empresarial de Java (JEE o Java Enterprise Edition) no son mas que extensiones dinámicas de un servidor web. En otras palabras, en una arquitectura clásica cliente servidor, lo que vemos en el navegador es la parte cliente y lo que procesa, accede a los datos y devuelve resultados está en la parte servidor.

En JEE podemos crear dos tipos de aplicaciones web:

  • Aplicaciones web orientadas en capa de presentación.
  • Aplicaciones web orientadas a servicios.


Aplicaciones web en capa de presentación

La capa de presentación es la parte de nuestra aplicación empresarial que interactúa directamente con los usuarios. A través de la capa de presentación se intercambian se introducen datos de entrada, se consultan datos de salida o se eligen diferentes opciones de proceso en un menú.

En aplicaciones web, la capa de presentación es construida básicamente en HTML (o en cualquiera de sus variantes como XHTML, etc.) que es el lenguaje  principal para mostrar texto, imágenes, vídeo o reproducir sonidos de una manera controlada, formateada y visualmente atractiva para los usuarios. En la capa de presentación además de HTML se suelen utilizar lenguajes que se ejecutan en el navegador, como Javascript, potenciando la interactividad del usuario y enriqueciendo las capacidades de mostrar información.

Java Empresarial tiene la tecnología JavaServer Faces (JSF) para desarrollar aplicaciones web en capa de presentación.

Aplicaciones web orientadas a servicios









Las aplicaciones web orientadas a servicios (web services o servicios web) están diseñadas para intercambiar datos entre diferentes aplicaciones en vez de presentar una interfaz para interactuar directamente con el usuario final.

Los servicios web permiten que aplicaciones escritas en diferentes lenguajes de programación y ejecutándose en diferentes sistemas operativos y en diferentes plataformas de hardware puedan intercambiar información entre ordenadores interconectados entre sí por una red.

La interoperabilidad se logra diseñando los servicios web siguiendo un conjunto de estándares abiertos, normalmente dictados y regulados por organizaciones como OASIS, W3C o WS-I. Si un servicio web  es diseñado y publicado siguiendo un estándar como SOAP (Simple Object Access Protocol) podremos conseguir que intercambie datos en formato XML con otra aplicación que respete este mismo estándar.

Java empresarial posee tecnologías que soportan la creación de servicios web como JAX-WS o JAX-RS.

posted under , , | 0 Comments
Entradas más recientes Entradas antiguas Inicio