En el tutorial anterior de la serie (personalización del prompt) explicamos de forma muy breve las ventajas que nos daba tener un servidor de desarrollo para la fase de implementación de nuestros proyectos, además vimos cómo agregar un poco de color a nuestro prompt.
Una parte importante de un servidor de desarrollo son las herramientas con las que este cuente (que dependerán un poco de los tipos de proyectos y políticas de nuestra empresa/trabajo/grupo de desarrollo) y que nos facilitarán este tan arduo pero gratificante trabajo ^_^.
Instalaremos varias aplicaciones para este fin, como un servidor para control de versiones de código fuente, un servidor de integración continua, una aplicación para reportes de incidencias, etc. Además veremos cómo integrar todas estas herramientas con nuestro IDE de cabecera, el NetBeans, para trabajar de una forma integral.
En este tutorial aprenderemos a instalar las versiones más recientes de las herramientas básicas con las que contará nuestro servidor (entre las cuales se encuentra el JDK de java). En este tutorial instalaremos los siguientes servicios:
Y veremos cómo configurarlos para que arranquen junto con nuestro servidor.
Instalaremos todas estas herramientas usando su código fuente intentando cubrir la mayor cantidad posible de distribuciones de Linux. Esto además nos permitirá usar las últimas versiones de estas herramientas sin tener que agregar repositorios extraños. Aunque si alguien quiere facilitarse la vida siempre pueden usar herramientas como YaST o con el mismo apt-get. También haremos todo esto desde una consola y usando comandos ya que, como recordarán, la única forma que tenemos de acceder a nuestro servidor es a través de SSH, por lo que no contaremos con una interface gráfica de usuario.
Lo primero que haremos es acceder a nuestro servidor remoto usando una cliente de SSH, como putty o kitty. Accedemos como cualquier usuario que tengamos dados de alta y luego nos logueamos como root usando el comando
*Nota: Por motivos de seguridad es recomendable no usar nunca el usuario root (si es posible también se recomienda desactivarlo) y en lugar de esto ejecutar las instrucciones necesarias usando "sudo". Pero en estos tutoriales haré caso omiso de esta recomendación ^_^.
Ahora crearemos los siguientes grupos a los que pertenecerán las aplicaciones que instalaremos:
Algunas de las aplicaciones pertenecerán a más de un grupo. Esto nos permitirá que conforme vayamos agregando nuevos usuarios a nuestro servidor, estos solo puedan usar las herramientas de los grupos a los que pertenecen. Por ejemplo, los usuarios que solo tengan que acceder a nuestra base de datos, no queremos que también pueda hacer cosas dentro de nuestro servidor apache.
Procedemos a crear los grupos con el comando "groupadd", de la siguiente forma:
En la secciones correspondientes iremos agregando los usuarios que serán los propietarios de cada una de nuestras herramientas.
En este momento les recomiendo cambiar su directorio de trabajo a "/usr/src", que es dónde se recomienda colocar el código fuente de las aplicaciones que instalamos desde el código fuente (al menos en la distribución con la que estamos trabajando).
Comencemos instalando lo que es el corazón de nuestro servidor para el desarrollo de aplicaciones, la última versión del JDK.
*Nota: Dependiendo de los paquetes que hayas seleccionado al momento de realizar la instalación de tu sistema operativo, es posible que ya tengas el JDK instalado. Si este es el caso aún así te recomiendo que descargues e instales la última versión. Yo he instalado los paquetes mínimos, por lo que no tengo el JDK, y esto se reflejará en los screenshots que muestre.
http://www.java.net/download/jdk6/
Nosotros descargaremos el archivo auto-extraible para Linux (el que tiene el ".bin" al final) usando el comando "wget"
Esperamos a que termine de realizar la descarga, y una vez todo listo procedemos con la instalación.
Creamos un usuario "java", el cual pertenecerá al grupo "desarrollo", con el comando "useradd":
Luego hacemos que este nuevo usuario sea el dueño del archivo que acabamos de descargar:
Asignamos permisos para que el usuario, y los miembros del grupo "desarrollo" puedan ejecutar el archivo "jdk-6u25-ea-bin-b01-linux-i586-27_jan_2011.bin", usando el comando "chmod", de la siguiente forma:
Ahora creamos el directorio "/usr/java", se lo asignamos al usuario "java", y movemos el archivo "jdk-6u25-ea-bin-b01-linux-i586-27_jan_2011.bin" a este directorio (y de paso acortaremos su nombre):
Entramos como el usuario "java" y nos movemos al directorio "/usr/java":
Ahora ejecutamos el archivo ".bin" para iniciar la instalación:
Con lo que nuestro archivo comenzará a descomprimirse, hasta que nos muestre un mensaje indicando que la instalación se ha realizado correctamente, y que solo nos falta presionar "Enter":
Presionamos la tecla "Enter" y después de unos segundos se mostrará el mensaje "Done" y se nos volverá a mostrar la línea de comandos:
Terminamos la sesión del usuario "java" y regresamos a la que teníamos como root (para esto pueden presionar las teclas Ctrl + D)
Nuevamente como root creamos un enlace simbólico a al directorio "/usr/java/jdk1.6.0_25" al directorio "/usr/java/jdk", usando el comando "ln":
Ahora si ejecutan los comandos "java" y "javac" verán aparecer en la consola un hermoso mensaje que dice:
O si ya tenían instalado un jdk más antiguo, es posible que les muestre una salida diferente. Pero si usan la opción "-v", o "-version", verán que la versión que están llamando es la antigua, y no la que acabamos de instalar.
Esto se debe a que, aunque java ya se encuentra instalado en nuestro sistema, aún hace falta configurarlo para que funcione correctamente. En Debian existe un script de Perl llamado "update-alternatives" el cual nos permite seleccionar qué programa responderá por defecto de entre varias instaladas para el mismo propósito (en este caso "java" o "javac").
Lo primero que haremos es indicar que existen nuevas opciones para los programas "java" y "javac" usando la opción "--install", de la siguiente forma:
Ahora que ya tenemos alternativas para estas aplicaciones podemos, si es que tenemos versiones antiguas instaladas, configurar cuál queremos usar usando la opción "--config":
y con
En mi caso esto no me servirá de nada porque solo tengo una opción. Pero, como dije antes, si ustedes tienen más pueden seleccionar aquí cuál quieren usar por defecto.
Ahora agregaremos un par variables de entorno y configuraremos nuestro PATH para que apunten al directorio "bin" de nuestro nuevo jdk. Abrimos el archivo "/etc/profile" con nuestro editor de texto favorito, y al final de este, antes de la línea que dice:
Agregamos lo siguientes:
y modificamos la línea que dice:
Para que diga:
Guardamos el archivo y ejecutamos el siguiente comando, para que el sistema se dé cuenta del cambio:
y después pueden hacer:
para verificar que todo se configurado correctamente:
Ahora cuando ejecutemos los comandos:
Obtendremos lo siguiente:
Por lo que nuestro jdk está listo para ser usado.
Ahora instalaremos nuestra base de datos.
*Nota: La instalación de MySQL 5.5 varia un poco con respecto a la instalación de la versión anterior (5.1). Si por alguna razón no quieren instalar la versión 5.5 haré las anotaciones correspondientes sobre cómo instalar MySQL 5.1 en las partes donde el proceso de instalación varíe ^_^.
Lo primero que haremos es instalar una librería llamada "libncurses5", la cual es necesaria para compilar aplicaciones que hagan uso de ncurses, como MySQL (ñ_ñ). Solo como breviario cultural, "ncurses" son unas librerías que ayudan a la programación en modo texto para Linux. Es decir, movimientos de cursores, colores, recoger teclas (sin tener que esperar el "Enter") y un largo etcétera. Como MySQL hace uso de estas librerías, debemos instalarlas en nuestro sistema, haciendo uso de "apt-get", como root, de la siguiente forma:
Una vez que ejecutemos este comando, veremos cómo comienza a descargar, y posteriormente instalar las librerías:
Ahora descargaremos el código fuente de MySQL, usando nuevamente el comando "wget":
Para descargar MySQL 5.5 ejecuten:
Y para MySQL 5.1:
Si no realizaron la descarga en el directorio "/usr/src" deberán mover el archivo descargado al este directorio:
O para MySQL 5.1:
Nos cambiamos a al directorio "/usr/scr", y descomprimimos el archivo archivo.
o para MySQL 5.1:
Una vez descomprimido, entramos al directorio que se acaba de crear "mysql-5.5.9":
o "mysql-5.1.50" para MySQL 5.1:
Ahora configuraremos el código fuente para instalar la base de datos. Para entender un par de parámetros que usaremos debo dar una explicación sobre los conjuntos de caracteres que podemos usar en la base de datos y sobre el "collate" o colación de los mismos.
Un conjunto de caracteres es un conjunto de símbolos y codificaciones. Una colación es un conjunto de reglas para comparar caracteres en un conjunto de caracteres. Vamos a dejar clara la distinción con un ejemplo de un conjunto de caracteres imaginario.
Supongamos que tenemos un alfabeto con cuatro letras: 'A', 'B', 'a', 'b'. Damos a cada letra un número: 'A' = 0, 'B' = 1, 'a' = 2, 'b' = 3. La letra 'A' es un símbolo, el número 0 es la codificación para 'A', y la combinación de las cuatro letras y sus codificaciones es un conjunto de caracteres.
Suponga que queremos comparar dos cadenas de caracteres, 'A' y 'B'. La forma más fácil de hacerlo es mirar las codificaciones: 0 para 'A' y 1 para 'B'. Ya que 0 es menor a 1, decimos que 'A' es menor que 'B'. Lo que acabamos de hacer es aplicar una colación a un conjunto de caracteres. La colación es un conjunto de reglas (sólo una en este caso): "compara las codificaciones". Llamamos a la más sencilla de todas las colaciones una colación binaria.
Pero, ¿qué pasa si queremos decir que las letras en mayúsculas y minúsculas son equivalentes? Entonces tendríamos como mínimo dos reglas: (1) tratar las letras minúsuclas 'a' y 'b' como equivalentes a 'A' y 'B'; (2) luego comparar las codificaciones. Llamamos a esto una colación no sensible a mayúsuculas y minúsculas (case-insensitive). Es un poco más compleja que una colación binaria.
En el mundo real, la mayoría de conjuntos de caracteres tienen varios caracteres: no sólo 'A' y 'B' sino alfabetos completos, a veces varios alfabetos o sistemas de escritura orientales con miles de caracteres, junto con muchos símbolos especiales y signos de puntuación. También en el mundo real, la mayoría de colaciones tienen muchas reglas: no sólo distinción entre mayúsculas y minúsculas, sino también sensibilidad a tildes (una "tilde" es una marca añadida a un carácter como en alemán 'Ö') y mapeos de múltiples caracteres (tales como la regla que 'Ö' = 'OE' en una de las dos colaciones alemanas).
Después de haber leído esta teoría, podrían estarse preguntando, ¿qué nos importa esto para la instalación de nuestra base de datos? Pues en realidad podríamos decir que poco. Estableceremos cuál será el conjunto de caracteres y el collate que se usará por default en MySQL. Esto es para que nuestra base de datos acepte caracteres con acentos y la famosa "ñ", que muchos problemas nos han dado en alguna ocasión. Usaremos el conjunto de caracteres "utf-8" que es el conjunto de caracteres más amplio. Para el collate usaremos "utf8_spanish_ci". Esto quiere decir que las comparaciones que se hagan no distinguirán entre mayúsculas y minúsculas, o sea que "Alex" y "alex" serán exactamente iguales. Hay una convención para nombres de colaciones: empiezan con el nombre del conjunto de caracteres al que están asociados, normalmente incluyen el nombre del idioma, y acaban con "_ci" (no distingue entre mayúsculas y minúsculas, case insensitive), "_cs" (distingue entre mayúsculas y minúsculas, case sentitive), o "_bin" (binario).
Ahora sí, pasaremos a configurar el código fuente para su instalación, con la siguiente línea:
*Nota: MySQL 5.5 está configurado para usar el sistema de construcción cmake, además de usar las librerías de bison, mientras que MySQL 5.1 está configurado para usar el make "regular", así que los que estamos instalando MySQL 5.5 primero deberemos instalar "cmake" usando el siguiente comando:
Y configurar el código fuente usando:
Los que estén instalando MySQL 5.1 pueden configurar el código fuente usando el comando siguiente:
Con lo que la configuración comenzará a ejecutarse. Si quieren qué otras opciones podemos establecer en la configuración pueden hacerlo en la página de la configuración de MysQL 5.1
Una vez terminado este proceso, deberemos ver en la consola un mensaje que diga "Thank you for choosing MySQL!"
Los que estamos instalando MySQL 5.5 no veremos el mensaje anterior :(.
Ahora continuaremos con el proceso para ambas versiones. Compilaremos el código de MySQL ejecutando el comando "make", en el directorio en el que nos encontramos:
En la consola podemos ver todo el proceso que se está ejecutando. Después de unos (muchos, créanme, bastantes) minutos, al terminarse este proceso, veremos nuevamente la línea de comandos.
Finalmente, realizamos la instalación ejecutando el comando:
Nuevamente tardara unos minutos realizando algunas tareas y al final nos devolverá a la línea de comandos. Y listo, ya tendremos nuestro servidor instalado. Si vamos al directorio "/usr/local" veremos que se nos ha creado un directorio nuevo llamado "mysql-5.5.9", o "mysql-5.1.50" para los que instalaron la versión 5.1:
Ahora, si ejecutamos el comando "mysql", veremos aparecer en la consola el siguiente mensaje:
Esto quiere decir que aún nos faltan cosas por configurar.
Primero crearemos un enlace simbólico del directorio "/usr/local/mysql-5.5.9" a "/usr/local/mysql":
O de "/usr/local/mysql-5.1.59", para los que instalaron la versión 5.1:
Ahora procedemos a crear un usuario "mysql", que pertenecerá a los grupos "desarrollo", y "basesDeDatos".
Creamos al usuario "mysql" con el comando "useradd":
Dependiendo de su versión y distribución de Linux, tal vez no puedan agregar al usuario a los dos grupos al mismo tiempo, en este caso deberán agregarlo al grupo "basesDeDatos" al momento de crearlo, y después a "desarrollo" usando el comando "usermod", de la siguiente forma:
O modificando directamente el archivo "/etc/group".
Asignamos este directorio al usuario "mysql":
Y damos permisos de que el dueño del directorio tenga permisos completos, los usuarios del mismo grupo puedan leer y ejecutar, y los otros usuarios no puedan hacer nada:
Hacemos lo mismo para el directorio "mysql-5.5.9"
O para el directorio "mysql-5.1.50", dependiendo de la versión que hayamos instalado:
Ahora regresamos al directorio "/usr/src/mysql-5.5.9" y entramos al subdirectorio "support-files":
o, para MySQL 5.1 a "/usr/src/mysql-5.1.50":
Este es un directorio especial con algunos archivos de configuración y otras cosas. Nosotros tomaremos el archivo de configuración más simple ("my-small.cnf") y lo usaremos para terminar de configurar nuestro servidor de base de datos. Movemos este archivo al directorio "/etc" y lo renombramos como "my.cnf"
Después editamos este archivo usando nuestro editor de texto favorito (yo usare nano, no es mi favorito pero creo que es el más fácil de usar):
Buscamos la línea que dice:
Y agregamos la línea:
Agregamos también las siguientes variables que nos proporcionarán un log de errores y un log general de queries:
Guardamos el archivo y agregamos a nuestra variable de entorno "PATH" la ruta del directorio "bin" de MySQL. Recuerden que para esto debemos editar el archivo "/etc/profile":
Guardamos el archivo y ejecutamos el comando
Ahora terminaremos la configuración creando la base de datos que usa MySQL para guardar su configuración. Entre otras cosas, se inicializará el directorio de datos y creará las tablas del sistema. Es importante ejecutar este comando con el mismo usuario que será usado para levantar el servicio de mysql (mysqld). Nos logueamos como el usuario "mysql", nos movemos al directorio "/usr/local/mysql":
y ejecutamos el siguiente comando, para MySQL 5.5 usamos:
Y para MySQL 5.1:
Después iniciamos el servicio de MySQL de modo seguro con el siguiente comando:
Entraremos ahora a hacer unas configuraciones de usuarios. Entraremos a mysql usando la cuenta de "root". En este momento aunque la cuenta existe esta no está protegida con ninguna contraseña (cosa que arreglaremos en unos momentos). Accedemos a mysql con la siguiente instrucción:
Ahora, si no queremos permitir acceso a usuarios anónimos, los eliminamos con la siguiente sentencia:
Si consultamos los usuarios que tenemos ahora, que tienen acceso a nuestro servidor de base de datos, ahora solo debemos tener al usuario "root":
En la imagen anterior "miniServer" es el nombre del servidor que estoy configurando, así que seguramente a ustedes les aparecerá un nombre distinto.
Pasemos a proteger la cuenta del usuario "root" con una contraseña, usando los siguientes comandos:
La función "OLD_PASSWORD" deja la contraseña con un formato tal que nos permitirá conectarnos a esta usando algunas herramientas antiguas como el "DBDesigner" o algunos módulos del mismo Apache.
*Nota: en MySQL 5.5 tal vez sea necesario que reinicien el servidor para que estos cambios tomen efecto.
Ahora salimos del manejador de base de datos:
Detenemos el servicio de MySQL con el siguiente comando, que nos pedirá la contraseña de "root" que acabamos de configurar:
El siguiente paso será hacer que MySQL se inicie o levante de forma automática al iniciar nuestro servidor. Para esto copiaremos un script que se encuentra en el directorio "/usr/src/mysql-5.5.9" o "/usr/src/mysql-5.1.50", llamado "mysql.server". Este script básicamente nos permitirá iniciar y detener el servicio de MySQL. Copiamos, como root, este archivo al directorio "/etc/init.d/" y le damos permisos de ejecución:
o, si estamos instalando MySQL 5.1:
Ahora haremos que nuestro servidor inicie el servicio de MySQL de forma automática registrándolo como un servicio de nuestro servidor. Primero lo eliminaremos como servicio (si es que ya existe) y después lo agregaremos nuevamente, con los siguientes comandos:
Los dos comandos anteriores son usados en Debian y las distribuciones basadas en este, si están usando otra distribución tal vez deban usar estos comandos:
Ahora que ya tenemos todo listo podemos, si es que lo desean, reiniciar el servidor y entrar nuevamente a mysql, como root, con el comando:
*Nota: tal vez sea necesario que reinicien el servidor en este paso si es que no les permite conectarse a mysql
Ahora pasaremos a instalar el servidor HTTP Apache 2.
Para los que no lo descargaron en el directorio indicado, aún pueden corregir esto y una vez que la descarga termine mover el archivo que acabamos de mover al directorio "/usr/src"
Nos cambiamos a este directorio:
Descomprimimos el archivo "httpd-2.2.17.tar.gz"
Y entramos al directorio que se acaba de crear:
Nuevamente configuraremos el código fuente para poder instalar el servidor web. Usaremos el comando "configure", de la siguiente forma.
*Nota: si están usando la versión 5.1 de MySQL tengan cuidado de modificar la ultima parte del comando
La opción más importante es "prefix" que nos indica en qué directorio será instalado el servidor Apache. "enable-so" habilita el soporte de DSO (Dynamic Shared Object), o sea que los módulos que compilemos como objetos compartidos podrán ser cargados y descargados en tiempo de ejecución (tal vez explique más de esto en un tutorial posterior). Las úlimas dos opciones nos servirán para cuando queramos agregar servicios extra como el subversion, del que hablaré en un próximo tutorial. Si desean ver qué otras opciones pueden usar, pueden verlas en la página de configuración de Apache.
Una vez terminado el proceso de configuración, compilamos el código fuente ejecutando el comando "make" en el directorio en el que nos encontramos:
Cuando este proceso termine nos mostrará la línea de comandos, y podremos realizar la instalación con el siguiente comando:
Al terminar ya tendremos listo nuestro servidor Apache. Solo realizaremos unos pequeños pasos de configuración.
Creamos un nuevo usuario llamado "apache2", que pertenecerá a los grupos "desarrollo" y "servidores". Creamos al usuario "apache2" con el comando "useradd":
Dependiendo de su versión y distribución de Linux, tal vez no puedan agregar al usuario a los dos grupos al mismo tiempo, en este caso deberán agregarlo al grupo "servidores" al momento de crearlo, y después a "desarrollo" usando el comando "usermod", de la siguiente forma:
O modificando directamente el archivo "/etc/group".
Creamos un enlace simbólico del directorio "/usr/local/apache-2.2.17" a "/usr/local/apache2":
Asignamos el directorio "/usr/local/apache-2.2.17" al usuario "apache2" y damos al dueño permisos completos, a los usuarios del mismo grupo permisos de lectura y ejecución, y que los otros usuarios no puedan hacer nada:
Y hacemos lo mismo para el directorio "/usr/local/apache2":
Ahora entramos editamos el archivo "/usr/local/apache2/conf/httpd.conf". Buscamos el lugar en el que se declara el modulo "mpm_netware" o "mpm_netware.c" y reemplazamos:
Por :
Probemos que nuestro servidor funciona correctamente iniciando el servicio, con el siguiente comando:
Abrimos un navegador y colocamos en la barra de direcciones la IP de nuestro servidor, que en mi caso es: 5.114.168.188:
Y deberemos ver en nuestro navegador el mensaje "It works!"
*Nota: Si por alguna razón no logran ver esta página de inicio revisen su firewall para ver que su servidor acepte peticiones por el puerto 80.
Aquí les recomiendo que hagan una cosa (a elección del cliente). Para no estar recordando la ip de nuestro servidor, pueden modificar el archivo hosts de su computadora y agregar una entrada para la ip de su servidor, y un nombre que les sea fácil recordar. Este archivo se encuentra en distintas ubicaciones dependiendo de su sistema operativo, en Windows está en "C:\Windows\System32\drivers\etc".
Yo agregaré un mapeo entre la ip de mi servidor y el nombre de miniServer, de esta forma:
Y ahora podré entrar ingresando a la dirección:
Regresemos a nuestro servidor. Ahora realizaremos la configuración para que nuestro servidor Apache inicie de forma automática cada vez que nuestro servidor de desarrollo se levante. Lo primero que haremos es crear una liga simbólica del archivo "/usr/local/apache2/bin/apachectl" a "/etc/init.d/apache2":
Ahora registraremos a nuestro servidor Apache como un servicio. Nuevamente, primero lo eliminamos (si es que ya existe) y luego lo agregamos nuevamente con los siguientes comandos:
Si están usando una distribución distinta a Debian, tal vez deban usar estos comandos:
Y ya ha quedado todo configurado. Si lo desean pueden reiniciar su servidor para comprobar que todo funciona correctamente.
Para terminar este post veremos cómo instalar el contenedor de servlets Apache Tomcat en su versión más reciente, 7.
Descargamos Tomcat usando el comando "wget" (recuerden descargarla en el directorio "/usr/src"):
Una vez terminada la descarga descomprimimos el archivo tar que acabamos de bajar:
Copiamos el directorio que se acaba de crear, "apache-tomcat-7.0.8", al subdirectorio "/usr/local":
Creamos un enlace simbólico del directorio "/usr/local/apache-tomcat-7.0.8" a "/usr/local/tomcat":
Creamos un nuevo usuario llamado "tomcat", que pertenecerá a los grupos "desarrollo" y "servidores", usando el comando "useradd":
Dependiendo de su versión y distribución de Linux, tal vez no puedan agregar al usuario a los dos grupos al mismo tiempo, en este caso deberán agregarlo al grupo "servidores" al momento de crearlo, y después a "desarrollo" usando el comando "usermod", de la siguiente forma:
O modificando directamente el archivo "/etc/group".
Asignamos el directorio "/usr/local/apache-tomcat-7.0.8" al usuario "tomcat" y damos al dueño permisos completos, a los usuarios del mismo grupo permisos de lectura y ejecución, y que los otros usuarios no puedan hacer nada:
Y hacemos lo mismo para el directorio "/usr/local/tomcat":
Ahora agregaremos un usuario que será el administrador del servidor Tomcat. Para editamos el archivo "/usr/local/tomcat/conf/tomcat-users.xml". Dentro del elemento "<tomcat-users>" agregamos la siguiente línea:
Por lo que el archivo debe quedar de esta forma:
Guardamos el archivo y ahora probemos que nuestro servidor funciona correctamente iniciándolo con el siguiente comando:
Abrimos un navegador y colocamos en la barra de direcciones la IP de nuestro servidor, pero ahora entrando por el puerto 8080, en mi caso será:
Si todo funciona bien deberán ver la página principal de Tomcat:
*Nota: Si por alguna razón no logran ver esta página de inicio revisen su firewall para ver que su servidor acepte peticiones por el puerto 8080.
Realicemos la configuración para que nuestro servidor Tomcat inicie de forma automática cada vez que nuestro servidor de desarrollo se levante. Lo primero que haremos es crear un enlace simbólico del archivo "/usr/local/tomcat/bin/startup.sh" a "/etc/init.d/tomcat".
Ahora registraramos nuestro servidor Tomcat como un servicio. Una vez más primero lo eliminaremos, si es que existe, y luego lo agregaremos nuevamente:
Si están usando una distribución distinta a Debian tal vez deban usar estos comandos:
Y listo, con esto termina la configuración del Tomcat. Si lo desean pueden reiniciar su servidor para ver que todo funciona correctamente.
Como una nota adicional: pueden iniciar estos tres servicios que hemos instalado usando los siguientes comandos:
Y detenerlos con los siguientes comandos:
Pues es todo en este post, en el que instalamos los que serán 4 de los servicios básicos de nuestro servidor de desarrollo (JDK6, MySQL 5.5, Apache 2.2, y Tomcat 7). En los siguientes tutoriales vernos cómo configurar algunos otros servicios más, y cómo hacer una integración entre algunos de estos servicios, y con nuestro IDE de trabajo.
No olviden dejar sus dudas, comentarios, sugerencias, críticas y mejoras.
Saludos.
Entradas Relacionadas:
Una parte importante de un servidor de desarrollo son las herramientas con las que este cuente (que dependerán un poco de los tipos de proyectos y políticas de nuestra empresa/trabajo/grupo de desarrollo) y que nos facilitarán este tan arduo pero gratificante trabajo ^_^.
Instalaremos varias aplicaciones para este fin, como un servidor para control de versiones de código fuente, un servidor de integración continua, una aplicación para reportes de incidencias, etc. Además veremos cómo integrar todas estas herramientas con nuestro IDE de cabecera, el NetBeans, para trabajar de una forma integral.
En este tutorial aprenderemos a instalar las versiones más recientes de las herramientas básicas con las que contará nuestro servidor (entre las cuales se encuentra el JDK de java). En este tutorial instalaremos los siguientes servicios:
Y veremos cómo configurarlos para que arranquen junto con nuestro servidor.
Instalaremos todas estas herramientas usando su código fuente intentando cubrir la mayor cantidad posible de distribuciones de Linux. Esto además nos permitirá usar las últimas versiones de estas herramientas sin tener que agregar repositorios extraños. Aunque si alguien quiere facilitarse la vida siempre pueden usar herramientas como YaST o con el mismo apt-get. También haremos todo esto desde una consola y usando comandos ya que, como recordarán, la única forma que tenemos de acceder a nuestro servidor es a través de SSH, por lo que no contaremos con una interface gráfica de usuario.
Lo primero que haremos es acceder a nuestro servidor remoto usando una cliente de SSH, como putty o kitty. Accedemos como cualquier usuario que tengamos dados de alta y luego nos logueamos como root usando el comando
su
*Nota: Por motivos de seguridad es recomendable no usar nunca el usuario root (si es posible también se recomienda desactivarlo) y en lugar de esto ejecutar las instrucciones necesarias usando "sudo". Pero en estos tutoriales haré caso omiso de esta recomendación ^_^.
Ahora crearemos los siguientes grupos a los que pertenecerán las aplicaciones que instalaremos:
- desarrollo
- basesDeDatos
- servidores
Algunas de las aplicaciones pertenecerán a más de un grupo. Esto nos permitirá que conforme vayamos agregando nuevos usuarios a nuestro servidor, estos solo puedan usar las herramientas de los grupos a los que pertenecen. Por ejemplo, los usuarios que solo tengan que acceder a nuestra base de datos, no queremos que también pueda hacer cosas dentro de nuestro servidor apache.
Procedemos a crear los grupos con el comando "groupadd", de la siguiente forma:
groupadd desarrollo
groupadd basesDeDatos
groupadd servidores
En la secciones correspondientes iremos agregando los usuarios que serán los propietarios de cada una de nuestras herramientas.
En este momento les recomiendo cambiar su directorio de trabajo a "/usr/src", que es dónde se recomienda colocar el código fuente de las aplicaciones que instalamos desde el código fuente (al menos en la distribución con la que estamos trabajando).
Comencemos instalando lo que es el corazón de nuestro servidor para el desarrollo de aplicaciones, la última versión del JDK.
*Nota: Dependiendo de los paquetes que hayas seleccionado al momento de realizar la instalación de tu sistema operativo, es posible que ya tengas el JDK instalado. Si este es el caso aún así te recomiendo que descargues e instales la última versión. Yo he instalado los paquetes mínimos, por lo que no tengo el JDK, y esto se reflejará en los screenshots que muestre.
Instalación de la última versión de Java (JDK 6) en Debian
En el momento de escribir este artículo, la última versión del JDK es la 6.25, por lo que será esa la que usaremos para nuestra instalación. Para revisar la última versión puedes hacerlo en este sitio:http://www.java.net/download/jdk6/
Nosotros descargaremos el archivo auto-extraible para Linux (el que tiene el ".bin" al final) usando el comando "wget"
wget http://www.java.net/download/jdk6/6u25/promoted/b01/binaries/jdk-6u25-ea-bin-b01-linux-i586-27_jan_2011.bin
Esperamos a que termine de realizar la descarga, y una vez todo listo procedemos con la instalación.
Creamos un usuario "java", el cual pertenecerá al grupo "desarrollo", con el comando "useradd":
useradd -g desarrollo java
Luego hacemos que este nuevo usuario sea el dueño del archivo que acabamos de descargar:
chown java:desarrollo jdk-6u25-ea-bin-b01-linux-i586-27_jan_2011.bin
Asignamos permisos para que el usuario, y los miembros del grupo "desarrollo" puedan ejecutar el archivo "jdk-6u25-ea-bin-b01-linux-i586-27_jan_2011.bin", usando el comando "chmod", de la siguiente forma:
chmod ug+x jdk-6u25-ea-bin-b01-linux-i586-27_jan_2011.bin
Ahora creamos el directorio "/usr/java", se lo asignamos al usuario "java", y movemos el archivo "jdk-6u25-ea-bin-b01-linux-i586-27_jan_2011.bin" a este directorio (y de paso acortaremos su nombre):
mkdir /usr/java
chown -R java:desarrollo /usr/java
mv jdk-6u25-ea-bin-b01-linux-i586-27_jan_2011.bin /usr/java/jdk-6u25.bin
Entramos como el usuario "java" y nos movemos al directorio "/usr/java":
su - java
cd /usr/java
Ahora ejecutamos el archivo ".bin" para iniciar la instalación:
./jdk-6u25.bin
Con lo que nuestro archivo comenzará a descomprimirse, hasta que nos muestre un mensaje indicando que la instalación se ha realizado correctamente, y que solo nos falta presionar "Enter":
Presionamos la tecla "Enter" y después de unos segundos se mostrará el mensaje "Done" y se nos volverá a mostrar la línea de comandos:
Terminamos la sesión del usuario "java" y regresamos a la que teníamos como root (para esto pueden presionar las teclas Ctrl + D)
Nuevamente como root creamos un enlace simbólico a al directorio "/usr/java/jdk1.6.0_25" al directorio "/usr/java/jdk", usando el comando "ln":
ln -s /usr/java/jdk1.6.0_25 /usr/java/jdk
Ahora si ejecutan los comandos "java" y "javac" verán aparecer en la consola un hermoso mensaje que dice:
bash: java: command not found
bash: javac: command not found
O si ya tenían instalado un jdk más antiguo, es posible que les muestre una salida diferente. Pero si usan la opción "-v", o "-version", verán que la versión que están llamando es la antigua, y no la que acabamos de instalar.
Esto se debe a que, aunque java ya se encuentra instalado en nuestro sistema, aún hace falta configurarlo para que funcione correctamente. En Debian existe un script de Perl llamado "update-alternatives" el cual nos permite seleccionar qué programa responderá por defecto de entre varias instaladas para el mismo propósito (en este caso "java" o "javac").
Lo primero que haremos es indicar que existen nuevas opciones para los programas "java" y "javac" usando la opción "--install", de la siguiente forma:
update-alternatives --install /usr/bin/javac javac /usr/java/jdk/bin/javac 100
update-alternatives --install /usr/bin/java java /usr/java/jdk/bin/java 100
Ahora que ya tenemos alternativas para estas aplicaciones podemos, si es que tenemos versiones antiguas instaladas, configurar cuál queremos usar usando la opción "--config":
update-alternatives --config java
y con
update-alternatives --config java
En mi caso esto no me servirá de nada porque solo tengo una opción. Pero, como dije antes, si ustedes tienen más pueden seleccionar aquí cuál quieren usar por defecto.
Ahora agregaremos un par variables de entorno y configuraremos nuestro PATH para que apunten al directorio "bin" de nuestro nuevo jdk. Abrimos el archivo "/etc/profile" con nuestro editor de texto favorito, y al final de este, antes de la línea que dice:
export PATH
Agregamos lo siguientes:
JAVA_HOME="/usr/java/jdk"
JRE_HOME=$JAVA_HOME
PATH=$PATH:$JAVA_HOME/bin
PATH=$PATH:$JRE_HOME/bin
y modificamos la línea que dice:
export PATH
Para que diga:
export PATH JAVA_HOME JRE_HOME
Guardamos el archivo y ejecutamos el siguiente comando, para que el sistema se dé cuenta del cambio:
source /etc/profile
y después pueden hacer:
echo $PATH
echo $JAVA_HOME
echo $JRE_HOME
para verificar que todo se configurado correctamente:
Ahora cuando ejecutemos los comandos:
java –version
javac –version
Obtendremos lo siguiente:
Por lo que nuestro jdk está listo para ser usado.
Ahora instalaremos nuestra base de datos.
Instalación de MySQL 5.5 en Debian
Instalaremos la última versión de MySQL, que en este momento es la 5.5.9. Lo haremos de la misma forma que hemos hecho con el jdk: descargaremos el código fuente de MySQL, lo compilaremos, instalaremos, y crearemos un usuario que será el dueño de esta aplicación.*Nota: La instalación de MySQL 5.5 varia un poco con respecto a la instalación de la versión anterior (5.1). Si por alguna razón no quieren instalar la versión 5.5 haré las anotaciones correspondientes sobre cómo instalar MySQL 5.1 en las partes donde el proceso de instalación varíe ^_^.
Lo primero que haremos es instalar una librería llamada "libncurses5", la cual es necesaria para compilar aplicaciones que hagan uso de ncurses, como MySQL (ñ_ñ). Solo como breviario cultural, "ncurses" son unas librerías que ayudan a la programación en modo texto para Linux. Es decir, movimientos de cursores, colores, recoger teclas (sin tener que esperar el "Enter") y un largo etcétera. Como MySQL hace uso de estas librerías, debemos instalarlas en nuestro sistema, haciendo uso de "apt-get", como root, de la siguiente forma:
apt-get install libncurses5-dev
Una vez que ejecutemos este comando, veremos cómo comienza a descargar, y posteriormente instalar las librerías:
Ahora descargaremos el código fuente de MySQL, usando nuevamente el comando "wget":
Para descargar MySQL 5.5 ejecuten:
wget http://gd.tuwien.ac.at/db/mysql/Downloads/MySQL-5.5/mysql-5.5.9.tar.gz
Y para MySQL 5.1:
wget http://downloads.mysql.com/archives/mysql-5.1/mysql-5.1.50.tar.gz
Si no realizaron la descarga en el directorio "/usr/src" deberán mover el archivo descargado al este directorio:
mv mysql-5.5.9.tar.gz /usr/src/
O para MySQL 5.1:
mv mysql-5.1.50.tar.gz /usr/src/
Nos cambiamos a al directorio "/usr/scr", y descomprimimos el archivo archivo.
tar -xvf mysql-5.5.9.tar.gz
o para MySQL 5.1:
tar -xzf mysql-5.1.50.tar.gz
Una vez descomprimido, entramos al directorio que se acaba de crear "mysql-5.5.9":
cd mysql-5.5.9
o "mysql-5.1.50" para MySQL 5.1:
cd mysql-5.1.50
Ahora configuraremos el código fuente para instalar la base de datos. Para entender un par de parámetros que usaremos debo dar una explicación sobre los conjuntos de caracteres que podemos usar en la base de datos y sobre el "collate" o colación de los mismos.
Un conjunto de caracteres es un conjunto de símbolos y codificaciones. Una colación es un conjunto de reglas para comparar caracteres en un conjunto de caracteres. Vamos a dejar clara la distinción con un ejemplo de un conjunto de caracteres imaginario.
Supongamos que tenemos un alfabeto con cuatro letras: 'A', 'B', 'a', 'b'. Damos a cada letra un número: 'A' = 0, 'B' = 1, 'a' = 2, 'b' = 3. La letra 'A' es un símbolo, el número 0 es la codificación para 'A', y la combinación de las cuatro letras y sus codificaciones es un conjunto de caracteres.
Suponga que queremos comparar dos cadenas de caracteres, 'A' y 'B'. La forma más fácil de hacerlo es mirar las codificaciones: 0 para 'A' y 1 para 'B'. Ya que 0 es menor a 1, decimos que 'A' es menor que 'B'. Lo que acabamos de hacer es aplicar una colación a un conjunto de caracteres. La colación es un conjunto de reglas (sólo una en este caso): "compara las codificaciones". Llamamos a la más sencilla de todas las colaciones una colación binaria.
Pero, ¿qué pasa si queremos decir que las letras en mayúsculas y minúsculas son equivalentes? Entonces tendríamos como mínimo dos reglas: (1) tratar las letras minúsuclas 'a' y 'b' como equivalentes a 'A' y 'B'; (2) luego comparar las codificaciones. Llamamos a esto una colación no sensible a mayúsuculas y minúsculas (case-insensitive). Es un poco más compleja que una colación binaria.
En el mundo real, la mayoría de conjuntos de caracteres tienen varios caracteres: no sólo 'A' y 'B' sino alfabetos completos, a veces varios alfabetos o sistemas de escritura orientales con miles de caracteres, junto con muchos símbolos especiales y signos de puntuación. También en el mundo real, la mayoría de colaciones tienen muchas reglas: no sólo distinción entre mayúsculas y minúsculas, sino también sensibilidad a tildes (una "tilde" es una marca añadida a un carácter como en alemán 'Ö') y mapeos de múltiples caracteres (tales como la regla que 'Ö' = 'OE' en una de las dos colaciones alemanas).
Después de haber leído esta teoría, podrían estarse preguntando, ¿qué nos importa esto para la instalación de nuestra base de datos? Pues en realidad podríamos decir que poco. Estableceremos cuál será el conjunto de caracteres y el collate que se usará por default en MySQL. Esto es para que nuestra base de datos acepte caracteres con acentos y la famosa "ñ", que muchos problemas nos han dado en alguna ocasión. Usaremos el conjunto de caracteres "utf-8" que es el conjunto de caracteres más amplio. Para el collate usaremos "utf8_spanish_ci". Esto quiere decir que las comparaciones que se hagan no distinguirán entre mayúsculas y minúsculas, o sea que "Alex" y "alex" serán exactamente iguales. Hay una convención para nombres de colaciones: empiezan con el nombre del conjunto de caracteres al que están asociados, normalmente incluyen el nombre del idioma, y acaban con "_ci" (no distingue entre mayúsculas y minúsculas, case insensitive), "_cs" (distingue entre mayúsculas y minúsculas, case sentitive), o "_bin" (binario).
Ahora sí, pasaremos a configurar el código fuente para su instalación, con la siguiente línea:
*Nota: MySQL 5.5 está configurado para usar el sistema de construcción cmake, además de usar las librerías de bison, mientras que MySQL 5.1 está configurado para usar el make "regular", así que los que estamos instalando MySQL 5.5 primero deberemos instalar "cmake" usando el siguiente comando:
apt-get install bison
apt-get install cmake
Y configurar el código fuente usando:
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.5.9 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=collation=utf8_spanish_ci -DWITH_INNOBASE_STORAGE_ENGINE=1
Los que estén instalando MySQL 5.1 pueden configurar el código fuente usando el comando siguiente:
./configure --prefix=/usr/local/mysql-5.1.50 --with-charset=utf8 --with-collation=utf8_spanish_ci --with-innodb
Con lo que la configuración comenzará a ejecutarse. Si quieren qué otras opciones podemos establecer en la configuración pueden hacerlo en la página de la configuración de MysQL 5.1
Una vez terminado este proceso, deberemos ver en la consola un mensaje que diga "Thank you for choosing MySQL!"
Los que estamos instalando MySQL 5.5 no veremos el mensaje anterior :(.
Ahora continuaremos con el proceso para ambas versiones. Compilaremos el código de MySQL ejecutando el comando "make", en el directorio en el que nos encontramos:
make
En la consola podemos ver todo el proceso que se está ejecutando. Después de unos (muchos, créanme, bastantes) minutos, al terminarse este proceso, veremos nuevamente la línea de comandos.
Finalmente, realizamos la instalación ejecutando el comando:
make install clean
Nuevamente tardara unos minutos realizando algunas tareas y al final nos devolverá a la línea de comandos. Y listo, ya tendremos nuestro servidor instalado. Si vamos al directorio "/usr/local" veremos que se nos ha creado un directorio nuevo llamado "mysql-5.5.9", o "mysql-5.1.50" para los que instalaron la versión 5.1:
Ahora, si ejecutamos el comando "mysql", veremos aparecer en la consola el siguiente mensaje:
bash: mysql: command not found
Esto quiere decir que aún nos faltan cosas por configurar.
Primero crearemos un enlace simbólico del directorio "/usr/local/mysql-5.5.9" a "/usr/local/mysql":
ln -s /usr/local/mysql-5.5.9 /usr/local/mysql
O de "/usr/local/mysql-5.1.59", para los que instalaron la versión 5.1:
ln -s /usr/local/mysql-5.1.50 /usr/local/mysql
Ahora procedemos a crear un usuario "mysql", que pertenecerá a los grupos "desarrollo", y "basesDeDatos".
Creamos al usuario "mysql" con el comando "useradd":
useradd –g basesDeDatos –G desarrollo mysql
Dependiendo de su versión y distribución de Linux, tal vez no puedan agregar al usuario a los dos grupos al mismo tiempo, en este caso deberán agregarlo al grupo "basesDeDatos" al momento de crearlo, y después a "desarrollo" usando el comando "usermod", de la siguiente forma:
usermod -a -G desarrollo mysql
O modificando directamente el archivo "/etc/group".
Asignamos este directorio al usuario "mysql":
chown -R mysql:basesDeDatos /usr/local/mysql
Y damos permisos de que el dueño del directorio tenga permisos completos, los usuarios del mismo grupo puedan leer y ejecutar, y los otros usuarios no puedan hacer nada:
chmod -R 750 /usr/local/mysql
Hacemos lo mismo para el directorio "mysql-5.5.9"
chown -R mysql:basesDeDatos /usr/local/mysql-5.5.9
chmod -R 750 /usr/local/mysql-5.5.9
O para el directorio "mysql-5.1.50", dependiendo de la versión que hayamos instalado:
chown -R mysql:basesDeDatos /usr/local/mysql-5.1.50
chmod -R 750 /usr/local/mysql-5.1.50
Ahora regresamos al directorio "/usr/src/mysql-5.5.9" y entramos al subdirectorio "support-files":
cd /usr/src/mysql-5.5.9/support-files
o, para MySQL 5.1 a "/usr/src/mysql-5.1.50":
cd /usr/src/mysql-5.1.50/support-files
Este es un directorio especial con algunos archivos de configuración y otras cosas. Nosotros tomaremos el archivo de configuración más simple ("my-small.cnf") y lo usaremos para terminar de configurar nuestro servidor de base de datos. Movemos este archivo al directorio "/etc" y lo renombramos como "my.cnf"
cp my-small.cnf /etc/my.cnf
Después editamos este archivo usando nuestro editor de texto favorito (yo usare nano, no es mi favorito pero creo que es el más fácil de usar):
nano /etc/my.cfg
Buscamos la línea que dice:
#The MySQL server
[mysqld]
Y agregamos la línea:
user = mysql
Agregamos también las siguientes variables que nos proporcionarán un log de errores y un log general de queries:
general-log=/var/log/mysql.log
log-error=/var/log/mysql_error.log
Guardamos el archivo y agregamos a nuestra variable de entorno "PATH" la ruta del directorio "bin" de MySQL. Recuerden que para esto debemos editar el archivo "/etc/profile":
PATH=$PATH:/usr/local/mysql/bin
Guardamos el archivo y ejecutamos el comando
source /etc/profile
Ahora terminaremos la configuración creando la base de datos que usa MySQL para guardar su configuración. Entre otras cosas, se inicializará el directorio de datos y creará las tablas del sistema. Es importante ejecutar este comando con el mismo usuario que será usado para levantar el servicio de mysql (mysqld). Nos logueamos como el usuario "mysql", nos movemos al directorio "/usr/local/mysql":
cd /usr/local/mysql
y ejecutamos el siguiente comando, para MySQL 5.5 usamos:
/usr/local/mysql/scripts/mysql_install_db --user=mysql
Y para MySQL 5.1:
/usr/local/mysql/bin/mysql_install_db --user=mysql
Después iniciamos el servicio de MySQL de modo seguro con el siguiente comando:
/usr/local/mysql/bin/mysqld_safe --user=mysql &
Entraremos ahora a hacer unas configuraciones de usuarios. Entraremos a mysql usando la cuenta de "root". En este momento aunque la cuenta existe esta no está protegida con ninguna contraseña (cosa que arreglaremos en unos momentos). Accedemos a mysql con la siguiente instrucción:
/usr/local/mysql/bin/mysql -u root
Ahora, si no queremos permitir acceso a usuarios anónimos, los eliminamos con la siguiente sentencia:
DELETE FROM mysql.user WHERE User = '';
Si consultamos los usuarios que tenemos ahora, que tienen acceso a nuestro servidor de base de datos, ahora solo debemos tener al usuario "root":
SELECT Host, User FROM mysql.user;
En la imagen anterior "miniServer" es el nombre del servidor que estoy configurando, así que seguramente a ustedes les aparecerá un nombre distinto.
Pasemos a proteger la cuenta del usuario "root" con una contraseña, usando los siguientes comandos:
SET PASSWORD FOR 'root'@'localhost'=OLD_PASSWORD('contraseña');
SET PASSWORD FOR 'root'@'localhost'=PASSWORD('contraseña');
La función "OLD_PASSWORD" deja la contraseña con un formato tal que nos permitirá conectarnos a esta usando algunas herramientas antiguas como el "DBDesigner" o algunos módulos del mismo Apache.
*Nota: en MySQL 5.5 tal vez sea necesario que reinicien el servidor para que estos cambios tomen efecto.
Ahora salimos del manejador de base de datos:
quit
Detenemos el servicio de MySQL con el siguiente comando, que nos pedirá la contraseña de "root" que acabamos de configurar:
/usr/local/mysql/bin/mysqladmin -u root -p shutdown
El siguiente paso será hacer que MySQL se inicie o levante de forma automática al iniciar nuestro servidor. Para esto copiaremos un script que se encuentra en el directorio "/usr/src/mysql-5.5.9" o "/usr/src/mysql-5.1.50", llamado "mysql.server". Este script básicamente nos permitirá iniciar y detener el servicio de MySQL. Copiamos, como root, este archivo al directorio "/etc/init.d/" y le damos permisos de ejecución:
cp /usr/src/mysql-5.5.9/support-files/mysql.server /etc/init.d/mysql
chmod 755 /etc/init.d/mysql
o, si estamos instalando MySQL 5.1:
cp /usr/src/mysql-5.1.50/support-files/mysql.server /etc/init.d/mysql
chmod 755 /etc/init.d/mysql
Ahora haremos que nuestro servidor inicie el servicio de MySQL de forma automática registrándolo como un servicio de nuestro servidor. Primero lo eliminaremos como servicio (si es que ya existe) y después lo agregaremos nuevamente, con los siguientes comandos:
update-rc.d -f mysql remove
update-rc.d -f mysql defaults
Los dos comandos anteriores son usados en Debian y las distribuciones basadas en este, si están usando otra distribución tal vez deban usar estos comandos:
chkconfig --add mysql
chkconfig --level 35 mysql on
Ahora que ya tenemos todo listo podemos, si es que lo desean, reiniciar el servidor y entrar nuevamente a mysql, como root, con el comando:
mysql –u root –p
*Nota: tal vez sea necesario que reinicien el servidor en este paso si es que no les permite conectarse a mysql
Ahora pasaremos a instalar el servidor HTTP Apache 2.
Instalación de Apache Http Server 2.2 en Debian
Instalaremos la última versión del servidor Apache (en este momento la 2.2.17). Lo primero que hacemos es descargar el código fuente de Apache 2.2 con el comando "wget" (recuerden descargar este archivo en el directorio "/usr/src"):
wget http://apache.mirrors.hoobly.com//httpd/httpd-2.2.17.tar.gz
Para los que no lo descargaron en el directorio indicado, aún pueden corregir esto y una vez que la descarga termine mover el archivo que acabamos de mover al directorio "/usr/src"
mv httpd-2.2.17.tar.gz /usr/src/
Nos cambiamos a este directorio:
cd /usr/src
Descomprimimos el archivo "httpd-2.2.17.tar.gz"
tar -xzf httpd-2.2.17.tar.gz
Y entramos al directorio que se acaba de crear:
cd httpd-2.2.17
Nuevamente configuraremos el código fuente para poder instalar el servidor web. Usaremos el comando "configure", de la siguiente forma.
./configure --prefix=/usr/local/apache-2.2.17 --enable-so --enable-rewrite --enable-dav=shared --enable-dav-fs=shared --enable-authn-dbd=shared --enable-dbd=shared --with-mysql=/usr/src/mysql-5.5.9
*Nota: si están usando la versión 5.1 de MySQL tengan cuidado de modificar la ultima parte del comando
La opción más importante es "prefix" que nos indica en qué directorio será instalado el servidor Apache. "enable-so" habilita el soporte de DSO (Dynamic Shared Object), o sea que los módulos que compilemos como objetos compartidos podrán ser cargados y descargados en tiempo de ejecución (tal vez explique más de esto en un tutorial posterior). Las úlimas dos opciones nos servirán para cuando queramos agregar servicios extra como el subversion, del que hablaré en un próximo tutorial. Si desean ver qué otras opciones pueden usar, pueden verlas en la página de configuración de Apache.
Una vez terminado el proceso de configuración, compilamos el código fuente ejecutando el comando "make" en el directorio en el que nos encontramos:
make
Cuando este proceso termine nos mostrará la línea de comandos, y podremos realizar la instalación con el siguiente comando:
make install clean
Al terminar ya tendremos listo nuestro servidor Apache. Solo realizaremos unos pequeños pasos de configuración.
Creamos un nuevo usuario llamado "apache2", que pertenecerá a los grupos "desarrollo" y "servidores". Creamos al usuario "apache2" con el comando "useradd":
useradd -g servidores -G desarrollo apache2
Dependiendo de su versión y distribución de Linux, tal vez no puedan agregar al usuario a los dos grupos al mismo tiempo, en este caso deberán agregarlo al grupo "servidores" al momento de crearlo, y después a "desarrollo" usando el comando "usermod", de la siguiente forma:
usermod -a -G desarrollo apache2
O modificando directamente el archivo "/etc/group".
Creamos un enlace simbólico del directorio "/usr/local/apache-2.2.17" a "/usr/local/apache2":
ln -s /usr/local/apache-2.2.17 /usr/local/apache2
Asignamos el directorio "/usr/local/apache-2.2.17" al usuario "apache2" y damos al dueño permisos completos, a los usuarios del mismo grupo permisos de lectura y ejecución, y que los otros usuarios no puedan hacer nada:
chown -R apache2:servidores /usr/local/apache-2.2.17
chmod -R 750 /usr/local/apache-2.2.17/
Y hacemos lo mismo para el directorio "/usr/local/apache2":
chown -R apache2:servidores /usr/local/apache2
chmod -R 750 /usr/local/apache2/
Ahora entramos editamos el archivo "/usr/local/apache2/conf/httpd.conf". Buscamos el lugar en el que se declara el modulo "mpm_netware" o "mpm_netware.c" y reemplazamos:
User daemon
Group daemon
Por :
User apache2
Group servidores
Probemos que nuestro servidor funciona correctamente iniciando el servicio, con el siguiente comando:
/usr/local/apache2/bin/apachectl start
Abrimos un navegador y colocamos en la barra de direcciones la IP de nuestro servidor, que en mi caso es: 5.114.168.188:
http://5.114.168.188
Y deberemos ver en nuestro navegador el mensaje "It works!"
*Nota: Si por alguna razón no logran ver esta página de inicio revisen su firewall para ver que su servidor acepte peticiones por el puerto 80.
Aquí les recomiendo que hagan una cosa (a elección del cliente). Para no estar recordando la ip de nuestro servidor, pueden modificar el archivo hosts de su computadora y agregar una entrada para la ip de su servidor, y un nombre que les sea fácil recordar. Este archivo se encuentra en distintas ubicaciones dependiendo de su sistema operativo, en Windows está en "C:\Windows\System32\drivers\etc".
Yo agregaré un mapeo entre la ip de mi servidor y el nombre de miniServer, de esta forma:
5.114.168.188 miniServer
Y ahora podré entrar ingresando a la dirección:
http://miniserver/
Regresemos a nuestro servidor. Ahora realizaremos la configuración para que nuestro servidor Apache inicie de forma automática cada vez que nuestro servidor de desarrollo se levante. Lo primero que haremos es crear una liga simbólica del archivo "/usr/local/apache2/bin/apachectl" a "/etc/init.d/apache2":
ln -s /usr/local/apache2/bin/apachectl /etc/init.d/apache2
Ahora registraremos a nuestro servidor Apache como un servicio. Nuevamente, primero lo eliminamos (si es que ya existe) y luego lo agregamos nuevamente con los siguientes comandos:
update-rc.d -f apache2 remove
update-rc.d -f apache2 defaults
Si están usando una distribución distinta a Debian, tal vez deban usar estos comandos:
chkconfig --add apachectl
chkconfig --level 35 apachectl on
Y ya ha quedado todo configurado. Si lo desean pueden reiniciar su servidor para comprobar que todo funciona correctamente.
Para terminar este post veremos cómo instalar el contenedor de servlets Apache Tomcat en su versión más reciente, 7.
Instalación de Apache Tomcat 7 en Debian
Instalaremos la última versión del contenedor de Servlets y JSPs Apache Tomcat (que en este momento es la 7.0.8). Esta instalación será la más simple de todas, ya que no deberemos compilar el código fuente, sino solamente descomprimir un archivo y realizar una configuración mínima.Descargamos Tomcat usando el comando "wget" (recuerden descargarla en el directorio "/usr/src"):
cd /usr/src
wget http://download.filehat.com/apache/tomcat/tomcat-7/v7.0.8/bin/apache-tomcat-7.0.8.tar.gz
Una vez terminada la descarga descomprimimos el archivo tar que acabamos de bajar:
tar -xzf apache-tomcat-7.0.8.tar.gz
Copiamos el directorio que se acaba de crear, "apache-tomcat-7.0.8", al subdirectorio "/usr/local":
cp -R apache-tomcat-7.0.8 /usr/local/
Creamos un enlace simbólico del directorio "/usr/local/apache-tomcat-7.0.8" a "/usr/local/tomcat":
ln -s /usr/local/apache-tomcat-7.0.8 /usr/local/tomcat
Creamos un nuevo usuario llamado "tomcat", que pertenecerá a los grupos "desarrollo" y "servidores", usando el comando "useradd":
useradd -g servidores -G desarrollo tomcat
Dependiendo de su versión y distribución de Linux, tal vez no puedan agregar al usuario a los dos grupos al mismo tiempo, en este caso deberán agregarlo al grupo "servidores" al momento de crearlo, y después a "desarrollo" usando el comando "usermod", de la siguiente forma:
usermod -a -G desarrollo tomcat
O modificando directamente el archivo "/etc/group".
Asignamos el directorio "/usr/local/apache-tomcat-7.0.8" al usuario "tomcat" y damos al dueño permisos completos, a los usuarios del mismo grupo permisos de lectura y ejecución, y que los otros usuarios no puedan hacer nada:
chown -R tomcat:servidores /usr/local/apache-tomcat-7.0.8
chmod -R 750 /usr/local/apache-tomcat-7.0.8/
Y hacemos lo mismo para el directorio "/usr/local/tomcat":
chown -R tomcat:servidores /usr/local/tomcat
chmod -R 750 /usr/local/tomcat/
Ahora agregaremos un usuario que será el administrador del servidor Tomcat. Para editamos el archivo "/usr/local/tomcat/conf/tomcat-users.xml". Dentro del elemento "<tomcat-users>" agregamos la siguiente línea:
<user password="su-contraseña" roles="manager-script,admin,manager-gui,admin-gui" username="su-usuario"/>
Por lo que el archivo debe quedar de esta forma:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<user password="su-contraseña" roles="manager-script,admin,manager-gui,admin-gui" username="su-usuario"/>
</tomcat-users>
Guardamos el archivo y ahora probemos que nuestro servidor funciona correctamente iniciándolo con el siguiente comando:
/usr/local/tomcat/bin/startup.sh
Abrimos un navegador y colocamos en la barra de direcciones la IP de nuestro servidor, pero ahora entrando por el puerto 8080, en mi caso será:
http://miniServer:8080
Si todo funciona bien deberán ver la página principal de Tomcat:
*Nota: Si por alguna razón no logran ver esta página de inicio revisen su firewall para ver que su servidor acepte peticiones por el puerto 8080.
Realicemos la configuración para que nuestro servidor Tomcat inicie de forma automática cada vez que nuestro servidor de desarrollo se levante. Lo primero que haremos es crear un enlace simbólico del archivo "/usr/local/tomcat/bin/startup.sh" a "/etc/init.d/tomcat".
ln -s /usr/local/tomcat/bin/startup.sh /etc/init.d/tomcat
Ahora registraramos nuestro servidor Tomcat como un servicio. Una vez más primero lo eliminaremos, si es que existe, y luego lo agregaremos nuevamente:
update-rc.d -f tomcat remove
update-rc.d -f tomcat defaults
Si están usando una distribución distinta a Debian tal vez deban usar estos comandos:
chkconfig --add tomcat
chkconfig --level 35 tomcat
Y listo, con esto termina la configuración del Tomcat. Si lo desean pueden reiniciar su servidor para ver que todo funciona correctamente.
Como una nota adicional: pueden iniciar estos tres servicios que hemos instalado usando los siguientes comandos:
service mysql start
service apache2 start
service tomcat start
Y detenerlos con los siguientes comandos:
service mysql stop
service apache2 stop
service tomcat stop
Pues es todo en este post, en el que instalamos los que serán 4 de los servicios básicos de nuestro servidor de desarrollo (JDK6, MySQL 5.5, Apache 2.2, y Tomcat 7). En los siguientes tutoriales vernos cómo configurar algunos otros servicios más, y cómo hacer una integración entre algunos de estos servicios, y con nuestro IDE de trabajo.
No olviden dejar sus dudas, comentarios, sugerencias, críticas y mejoras.
Saludos.
Entradas Relacionadas: