Curso de instalación ng Cedr de Linux como servidor ic ... · En este curso vamos a ver como...

24
Curso de instalación de Linux como servidor web Apache HTTPD con Tomcat, PHP, MySQL, PostGreSQL, y Subversion Manual del alumno ©Copyright Cédric Simon, 2008-2012 Versión 1.2 Reproducción prohibida Ing. Cedric Simon – Tel: 2268 0974 – Cel: 8888 2387 – Email: c e d r i c @ s o l u c i o n j a v a . c o m – Web: www.solucionjava.com SolucionJava.com

Transcript of Curso de instalación ng Cedr de Linux como servidor ic ... · En este curso vamos a ver como...

Curso de instalación de Linux como servidor

web Apache HTTPD con Tomcat, PHP,

MySQL, PostGreSQL, y Subversion

Manual del alumno

©Copyright Cédric Simon, 2008-2012 Versión 1.2 Reproducción prohibida

Ing. Cedric S

imon

– Tel: 2268

0974 –

Cel: 8888

2387 – Em

ail: ce

dric

@s

olu

cio

nja

va

.co

m – W

eb: ww

w.so

lucionjava.com

So

luc

ion

Ja

va

.co

m

Curso de instalación de Linux como servidor web Apache HTTPD con Tomcat, PHP, y MySQL Pagina 2 / 24

Índice1 Introducción al curso.....................................................................................................................................................................5

1.1Objetivo de este curso.............................................................................................................................................................5

1.2Manual del alumno.................................................................................................................................................................5

1.3Ejercicios prácticos.................................................................................................................................................................5

1.4Requisitos para atender a este curso.....................................................................................................................................5

1.5Soporte después del curso.......................................................................................................................................................5

2INSTALACIÓN DEL SERVIDOR Linux......................................................................................................................................6

2.1Planificación............................................................................................................................................................................62.1.1Distribuciones de Linux....................................................................................................................................................62.1.2Requisitos materiales.........................................................................................................................................................62.1.3Sistemas de archivos.........................................................................................................................................................6

2.1.3.1XFS: ..........................................................................................................................................................................62.1.3.2EXT3: .......................................................................................................................................................................62.1.3.3EXT4: .......................................................................................................................................................................62.1.3.4ReiserFS: ..................................................................................................................................................................62.1.3.5Swap:.........................................................................................................................................................................6

2.1.4Determinar las cuentas apropiadas para el servidor..........................................................................................................7

2.2Instalación................................................................................................................................................................................72.2.1Arranque............................................................................................................................................................................72.2.2Bienvenido........................................................................................................................................................................72.2.3Modo de instalación..........................................................................................................................................................72.2.4Reloj y zona horaria..........................................................................................................................................................72.2.5Selección de escritorio......................................................................................................................................................72.2.6Particionamiento................................................................................................................................................................72.2.7Nuevo usuario...................................................................................................................................................................82.2.8Configuración de la instalación.........................................................................................................................................82.2.9Refrescos...........................................................................................................................................................................8

2.3Seguridad.................................................................................................................................................................................82.3.1Cuentas de usuario............................................................................................................................................................82.3.2El comando sudo...............................................................................................................................................................82.3.3Acceso remoto...................................................................................................................................................................92.3.4Servicios activos................................................................................................................................................................92.3.5Corta fuego........................................................................................................................................................................9

3El servicio Apache Httpd...............................................................................................................................................................10

3.1Instalación..............................................................................................................................................................................10

3.2Configuración........................................................................................................................................................................103.2.1Inicio automatico.............................................................................................................................................................103.2.2Inicio/reinicio/paro manual.............................................................................................................................................103.2.3Archivos de configuración..............................................................................................................................................103.2.4Configuración con YAST................................................................................................................................................10

3.2.4.1Paso 1/5: Dispositivo de red....................................................................................................................................103.2.4.2Paso 2/5: módulos....................................................................................................................................................103.2.4.3Paso 3/5: equipo predeterminado............................................................................................................................113.2.4.4Paso 4/5: equipos virtuales......................................................................................................................................113.2.4.5Paso 5/5: resumen....................................................................................................................................................11

3.3Prueba del servicio................................................................................................................................................................11

4Servidor PHP.................................................................................................................................................................................12

4.1Instalación..............................................................................................................................................................................12

©Copyright Cédric Simon, 2008-2012 Versión 1.2 Reproducción prohibida

Curso de instalación de Linux como servidor web Apache HTTPD con Tomcat, PHP, y MySQL Pagina 3 / 24

4.2Configuración........................................................................................................................................................................12

4.3Prueba del servicio................................................................................................................................................................12

5Servidor Apache Tomcat...............................................................................................................................................................13

5.1Instalación..............................................................................................................................................................................135.1.1Si la version deseada no esta en el repositorio................................................................................................................13

5.2Configuración........................................................................................................................................................................145.2.1Inicio automático.............................................................................................................................................................145.2.2Inicio/reinicio/paro manual.............................................................................................................................................145.2.3Archivos de configuración..............................................................................................................................................14

5.2.3.1Conectores...............................................................................................................................................................145.2.3.2Sitios web (hosts)....................................................................................................................................................145.2.3.3Contextos.................................................................................................................................................................14

5.2.4Carpeta ROOT.................................................................................................................................................................155.2.5Configuración con YAST................................................................................................................................................15

5.3Prueba del servicio................................................................................................................................................................15

5.4Puesto al día de sitios web....................................................................................................................................................16

5.5Tomcat detrás de Apache.....................................................................................................................................................165.5.1En httpd.conf o uno de sus archivos incluidos................................................................................................................165.5.2A nivel de los 'equipos' de Apache2................................................................................................................................165.5.3Nuevo archivo workers.properties..................................................................................................................................16

6Hospedar varios sitios en un mismo servidor web........................................................................................................................18

6.1Introducción..........................................................................................................................................................................18

6.2Configuración del servidor...................................................................................................................................................18

6.3Configuración de Apache.....................................................................................................................................................18

7Cifrar con SSL y uso de HTTPS...................................................................................................................................................19

7.1Porque cifrar.........................................................................................................................................................................19

7.2Archivo .conf del virtual host...............................................................................................................................................19

8Servidor MySQL............................................................................................................................................................................20

8.1Instalación..............................................................................................................................................................................20

8.2Configuración........................................................................................................................................................................208.2.1Inicio automatico.............................................................................................................................................................208.2.2Inicio/reinicio/paro manual.............................................................................................................................................208.2.3Clave de root...................................................................................................................................................................20

9Servidor PostGreSQL....................................................................................................................................................................21

9.1Instalación..............................................................................................................................................................................21

9.2Crear una base de datos.......................................................................................................................................................21

9.3Conectar a una base de datos...............................................................................................................................................21

9.4Crear un usuario...................................................................................................................................................................21

10Mantenimiento del servidor Linux..............................................................................................................................................22

10.1Disco.....................................................................................................................................................................................22

10.2Logs......................................................................................................................................................................................22

10.3Puesto al día de paquetes....................................................................................................................................................22

10.4Prueba de seguridad...........................................................................................................................................................22

11Servidor Subversion.....................................................................................................................................................................23

11.1¿Qué es subversion?............................................................................................................................................................23

11.2Instalación y configuración de Subversion ......................................................................................................................23

©Copyright Cédric Simon, 2008-2012 Versión 1.2 Reproducción prohibida

Curso de instalación de Linux como servidor web Apache HTTPD con Tomcat, PHP, y MySQL Pagina 4 / 24

11.3Creación de grupos y usuarios permitidos.......................................................................................................................23

11.4Creación de un repositorio.................................................................................................................................................23

11.5Configurando Apache para los repositorios.....................................................................................................................24

11.6Añadir usuarios a nuestros repositorios:..........................................................................................................................24

©Copyright Cédric Simon, 2008-2012 Versión 1.2 Reproducción prohibida

Curso de instalación de Linux como servidor web Apache HTTPD con Tomcat, PHP, y MySQL Pagina 5 / 24

1 Introducción al curso

1.1 Objetivo de este curso En este curso vamos a ver como instalar un servidor Linux para hospedar un servidor web con capacidad de JSP y una base de datos MySQL.

Este curso no cubre todos los aspectos ni todas las opciones de Linux, enfocando en las más útiles para un servidor web.

1.2 Manual del alumno Este manual del alumno es una ayuda para el alumno, para tenga un recuerdo del curso. Este manual contiene un resumen de las materias que se van a estudiar durante el curso, pero el alumno debería de tomar notas personales para completas este manual.

Cunado necesitan información sobre el manejo de Linux en general, los comandos y sus usos, existen muchas fuentes disponibles en Internet. Les aconsejo especialmente consultar el documento 'Implementación De Servidores Con GNU/Linux' de Joel Barrios Dueñas disponible en http://www.alcancelibre.org/ y el en DVD del curso.

1.3 Ejercicios prácticos Se instalará un servidor Linux con servicios de HTTPD y Tomcat durante el curso.

1.4 Requisitos para atender a este curso Se requiere un conocimiento de base de los sistemas operativos.

Si el alumno tiene dificultades en un u otro capitulo, el debe sentirse libre de pedir explicaciones adicionales al profesor.

1.5 Soporte después del curso Si tienes preguntas sobre la materia del curso en tus ejercicios prácticos, puedes escribir tus preguntas a [email protected].

Para informaciones sobre otros cursos, visita el sitio web www.solucionjava.com.

©Copyright Cédric Simon, 2008-2012 Versión 1.2 Reproducción prohibida

Curso de instalación de Linux como servidor web Apache HTTPD con Tomcat, PHP, y MySQL Pagina 6 / 24

2 Instalación del servidor linux

2.1 Planificación La planificación permite escoger las opciones correctas al momento de correr el instalador de la base de datos.

2.1.1 Distribuciones de Linux Existen varias distribuciones de Linux. Entre las más conocidas, RedHat/Fedora, SuSe/openSuSe,Debian, Ubuntu, Mandrake...

Todas las versiones de Linux hacen prácticamente las mismas cosas. Solo que algunas tienen ciertas herramientas y otras no, ciertas llevan por defecto mas o diferente paquetes que otras, etc..

No hay una distribución que sea 'mejor' que otras. Algunas tienen una meta más a servidor (Fedora, Debian), y otras más hacía escritorio (Ubuntu), pero al final todas se pueden usar tanto como servidor así como escritorio. Al final la diferencia entre los dos deprenderá de los paquetes que se instalarán, y del uso que se hará del PC instalado con Linux.

2.1.2 Requisitos materiales Los requisitos materiales dependen de la versión y distribución de Linux que quieres instalar, pero por lo general un PC, mismo un poco viejo, debería ser capaz de correr Linux. Depende siempre de para que va a servir el PC. Solo como un cortafuego, o un servidor web para centenas de usuarios concurrentes?

Debido a que Linux es gratis, se puede fácilmente distribuir la carga sobre varios servidores en caso que sea necesario, ya que no tendrá costo de licencia ;-).

2.1.3 Sistemas de archivos Bajo Linux existen varios tipos de sistemas de archivos. Al formatear una partición de un disco, hay que escoger un tipo de sistema de archivos. Siguen los sistemas más comunes:

2.1.3.1 XFS: Principalmente este fue creado para el sistema operativo de SGI, IRIX. Ahora esta disponible bajo la licencia GPL, para Linux. Este file system es muy bueno con archivos grandes asi que si trabajas con archivos pequeños, continua leyendo. Si manejas archivos "medianamente" pequeños, no se recomienda que uses XFS, sino ReiserFS, que para estos archivos es rápido, en cambio si usas archivos a los cuales los podes denominar como grandes, muy grandes, excesivamente grandes, en este caso si se recomienda usar XFS.

2.1.3.2 EXT3: Ext3 es mucho más seguro que ext2. Si estas usando ext2 y queres cambiarte a otro sistema de archivos journaling, se recomienda que el primero sea Ext3, porque hay menos riesgos de perder los datos e información; y es compatible con ext2.

2.1.3.3 EXT4: Ext3 es una versión mejorada de Ext3, que permite mejores performancias a nivel de lecturas y escrituras.

2.1.3.4 ReiserFS: Este fue el "primero en estar estable para Linux". Posee una estructura de datos b-trees, es rápido con archivos pequeños, todo lo contrario de XFS.

2.1.3.5 Swap: El sistema de archivo swap es un tipo de sistema que se usa únicamente para la 'partición de intercambio', que es como la memoria virtual (en disco). Por lo general se recomiendo tener una partición de intercambio de un tamaño igual a 1.5 x la memoria RAM del PC.

©Copyright Cédric Simon, 2008-2012 Versión 1.2 Reproducción prohibida

Curso de instalación de Linux como servidor web Apache HTTPD con Tomcat, PHP, y MySQL Pagina 7 / 24

2.1.4 Determinar las cuentas apropiadas para el servidor Bajo Linux, al contrario de Windows, solo existe UNA cuenta de administrador 'todopoderoso'. El se llama 'root', y existe en cualquier sistema Linux. Con este usuario, puedes hacer todo en el PC, por eso bajo Linux por lo general no se trabaja como 'root', si no que al momento que se necesita el derecho de 'root' se cmabia temporalmente a este usuario. Eso para limitar las posibilidades de errores de manipulación que podrían dañar el sistema.

En este sentido (también) Linux es más seguro que Windows, ya que trabajando con un usuario (menos root), no se puede dañar seriamente el sistema (virus).

2.2 Instalación Vamos a instalar la versión 11.0 de openSuse Linux. Porque openSuse y no un otro, pues no porque es mejor que otra, pero simplemente por el profe (yo) lo conozco mejor por haberlo utilizado de hace 5 años !

OpenSuSe viene en un DVD (versión completa con muchos paquetes), o en CD con KDE o Gnome (versión con menos paquetes incluidos).

2.2.1 Arranque Hay que arrancar con el CD/DVD. Para eso, configura el BIOS debidamente, o empuja la tecla (F11, F12...) que permite escoger el medio de arranque.

Una vez arrancando en el CD/DVD y que apareció el menú, empujamos F2 para cambiar el idioma a Español, eventualmente F3 para cambiar la resolución de pantalla. Luego escogemos 'Instalación' en el menú y presionamos 'Enter' para iniciar la instalación.

2.2.2 Bienvenido Se verifica el idioma y la configuración del teclado, se marca la casilla de aceptar la licencia, y se empuja el botón 'Siguiente'.

2.2.3 Modo de instalación Se selecciona 'Instalación nueva', y se marca solamente la casilla para la configuración automática. Luego se empuja el botón 'Siguiente'.

2.2.4 Reloj y zona horaria Se selecciona la región y el país, se verifica la hora, y se empuja el botón 'Siguiente'.

2.2.5 Selección de escritorio Pueden escoger su escritorio preferido. Personalmente uso el KDE 3.5, ya que probé el KDE 4.0 y me parecía muy inestable.

2.2.6 Particionamiento Aquí se va a particionar el disco duro.

Si ya existe una versión de Windows (u otro sistema operativo) instalado, el va a proponer (según las posibilidades) de redimencionar las particiones existentes para crear espacio para Linux.

Por defecto, el propone 3 particiones nuevas: – una para el intercambio (swap)– una para la raíz de Linux (/)– una para la carpeta /home

Personalmente, yo edito la propuesta de openSuse, borro la /home y ocupo el espacio liberado para la raíz (/).

Si se menciona algún problema con la partición de Windows, hay que reiniciar en Windows y correr la herramienta de verificación de disco de Windows sobre el disco antes de intentar de nuevo de instalar Linux.

©Copyright Cédric Simon, 2008-2012 Versión 1.2 Reproducción prohibida

Curso de instalación de Linux como servidor web Apache HTTPD con Tomcat, PHP, y MySQL Pagina 8 / 24

2.2.7 Nuevo usuario Vamos a crear un usuario nuevo. Lo vamos a llamar alumno, y darle la clave '123'. Eso porque solo hacemos una prueba y queremos dejar las cosas sencillas ya que no nos preocupa la seguridad de este sistema de prueba que no usará después del curso.

Por supuesto, para una instalación 'definitiva', para su escritorio o su servidor, escoge una clave que sea segura (mas de 5 caracteres, con número, mayúsculas y minúsculas...).

Para el curso, vamos a dejar que se utiliza la misma contraseña para el administrador (root). En producción o ambiente con seguridad, les aconsejo de tener claves diferentes para root y los otros usuarios.

Es buena idea marcar la casilla para que el usuario reciba el correo del sistema.

Para el curso vamos también a dejar el inicio de sesión automático. No lo aconsejo en producción.

Empujamos el botón 'Siguiente' y contestamos que 'Si' a las alertas de seguridad (porque estamos en el curso, no en producción).

2.2.8 Configuración de la instalación Aquí se pueden eventualmente agregar/borrar paquetes que se van a instalar.

Se revisa el resumen de instalación y se empuja el botón 'Instalar'. Si sale una ventana de alerta, se confirma la instalación empujando el botón 'Instalar'.

2.2.9 Refrescos Se toma un refresco mientra se instala Linux...

Al terminar la instalación, el PC se reinicia automáticamente, y sigue con la configuración automática.

2.3 Seguridad

2.3.1 Cuentas de usuario Como dicho anteriormente no se debería trabajar bajo el usuario root.

Ciertos usuarios, como 'tomcat' se crean sin permiso de iniciar una sesión. Eso permite limitar al máximo los derechos del usuario y evitar el uso malintencionado de esta cuenta.

Se crean cuentas de usuario como sea necesario, dándoles los permisos necesarios.

2.3.2 El comando sudo El comando 'sudo' permite ejecutar un comando como root, y en el caso que su usuario ha sido otorgado el derecho de 'sudo' para este comando, no tendrá que entrar la clave de root. Eso permite otorgar a usuarios 'comunes' derechos sobre comandos que requieren ser ejecutadas como root sin darles la clave de root ni necesitar que se cambien al usuario root.. Es también posible limitar el host desde el cual se permiten ejecutar los comandos.

Ejemplo para dar permiso al usuario alumno de manejar los servicios de Apache, Tomcat, y MySQL sin conocer la clave de root:Ejecutar el comando visudo como root y agregar las líneas siguientes:

Cmnd_Alias WEBORDERS = /usr/sbin/rctomcat7, /usr/sbin/rcapache2, /usr/sbin/rcmysqlalumno ALL = (ALL) NOPASSWD: WEBORDERS

©Copyright Cédric Simon, 2008-2012 Versión 1.2 Reproducción prohibida

Curso de instalación de Linux como servidor web Apache HTTPD con Tomcat, PHP, y MySQL Pagina 9 / 24

2.3.3 Acceso remoto Para acceder de manera remoto al servidor, se puede acceder, entre otros, usando escritorios remoto (VNC), o con ssh (consola remoto).

Para más seguridad, no permita el acceso remoto a su servidor.

2.3.4 Servicios activos Hay que limitar al máximo los servicios instalado y los servicios activos. No solo hace el sistema más seguro, también mejora su rendimiento.

2.3.5 Corta fuego Hay que activar el cortafuego, definir los interfaces debidamente, y limitar al máximo los puertos abiertos.

©Copyright Cédric Simon, 2008-2012 Versión 1.2 Reproducción prohibida

Curso de instalación de Linux como servidor web Apache HTTPD con Tomcat, PHP, y MySQL Pagina 10 / 24

3 El servicio Apache Httpd

3.1 Instalación El servicio httpd de Apache permite hospedar un servidor web.

Se instala fácilmente usando YAST, la herramienta administrativa de openSuSe.

Se inicia YAST (se necesita poner la clave de root), luego se selecciona 'Instalar / desintalar software'.

Verifica que el filtro está puesto en 'Buscar', y busca con la cadena Apache2.

Marca la casilla al lado de 'apache2' en la lista de paquetes. Se seleccionarán automáticamente los paquetes dependientes.

Clic sobre el botón 'Aceptar' para iniciar la instalación, y acepta los cambios automáticos (paquetes dependiente agregados).

3.2 Configuración

3.2.1 Inicio automatico Para que el servicio httpd (Apache 2) se inicia automáticamente, desde YAST, escoge bajo 'Sistema' los 'Servicios del sistema'.

Busca el servicio 'Apache2' y activa lo.

3.2.2 Inicio/reinicio/paro manual Para inicar, reiniciar, o para manualmente el servicio Apache httpd, abre una consola, cambia al usuario root con el comando 'su', y tecla rcapache2 start/restart/stop

3.2.3 Archivos de configuración El principal archivo de configuración de apache es el httpd.conf que se encuentra en /etc/apache/ y que solo el usuario root puede cambiar.

Se definen las principales variables (carpeta por defecto, etc...) y cuales otros archivo se incluyen en la configuración.

Para reducir/dividir el archivo de configuración, una gran parte de la configuración se encuentra en otros archivos que el httpd.conf incluye via clausula 'include', y que se encuentran bajo la misma carpeta o bajo una subcarpeta.

El otro archivo importante es el archivo apache2 que se encuentra bajo /etc/sysconfig/ y que crea parte de los archivos de configuración anteriormente mencionados de manera dinámica.

3.2.4 Configuración con YAST Las principales opciones del servidor Apache2 se pueden también modificar vía un módulo de YAST (servicios de red...Servidor HTTP) si se instaló. Esta herramienta modificará los archivos ante mencionado debidamente.

3.2.4.1 Paso 1/5: Dispositivo de red Define cual(es) tarjeta de red/IP hospedan sitios web, cual puerto se usa, y si se abre el cortafuego para estos puertos.

3.2.4.2 Paso 2/5: módulos Permite activar cierto módulos como el PHP que veremos más adelante.

©Copyright Cédric Simon, 2008-2012 Versión 1.2 Reproducción prohibida

Curso de instalación de Linux como servidor web Apache HTTPD con Tomcat, PHP, y MySQL Pagina 11 / 24

3.2.4.3 Paso 3/5: equipo predeterminado Permite mencionar la configuración 'por defecto' del servidor web

3.2.4.4 Paso 4/5: equipos virtuales En caso que varios sitios están hospedados bajo el mismo servidor, permite configurar los valores para cada sitio.

3.2.4.5 Paso 5/5: resumen Enseña el resumen de configuración del servicio y menciona si se enciende al arrancar el PC o no.

Permite también configurar unas opciones avanzadas del servidor HTTP.

3.3 Prueba del servicio Para probar el servicio, enciende lo, abre un navegador web, y anda en la url: http://localhost/

Le debería de aparecer una página 'Access forbidden', ya que por defecto no hay una página de inicio y no se permite ver el contenido de la carpeta de inicio.

Si anda en la url: http://localhost/gif/l_arrow.gif deberías ver una imagen de una flecha.

Cuidado que bajo Linux las mayúsculas y minúsculas importan!

Si desarrolla bajo Windows, y no respetas las mayúsculas y minúsculas, te va a corren bien en desarrollo, pero una vez migrado bajo Linux, ya no va a encontrar los archivos...

©Copyright Cédric Simon, 2008-2012 Versión 1.2 Reproducción prohibida

Curso de instalación de Linux como servidor web Apache HTTPD con Tomcat, PHP, y MySQL Pagina 12 / 24

4 Servidor PHP

4.1 Instalación El php se instala como un módulo de Apache.

Se instala fácilmente usando YAST, la herramienta administrativa de openSuSe.

Se inicia YAST (se necesita poner la clave de root), luego se selecciona 'Instalar / desintalar software'.

Verifica que el filtro está puesto en 'Buscar', y busca con la cadena php.

Marca la casilla al lado de 'apache2-modphp5' en la lista de paquetes. Se seleccionarán automáticamente los paquetes dependientes (entre los cuales el PHP). Si se va a trabajar con MySQL, se puede marcar también php5-mysql. Si necesitan otros módulos de PHP, marca las casillas según sus necesidades.

Para un servidor de producción, les aconsejo solo instalar los módulos necesarios, quitando todo los módulos inútiles, con el fin de limitar los problemas de seguridad ya que el PHP es una entrada muy común para los hackers.

Clic sobre el botón 'Aceptar' para iniciar la instalación, y acepta los cambios automáticos (paquetes dependiente agregados).

4.2 Configuración El PHP en sí se configura en el archivo php.ini que se encuetra bajo /etc/php5/apache2/

Para que el PHP sea activo en Apache, hay que activar el módulo PHP en apache (ver punto anterior)

4.3 Prueba del servicio Para probar el servicio, primero crea una página PHP sencilla bajo /srv/www/htdocs/

Por ejemplo: index.php<html><head></head><body><?php echo 'Hola Mundo'; ?></body></html>

Luego abre un navegador web, y anda en la url: http://localhost/index.php

Le debería de aparecer una página con 'Hola mundo'.

Si te enseña el código en vez de ''Hola Mundo', es que el módulo PHP no esta activo, o que Apache2 no ha sido reiniciado desde que activaste el PHP.

Cuidado que bajo Linux las mayúsculas y minúsculas importan!

Si desarrolla bajo Windows, y no respetas las mayúsculas y minúsculas, te va a corren bien en desarrollo, pero una vez migrado bajo Linux, ya no va a encontrar los archivos...

©Copyright Cédric Simon, 2008-2012 Versión 1.2 Reproducción prohibida

Curso de instalación de Linux como servidor web Apache HTTPD con Tomcat, PHP, y MySQL Pagina 13 / 24

5 Servidor Apache Tomcat

5.1 Instalación El servicio Tomcat de Apache permite hospedar un servidor web con capacidad de procesar paginas JSP.

Se instala fácilmente usando YAST, la herramienta administrativa de openSuSe.

Se inicia YAST (se necesita poner la clave de root), luego se selecciona 'Instalar / desintalar software'.

Verifica que el filtro está puesto en 'Buscar', y busca con la cadena tomcat.

Marca la casilla al lado de 'tomcat7' y 'apache-mod_jk' en la lista de paquetes. Se seleccionarán automáticamente los paquetes dependientes. Opcionalmente se selecciona 'tomcat7-webapps' para tener el sitio de ejemplo instalado.

Clic sobre el botón 'Aceptar' para iniciar la instalación, y acepta los cambios automáticos (paquetes dependiente agregados).

5.1.1 Si la version deseada no esta en el repositorio De no estar en el repositorio de Linux, se puede descargar desde: http://tomcat.apache.org/download-70.cgi .

Se descarga el archivo .tar.gz (ejemplo: apache-tomcat-7.0.25.tar.gz).

Como root copiamos el archivo comprimido en la carpeta /opt:cp apache-tomcat-7.0.25.tar.gz /opt

Luedo nos movemos a /opt y descomprimimos la carpeta:cd /opttar -xvzf apache-tomcat-7.0.25.tar.gz

Creamos el grupo y el usuario tomcat, y lo hacemos dueno de la carpeta de tomcat.groupadd tomcatuseradd -gtomcat tomcatchown -R tomcat:tomcat /opt/apache-tomcat-7.0.25

Creamos el servicio para tomcat, y agregamos unos enlaces simbolicos necesarios para el script, y otros para comodidad:cd /ln -s /opt/apache-tomcat-7.0.25 tomcatcd /usr/shareln -s /opt/apache-tomcat-7.0.25 tomcat

cd /media/cdromcp tomcat7 /etc/init.d/tomcat7cp j2ee /etc/sysconfig/j2ee

chmod 755 /etc/init.d/tomcat7chmod 755 /etc/sysconfig/j2ee

cd /usr/bin ln -s /etc/init.d/tomcat7 rctomcat7

rctomcat7 startrctomcat7 status

En caso de error al iniciar: revisar los logs debajo de /tomcat/log

©Copyright Cédric Simon, 2008-2012 Versión 1.2 Reproducción prohibida

Curso de instalación de Linux como servidor web Apache HTTPD con Tomcat, PHP, y MySQL Pagina 14 / 24

5.2 Configuración

5.2.1 Inicio automático Para que el servicio tomcat7 se inicia automáticamente, desde YAST, escoge bajo 'Sistema' los 'Servicios del sistema'.

Busca el servicio 'tomcat7' y activa lo.

5.2.2 Inicio/reinicio/paro manual Para inicar, reiniciar, o para manualmente el servicio tomcat7, abre una consola, cambia al usuario root con el comando 'su', y tecla rctomcat7 start/restart/stop

Oops, no les funciona. Debido a un error de paquete, no crearon el enlace para reiniciar fácilmente Tomcat.

Lo creamos así: cambiarse a root (su), luego:cd /usr/sbinln -s /etc/init.d/tomcat7 tomcat7

Luego con tomcat7 start/restart/stop podrá iniciar/reiniciar/para Tomcat.

Normalmente se debería de ser ln -s /etc/init.d/tomcat7 rctomcat7ya que en openSuse los comandos de reinicio de servicio inician con rc...

5.2.3 Archivos de configuración El principal archivo de configuración de tomcat es server.xml que se encuentra en /usr/shared/tomcat/conf y que solo el usuario root puede cambiar.

Los otros archivos de configuración se encuentran bajo la misma carpeta conf.

El archivo server.xml tiene varias secciones. Las más importantes son:

5.2.3.1 Conectores Para poder usar Tomcat detrás de Apache, se necesita que el conector AJP sea activado (lo es por defecto). El uso por defecto el puerto 8009.

5.2.3.2 Sitios web (hosts) Cada sitio web que usará Tomcat debe tener su propio host. Es muy importante que el sitio web definido en Apache corresponde con el Host definido en Tomcat.

5.2.3.3 Contextos Los contextos son las subcarpetas de cada host. Se puede definir configuraciones por cada subcarpeta si necesario.

Aquí se pueden por ejemplo definir una conexión a la base de datos, para no tener que mencionar estos detalles a nivel del código Java, pero que agare los detalles del servidor, lo que permite migrar de un servidor al otro estando seguro que usará la base de datos correcta.

Para más información, ver la documentación de Tomcat y de su driver JDBC.

Ejemplo:

<Context path="/OpenFlashChart" reloadable="true" docBase="/home/cedric/workspace/OpenFlashChart" workDir="/home/cedric/workspace/OpenFlashChart/work"/>

<Context path="/relih" reloadable="true" docBase="/home/cedric/workspace/relih" workDir="/home/cedric/workspace/relih/work">

<!-- Extra info begin --><Resource name="jdbc/RelihMySQL" auth="Container"

©Copyright Cédric Simon, 2008-2012 Versión 1.2 Reproducción prohibida

Curso de instalación de Linux como servidor web Apache HTTPD con Tomcat, PHP, y MySQL Pagina 15 / 24

type="javax.sql.DataSource" maxActive="30" maxIdle="3" maxWait="5000" removeAbandoned="true" removeAbandonedTimeout="15" logAbandoned="true" validationQuery="SELECT 1" testOnBorrow="true" testWhileIdle="true" timeBetweenEvictionRunsMillis="5000" minEvictableIdleTimeMillis="30000" username="relih" password="SolJava" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/relih?autoReconnect=true"/><!-- Extra info end -->

<Logger className="org.apache.catalina.logger.SystemOutLogger" verbosity="4" timestamp="true"/></Context>

<Context path="/vida" reloadable="true" docBase="/home/cedric/workspace/vida" workDir="/home/cedric/workspace/vida/work"><!-- Extra info begin -->

<!-- Extra info begin --><Resource name="jdbc/VidaMySQL" auth="Container" type="javax.sql.DataSource" maxActive="30" maxIdle="3" maxWait="5000" removeAbandoned="true" removeAbandonedTimeout="15" logAbandoned="true" validationQuery="SELECT 1" testOnBorrow="true" testWhileIdle="true" timeBetweenEvictionRunsMillis="5000" minEvictableIdleTimeMillis="30000" username="vida" password="SolJava" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/vidaautoReconnect=true"/><!-- Extra info end -->

</Context>

5.2.4 Carpeta ROOT Si instalaste la opción 'tomcat7-webapps' se ha creado debajo de /usr/shared/tomcat7/webapps una carpeta ROOT.

Mientras no la borra, la raiz del sitio por defecto (localhost) será la página de inicio que está bajo esta carpeta ROOT. Hay que borrarla para poder definir otro sitio en la raiz.

5.2.5 Configuración con YAST Pues, lo siento pero no existe todavía. Pero ya sabes, es un proyecto abierto, así lo lo podes desarrollar y regalar a la comunidad ;-)

5.3 Prueba del servicio Para probar el servicio, enciende el servicio y abre un navegador web, y anda en la url: http://localhost:8080

©Copyright Cédric Simon, 2008-2012 Versión 1.2 Reproducción prohibida

Curso de instalación de Linux como servidor web Apache HTTPD con Tomcat, PHP, y MySQL Pagina 16 / 24

Le debería de aparecer una página sobre Apache Tomcat si instalaste 'tomcat7-webapps', o una página de 'Error 404' de Tomcat en otro caso.

Cuidado que bajo Linux las mayúsculas y minúsculas importan!

Si desarrolla bajo Windows, y no respetas las mayúsculas y minúsculas, te va a corren bien en desarrollo, pero una vez migrado bajo Linux, ya no va a encontrar los archivos...

5.4 Puesto al día de sitios web Una manera muy fácil de desplegar y poner al día sitios web es usar un archivo .war y copiarlo debajo de la carpeta webapps. El se desplegará solo en una subcarpeta con el nombre del archivo, poniendo lo al día si necesario.

5.5 Tomcat detrás de Apache Para que Tomcat funciona detrás de Apache, Apache debe tener encendido y configurado el módulo mod_jk.

La configuración de mod_jk se encuentra en 3 lugares:

5.5.1 En httpd.conf o uno de sus archivos incluidos Se debe definir el módulo mod_jk<IfModule !mod_jk.c> LoadModule jk_module "/usr/lib/apache2/mod_jk.so"</IfModule>

JkWorkersFile "/tomcat/conf/workers.properties"JkLogFile "/tomcat/logs/mod_jk.log"

JkLogLevel info

Verifica los caminos de carpetas mencionados arriba para que coinciden con tu instalación.

5.5.2 A nivel de los 'equipos' de Apache2 Definir la conexión a nivel del equipo (virtual host)

<VirtualHost 192.168.0.250:80> ServerName clinsis ServerAdmin [email protected] DocumentRoot /srv/www/htdocs JkMount /* con1 JkUnMount /svn/*.* con1</VirtualHost>

La configuración arriba manda a Tomcat todos los archivos debajo de la raíz (/) del sitio clinsis (192.168.0.250:80) exceptúo cuando se tarta de un archivo debajo de la subcarpeta /imagenes del mismo sitio, en cual caso la busca debajo de la carpeta por defect del sitio (DocumentRoot).

con1 se refiere al nombre usado en el archivo workers.properties

5.5.3 Nuevo archivo workers.properties # workers.properties -## This file provides jk derived plugins with the needed information to# connect to the different tomcat workers. Note that the distributed# version of this file requires modification before it is usable by a# plugin.

worker.list=con1, con2

©Copyright Cédric Simon, 2008-2012 Versión 1.2 Reproducción prohibida

Curso de instalación de Linux como servidor web Apache HTTPD con Tomcat, PHP, y MySQL Pagina 17 / 24

worker.con1.port=8009worker.con1.host=localhostworker.con1.type=ajp13

worker.con2.port=8009worker.con2.host=127.0.0.1worker.con2.type=ajp13

Otros:

Catalina.sh: Linea 146

# Set juli LogManager if it is presentif [ -r "$CATALINA_HOME"/bin/tomcat-juli.jar ]; then JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=ISO8859_1 -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file="$CATALINA_BASE"/conf/logging.properties"fi

Yast.. System... sysconfig

LC_LANG = es@EURO (problemas de colation)

©Copyright Cédric Simon, 2008-2012 Versión 1.2 Reproducción prohibida

Curso de instalación de Linux como servidor web Apache HTTPD con Tomcat, PHP, y MySQL Pagina 18 / 24

6 Hospedar varios sitios en un mismo servidor web

6.1 Introducción Es posible de hospedar varios sitios web bajo un mismo servidor. Es también posible de hospedar a la vez sitios PHP y sitio Java en el mismo servidor.

6.2 Configuración del servidor Lo más cómodo es crear tantas IP en la tarjeta como sitios web a hospedar. Eso permite verificar la configuración si depender del DNS.

Para configurar varios IP en un tarjeta, abre YAST, y en el menú de 'dispositivos de red', escoge 'Ajustes de la red'.

Selecciona la tarjeta de red que recibirá las conexiones de Internet, edita la y añade tantos IP con su alias como necesario.

6.3 Configuración de Apache En Apache, se crea un 'equipo' (virtual host) para cada sitio.

Por defecto, si el PHP está instalado en el servidor, está activo en todos los sitios.

Para Tomcat, hay que configurar el conector Apache (mod_jk.conf) para cada sitio debidamente.

©Copyright Cédric Simon, 2008-2012 Versión 1.2 Reproducción prohibida

Curso de instalación de Linux como servidor web Apache HTTPD con Tomcat, PHP, y MySQL Pagina 19 / 24

7 Cifrar con SSL y uso de HTTPS

7.1 Porque cifrar Cuando su sitio contiene datos sensibles, o usa restricción de acceso, cifrar la transmisión disminuye el riesgo de que alguien intercepta y pueda entender el contenido de la transmisión (usuario y clave, contenido,...)

El cifrado usa un poco mas de recursos al nivel del servidor y al nivel del cliente, y también aumenta un poco el tamaño de las transmisiones, pero en un nivel razonable.

Para poder cifrar, se necesita emitir un certificado. Los certificados SSL pueden ser auto firmado (uso interno o sin necesidad de grande garantía de seguridad) o firmado por una autoridad certificadora (de 20 a 1,000 US$, dependiendo del tipo de certificado y la autoridad certificadora).

La creación de certificados auto firmados depende del sistema operativo.

Los certificados deben estar disponible en el servidor.

Los certificados se pueden generar con el comando gensslcert. Para mas informacion teclear gensslcert -h

Ejemplo de uso de gensslcert:gensslcert -C localhost -N "Prueba del curso de Linux" -c NI -s Nicaragua -l Managua -o INATEC -u "Informatica INATEC" -n localhost -e [email protected] -y 9999 -Y 9999

El comando gensslcert almacena los certificados debajo de /etc/apache2/ssl.xxx/common_name.server.xxx donde xxx es el tipo de archivo (clave, certificado,...) y common_name el parametro -C usado en el comando.

Es importante que el campo COMMON NAME corresponde con el URL del sitio web.

Tomcat se puede configurar para trabajar con SSL directamente, pero aquí vamos a ver la configuracion de Apache con SSL, ya que Apache es el principal servidor web y puede comunicar con Tomcat.

Al nivel de Apache, hay que instalar y configurar el modulo SSL, y iniciar Apache con la opción SSL. En openSuse se configura en /etc/sysconfig/apache2

7.2 Archivo .conf del virtual host Revisarlo y modificar al menos las lineas siguientes:<VirtualHost *:443>#Adjuntar modificaciones de virtual host normal (ver arriba, depende de la versión)...SSLEngine on…# Depende de a donde guarda sus certificadosSSLCertificateFile /etc/apache2/ssl.crt/server.crt SSLCertificateKeyFile /etc/apache2/ssl.key/server.key ...</VirtualHost>

©Copyright Cédric Simon, 2008-2012 Versión 1.2 Reproducción prohibida

Curso de instalación de Linux como servidor web Apache HTTPD con Tomcat, PHP, y MySQL Pagina 20 / 24

8 Servidor MySQL

8.1 Instalación MySQL se instala fácilmente usando YAST, la herramienta administrativa de openSuSe.

Se inicia YAST (se necesita poner la clave de root), luego se selecciona 'Instalar / desintalar software'.

Verifica que el filtro está puesto en 'Buscar', y busca con la cadena mysql.

Marca la casilla al lado de 'mysql' en la lista de paquetes. Se seleccionarán automáticamente los paquetes dependientes. Opcionalmente se selecciona 'php-mysql' si van a conectar MySQL con PHP, y herramientas cono MySQL Administrator o MySQL Query.

Clic sobre el botón 'Aceptar' para iniciar la instalación, y acepta los cambios automáticos (paquetes dependiente agregados).

8.2 Configuración

8.2.1 Inicio automatico Para que el servicio mysql se inicia automáticamente, desde YAST, escoge bajo 'Sistema' los 'Servicios del sistema'.

Busca el servicio 'mysql' y activa lo.

8.2.2 Inicio/reinicio/paro manual Para inicar, reiniciar, o para manualmente el servicio tomcat7, abre una consola, cambia al usuario root con el comando 'su', y tecla rctmysql start/restart/stop

8.2.3 Clave de root El usuario root de MySQl es el usuario todopoderoso. Por defecto la clave es vacía.

Para crear la clave de root, ejecuta /usr/bin/mysqladmin -uroot password 'new password'

Por defecto el usuario root solo se puede conectar desde el servidor (en local).

©Copyright Cédric Simon, 2008-2012 Versión 1.2 Reproducción prohibida

Curso de instalación de Linux como servidor web Apache HTTPD con Tomcat, PHP, y MySQL Pagina 21 / 24

9 Servidor PostGreSQL

9.1 Instalación PostGreSQL se instala fácilmente usando YAST.

9.2 Crear una base de datos Para crear una nueva base de datos, se ejecuta el comando createdb mi_nombre_de_bd desde el usuario postgres.

9.3 Conectar a una base de datos

Se conecta con el comando psql

9.4 Crear un usuario Para crear una nueva base de datos, se ejecuta el comando createuser mi_nombre_de_usuario desde el usuario postgres. Se elimina con dropuser mi_nombre_de_usuario

©Copyright Cédric Simon, 2008-2012 Versión 1.2 Reproducción prohibida

Curso de instalación de Linux como servidor web Apache HTTPD con Tomcat, PHP, y MySQL Pagina 22 / 24

10 Mantenimiento del servidor Linux

10.1 Disco Hay que revisar regularmente el espacio libre en el servidor para evitar de quedar sin espacio, lo que producerá errores en el servidor.

10.2 Logs Los logs se encuentran generalmente debajo de /var/log, y para Tomcat debajo de /usr/shared/tomcat7/logs

Hay que revisar regularmente los logs para detectar anomalías. A nivel de seguridad también se debería de revisar los logs en busca de intentos de intrusión.

10.3 Puesto al día de paquetes OpenSuSe tiene la opción de puesto al día automática. Para un servidor de producción, no les aconsejo ponerlo automático, si no manualmente poner al día regularmente los componentes, después de haber probado la nueva versión en otro ambiente.

10.4 Prueba de seguridad Para probar la seguridad del servidor/de la red, existen muchas herramientas.

Una herramienta muy común y open source es NMAP. Está disponible en http://nmap.org

Otra posibilidad, para una prueba básica es el uso de sitio de pruebas de seguridad en línea, como www.auditmypc.com

Pero existen muchas otras amenazas no directamente relacionadas con el servidor, como el uso de sniffers, password crackers, ip spoofing....

Existen muchos sitios relacionados a la seguridad en Intenret. La mayoría está en inglés.

Unos sitios interesantes: – http://www.yolinux.com/TUTORIALS/LinuxSecurityTools.html – http://www.nessus.org/nessus/ – http://seclists.org/ – http://www.auditmypc.com/

Lo más importante a nivel de seguridad es solo dejar abiertos los puertos realmente necesarios, y correr los servicios usando estos puertos con usuarios con el mínimo de derechos posible.

Para mantener una red realmente segura, se necesita recursos humanos dedicados a la seguridad, que revisarán los logs relacionados con la seguridad, verificaron que los parches relacionados a la seguridad se implementan, y se mantendrán al día con las materias de seguridad que evoluciona de día en día.

©Copyright Cédric Simon, 2008-2012 Versión 1.2 Reproducción prohibida

Curso de instalación de Linux como servidor web Apache HTTPD con Tomcat, PHP, y MySQL Pagina 23 / 24

11 Servidor SubversionEste capítulo es una versión adaptada del blog de UbuntuLife : http://ubuntulife.wordpress.com/2007/05/29/instalar-un-servidor-de-subversion-en-ubuntu/

11.1 ¿Qué es subversion? Subversion es un servidor de control de versiones. Si estas trabajando en un proyecto grande, es lógico que con el paso del tiempo vayas haciendo cambios mas o menos importantes. Puede que en un momento dado quieras volver a una versión previa de un archivo, o de todo el proyecto, que desees ver quién hizo un cambio y porqué… para eso está subversion.

11.2 Instalación y configuración de Subversion Se supone que tenemos configurado un servidor Apache.

Con YAST instalamos subversion.

Hay que agregar los modulos dav y dav_svn a apache. Para comprobar que los tenemos:

a2enmod dava2enmod dav_svn

groupadd svnuseradd -m -d /srv/svn/ -gsvn svnsu – svnmkdir reposexitrcsvnserve startrcsvnserver status

11.3 Creación de grupos y usuarios permitidos Creamos un grupo subversion para manejar fácilmente los permisos

groupadd subversion

Añadimos a dicho grupo los usuarios que queremos que usen de algún modo nuestro servidor

usermod -a -Gsubversion user1usermod -a -Gsubversion user2usermod -a -Gsubversion user3

Ahora pasamos a crear los ficheros de acceso, que guardan los nombres y contraseñas de esos usuarios que harán uso del repositorio:

htpasswd2 -c /etc/apache2/dav_svn.passwd user1htpasswd2 /etc/apache2/dav_svn.passwd user2htpasswd2 /etc/apache2/dav_svn.passwd user3

El primero lleva -c por la simple razón de que crea el fichero. Los demás se añaden a él.Cada vez que introduzcamos un usuario, se nos pedirá su nueva contraseña.

11.4 Creación de un repositorio Ahora creamos la carpeta donde ubicaremos el repositorio:

mkdir /home/svnsvnadmin create /home/svn

Y le damos los correspondientes permisos

chown -R wwwrun:svn /home/svn/chmod -R 770 /home/svn/

©Copyright Cédric Simon, 2008-2012 Versión 1.2 Reproducción prohibida

Curso de instalación de Linux como servidor web Apache HTTPD con Tomcat, PHP, y MySQL Pagina 24 / 24

11.5 Configurando Apache para los repositorios Pasamos a configurar el fichero que gestiona el módulo de apache para el svn:vi /etc/apache2/conf.d/subversion.conf

Dentro ponemos esta configuración:### SVN#<Location /svn>DAV svnSVNPath /home/svnAuthType BasicAuthName "Repositorio Subversion del proyecto"AuthUserFile /etc/apache2/dav_svn.passwd<LimitExcept GET PROPFIND OPTIONS REPORT>Require valid-user</LimitExcept></Location>

Si queremos quitar el modo lectura a cualquiera, porque nuestro proyecto sea confidencial o no queramos que sea visto desde fuera, basta reemplazar la sección:

<LimitExcept GET PROPFIND OPTIONS REPORT>Require valid-user</LimitExcept>

por

Require valid-user

Reiniciamos el servicio de apache para que nos rearranque con los cambios introducidos.

rcapache2 restart

11.6 A ñadir usuarios a nuestros repositorios: Se agrgea un usuario mediante el comando siguiente: htpasswd2 /etc/apache2/dav_svn.passwd otro_usuario

©Copyright Cédric Simon, 2008-2012 Versión 1.2 Reproducción prohibida